Порядок действий для синхронизации баз с нуля и восстановления репликации
на мастере:
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;