Настройка реплики MySQL с помощью mysqldump

Действия на источнике

При небольшом объёме базы данных для настройки реплики можно воспользоваться утилитой mysqldump, сняв резервную копию интересующей базы данных с сервера-источника:

$ mysqldump -uroot -p --single-transaction --master-data --databases db01 db02 > dump.sql

Для снятия максимально согласованной и полной резервной копии с сервера-источника можно воспользоваться командой следующего вида:

$ mysqldump -uroot -p --single-transaction --routines --triggers --events --master-data --all-databases > dumpfile.sql

Действия на реплике

Если нужно восстановить уже существующую реплику, то предварительно может понадобиться сохранить права доступа на существующей реплике при помощи команды следующего вида:

$ pt-show-grants > grants.sql

Перед заливкой данных в работающую реплику может понадобиться остановить репликацию, даже если она уже находится в неисправном состоянии. Сделать это можно следующим образом:

STOP SLAVE;

Затем можно восстановить резервную копию на сервере, который станет репликой:

$ mysql < dump.sql

Внутри файла резервной копии будет отмечено имя журнала и позиция, с которой можно будет продолжить репликацию:

CHANGE MASTER TO MASTER_LOG_FILE='node-1.005814', MASTER_LOG_POS=16159;

Увидеть эти значения можно в строках Master_Log_File и Exec_Master_Log_Pos в выводе следующей команды:

SHOW SLAVE STATUS\G

Перед запуском репликации нужно указать дополнительно сервер-источник и учётные данные пользователя для подключения, а имя журнала и позицию взять из вывода предыдущей команды. Для настройки источника репликации воспользуемся командой вида:

CHANGE MASTER TO MASTER_HOST = '192.168.0.101',
                 MASTER_USER = 'repl',
                 MASTER_PASSWORD = 'xxxxxxxxxx',
                 MASTER_LOG_FILE = 'node-1.005814',
                 MASTER_LOG_POS = 16159;

После чего можно запустить репликацию:

START SLAVE;