Master-Slave репликация в MySQL

< Назад
Содержание

Это самый простейший случай масштабирования: один ведущий сервер и один ведомый.
В этом случае все обновления пишутся на ведущий (master) и реплицируются (копируются) на ведомый (slave).
Репликация в mysql работает следующим образом: ведущий записывает все изменения базы в двоичный лог-файл, а ведомый подключаясь к ведущему, выгружает этот самый лог и затем выполняет его.


Считаем, что в данном случае адрес мастера 10.10.0.1, а адрес слэйва 10.10.10.2

Настройка репликации в общем случае состоит из нескольких этапов:

Включение двоичного лога на мастере 

log_bin                         = /var/log/mysql/mysql-bin.log
relay-log                       = /var/log/mysql/relay.log
expire_logs_days                = 5
max_binlog_size                 = 100M
binlog_ignore_db                = information_schema 

Эти строки нужно внести в my.cnf.

На ведомом это не обязательно, но весьма желательно, поскольку не исключена ситуация, что он станет ведущим. Кроме того, двоичные логи могут пригодиться для восстановления данных.


Создание пользователя на мастере для подключения слейва

Это просто:

GRANT REPLICATION CLIENT ON *.* TO repl@"%" IDENTIFIED BY '';


Назначение уникальных server-id

Это обязательный шаг. У всех связанных серверов должны быть уникальные идентификаторы
 

Установка переменных MASTER_* на слейве


Нужно установить параметры подключения к мастеру на слейве:

CHANGE MASTER TO MASTER_HOST='10.10.0.1', MASTER_USER='repl', MASTER_PASSWORD='password';


 Первичная синхронизация данных

 Самый простой способ — сделать дамп с параметром —master-data, тогда в него будет включена информация об имени файла лога и позиции в нем. Но для обеспечения целостности данных необходимо заблокировать все таблицы:
 

FLUSH TABLES WITH READ LOCK;

И не закрывая консоли:

mysqldump --all-databases --single-transaction --master-data > mysql.sql

По завершению дампа нужно разблокировать таблицы:

UNLOCK TABLES;


Либо просто выйти из консоли. 
Далее этот файл нужно перенести на слейв и загрузить его в базу

mysql -u root -p < mysql.sql


Запуск и мониторинг репликации

Репликация запускается запросом

SLAVE START;


Ее состояние можно посмотреть запросом

SHOW SLAVE STATUS\G
Авторизация
*
*

двенадцать − десять =

Регистрация
*
*
*

20 − семь =

Генерация пароля

девятнадцать + пятнадцать =