mysql replicate

Master-slave реплікація MySQL – це метод реплікації даних, який дозволяє створити копію (slave) бази даних MySQL на основі оригінальної бази даних (master). Цей метод реплікації дозволяє вам розподілити навантаження між серверами баз даних, забезпечити вищу доступність та створити резервні копії даних.

Основні концепції та кроки для налаштування master-slave реплікації MySQL виглядають наступним чином:

  1. Налаштування Master-сервера:
    • Встановіть MySQL на сервері, який ви бажаєте використовувати як master.
    • Вкажіть конфігураційний файл MySQL (my.cnf або my.ini) для активації режиму реплікації та визначте параметри реплікації, такі як server-id та log-bin.
    • Створіть користувача з необхідними дозволами для реплікації.
  2. Зробіть резервну копію даних: Переконайтеся, що дані на master-сервері відображають поточний стан бази даних.
  3. Запустіть реплікацію на Master-сервері: Використовуючи команду CHANGE MASTER TO, вказуйте інформацію про slave-сервер (IP-адресу, порт, користувача та пароль), на який будуть реплікуватися дані.
  4. Стартуйте реплікацію на Slave-сервері:
    • Встановіть MySQL на сервері, який ви бажаєте використовувати як slave.
    • Вкажіть конфігураційний файл MySQL з параметрами для реплікації (server-id, relay-log, log-bin, тощо).
    • Запустіть процес реплікації на slave-сервері.
  5. Перевірка реплікації:
    • Переконайтеся, що процес реплікації запустився і нормально працює.
    • Можна використовувати команди, такі як SHOW SLAVE STATUS, для перевірки статусу реплікації.

Після успішної налаштування master-slave реплікації, всі зміни, які вносяться на master-сервері, автоматично реплікуються на slave-сервер, забезпечуючи резервне копіювання даних та підвищену доступність. Цей підхід особливо корисний для навантаження зчитування та створення резервних копій.

В роботі 2 сервери

172.10.10.2 – master

172.10.10.3 – slave

в конфігурації мастера

 server-id=1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = basename
/etc/init.d/mysql restart
service mysqld restart

створення користувача з правами реплыкації на мастері, блокуємо базу на час відновлення на слейві

GRANT REPLICATION SLAVE ON *.* TO 'userreplic'@'%' IDENTIFIED BY 'passwd';
FLUSH PRIVILEGES;
USE basename;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

При виводі значень статусу зберігаємо собі значення таблиць File,Position

mysql> SHOW MASTER STATUS;
+------------------+----------+----------------------------+------------------+
| File                              | Position         | Binlog_Do_DB               | Binlog_Ignore_DB |
+------------------+----------+----------------------------+------------------+
| mysql-bin.000099 | 106 | basename |                  |
+------------------+----------+----------------------------+------------------+
1 row in set (0.00 sec)

після завантаження дампу на слейв налаштовуємо конфігаційний файл mysql

server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = basename

заскаємо реплікацію на слейві log bin відповідно до запису mysql-bin.000099 та позиція 106

CHANGE MASTER TO MASTER_HOST='172.10.10.2', MASTER_USER='userreplic', MASTER_PASSWORD='passwd', MASTER_LOG_FILE = 'mysql-bin.000099', MASTER_LOG_POS = 106;

розблоковуємо базу на мастері

UNLOCK TABLES;

No comment

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *