Master-slave реплікація MySQL – це метод реплікації даних, який дозволяє створити копію (slave) бази даних MySQL на основі оригінальної бази даних (master). Цей метод реплікації дозволяє вам розподілити навантаження між серверами баз даних, забезпечити вищу доступність та створити резервні копії даних.
Основні концепції та кроки для налаштування master-slave реплікації MySQL виглядають наступним чином:
- Налаштування Master-сервера:
- Встановіть MySQL на сервері, який ви бажаєте використовувати як master.
- Вкажіть конфігураційний файл MySQL (
my.cnf
абоmy.ini
) для активації режиму реплікації та визначте параметри реплікації, такі якserver-id
таlog-bin
. - Створіть користувача з необхідними дозволами для реплікації.
- Зробіть резервну копію даних: Переконайтеся, що дані на master-сервері відображають поточний стан бази даних.
- Запустіть реплікацію на Master-сервері: Використовуючи команду
CHANGE MASTER TO
, вказуйте інформацію про slave-сервер (IP-адресу, порт, користувача та пароль), на який будуть реплікуватися дані. - Стартуйте реплікацію на Slave-сервері:
- Встановіть MySQL на сервері, який ви бажаєте використовувати як slave.
- Вкажіть конфігураційний файл MySQL з параметрами для реплікації (
server-id
,relay-log
,log-bin
, тощо). - Запустіть процес реплікації на slave-сервері.
- Перевірка реплікації:
- Переконайтеся, що процес реплікації запустився і нормально працює.
- Можна використовувати команди, такі як
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