Перезапуск MySQL репликации
В это статье «Перезапуск MySQL репликации» пойдет реч о том как можно перезапустить MySQL с репликацией и так же я расскажу как можно пересинхронизировать все данные между серверами.
Cбросить (Re-Sync) MySQL репликации (Master-Slave).
Иногда, MySQL репликации создают проблемы и slave не может синхронизировать данные от мастера.
Внимание: После того, как воспользуетесь данной статьей, все ваши bin-log файлы будут удалены, поэтому если вы хотите, вы можете сделать резервную копию этих всех файлов.
На Slave сервере:
Сначала нам нужно остановить lave на slave сервере. Подключитесь на сервер MySQL и выполнить следующую команду:
mysql> STOP SLAVE;
На Master сервере:
После остановки slave, перейдите к master серверу. На нем необходимо сбросить master состояния, используя следующую команду:
mysql> RESET MASTER; mysql> FLUSH TABLES WITH READ LOCK;
Больше о ЛОКАХ: http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html
Создаем дамп базы данных:
# mysqldump -u root -p your_data_base > /home/captain/mysqldump-your_data_base.sql
После того как создали резервную копию БД, разблокируйтеь таблицы на master сервере:
mysql> UNLOCK TABLES;
На Slave сервере:
Восстанавливаем резервные копи баз данных на slave сервере, используя следующую команду:
# mysql -u root -p your_data_base < /home/captain/mysqldump-your_data_base.sql
Входим в MySQL и выполнить следующие команды для сброса slave состояний:
mysql> RESET SLAVE; mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1;
После сброса состояний на slave сервере, запускаем slave репликацию:
mysql> START SLAVE;
Теперь ваша репликация была повторно синхронизирована. Можно проверить состояние с помощью следующей команды:
mysql> SHOW SLAVE STATUS\G
Команда для восстановления репликации в одну строку:
# (echo "STOP SLAVE;" && mysqldump --single-transaction --master-data -A && echo "START SLAVE;") | ssh -C YOUR_SSH_USER@YOUR_SERVER_or_IP sudo mysql
- YOUR_SSH_USER- Пользователь к удаленному серверу ( по SSH).
- YOUR_SERVER_or_IP- ИП адрес удаленного сервера ( по SSH).
Полезные команды
На мастере, вы можете проверить состояние подключенных slave с помощью команды «SHOW PROCESSLIST» и посмотреть список запущенных процессов. Slave соединения имеют Binlog дамп в поле «Command»:
mysql> SHOW PROCESSLIST \G;
Для slaves, которые были запущены с опцией «—report-host» и подключенных к master серверу, команда «SHOW SLAVE HOSTS» на master-е покажет основную информацию о слейвах:
mysql> SHOW SLAVE HOSTS;
Cбросить (Re-Sync) MySQL репликации (Master-Master).
Пока не было нужды)
А на этом у меня все, тема «Перезапуск MySQL репликации» завершена.
Спасибо большое! Очень помогли быстро понять как правильно перезапустить эту связку, с учетом того, что я ранее не работал с этим.