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

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

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

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

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 <em>.</em> TO repl@"%" IDENTIFIED BY '';

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

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

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

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

> CHANGE MASTER TO MASTER_HOST='4.4.4.4', 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

Авторизация
*
*

2 × 1 =

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

четырнадцать + 8 =

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

1 × 4 =