Настройка реплики 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;