Синхронизация MySQL баз после ошибки репликации


Порядок действий для синхронизации баз с нуля и восстановления репликации

на мастере:

mysql-master> STOP SLAVE;
mysql-master> RESET MASTER;
mysql-master> FLUSH TABLES WITH READ LOCK;
mysql-master> SHOW MASTER STATUS;
+------------------+-----------+--------------+------------------+
| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000042 | 108243662 |              |                  |
+------------------+-----------+--------------+------------------+

Сохраните значение File и Position в выводе последней команды

Первая команда нужна только в случае мастер-мастер репликации.
Вторая и третья команды сотрут все журналы мастера, предназначенные для слейвов и переведут все
таблицы в режим только чтения, чтобы во время переноса дампа не появилось никаких новых данных.
Далее, не закрывая соединения с мастер базой (т.к. это снимет режим только чтения), делаем дамп всех
необходимых данных:

# mysqldump -uroot -p --all-database > ./mysqldump.sql

Теперь можно снять режим чтения командой

mysql-master> UNLOCK TABLES;

Следующий шаг — скопировать дамп на слейв сервер и выполнить

на слэйве:

mysql-slave> STOP SLAVE;

Импортируем загруженный с мастер сервера дамп:

# mysql -p < mysqldump.sql

 

mysql-slave> RESET SLAVE;
mysql-slave> CHANGE MASTER TO MASTER_LOG_FILE = [записанный ранее File],MASTER_LOG_POS =[записанный ранее Position];
mysql-slave> START SLAVE;
mysql-slave> SHOW SLAVE STATUS;

Проверяем, что параметры Slave_IO_Running и Slave_SQL_Running установлены в Yes.

При мастер-мастер репликация, продолжаем на слейв сервере:

mysql-slave> STOP SLAVE;
mysql-slave> FLUSH TABLES WITH READ LOCK;
mysql-slave> RESET MASTER;
mysql-slave> SHOW MASTER STATUS;
+------------------+-----------+--------------+------------------+
| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000042 | 108248162 |              |                  |
+------------------+-----------+--------------+------------------+

Снова сохраняем File и Position и

При мастер-мастер реплекации продолжаем на мастере:

mysql-master> CHANGE MASTER TO MASTER_LOG_FILE=[записанный File],MASTER_LOG_POS=[записанный Position];
mysql-master> START SLAVE;
mysql-master> SHOW SLAVE STATUS \G;

Проверяем, что параметры Slave_IO_Running и Slave_SQL_Running установлены в Yes.

На слейве снимаем LOCK и запускаем репликацию:

mysql-slave> UNLOCK TABLES;
mysql-slave> START SLAVE;

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *