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

Пример восстановления данных на ecss2 на основе ecss1:

ecss1-mysql> STOP SLAVE;
ecss1-mysql> RESET MASTER;
ecss1-mysql> FLUSH TABLES WITH READ LOCK;
ecss1-mysql> SHOW MASTER STATUS; # запомнить параметры File, Position (<FILE>, <POS>)

Не закрывая соединения с мастер-базой, следует сделать дамп необходимых данных. При закрытии соединения отключится режим чтения.

ecss1-shell> mysqldump --verbose --single-transaction --quote-names --complete-insert --extended-insert --routines --events --triggers -uroot -proot --opt --databases ecss_audit ecss_address_book  ecss_calls_db ecss_statistics ecss_subscribers history_db web_conf > ecss1.mysql.dump

Снять режим чтения командой:

ecss1-mysql> UNLOCK TABLES;

Скопировать файл ecss1.mysql.dump на ecss2. После этого зайти в mysql ecss2 и выполнить команду:

sudo mysql-ecss2> STOP SLAVE;

Далее в shell ecss2 выполнить команду (может выполняться длительное время):

sudo mysql -uroot -p < ecss1.mysql.dump

Далее на слейве удалить все журналы от мастера и начать репликацию с момента, когда на мастере был сделан дамп:

mysql-ecss2> RESET SLAVE;
mysql-ecss2> CHANGE MASTER TO MASTER_LOG_FILE='<FILE>', MASTER_LOG_POS=<POS>;
mysql-ecss2> START SLAVE;
mysql-ecss2> SHOW SLAVE STATUS \G;

Убедиться в том, что параметры Slave_IO_Running и Slave_SQL_Running установлены в значение Yes. Далее в mysql ecss2 выполнить:

Если после RESET SLAVE выдается ошибка, что relay-файл не найден, необходимо удалить все relay-файлы на этом хосте (sudo rm /var/lib/mysql/slave-mysql-relay-bin.*). Затем повторить RESET SLAVE.

Продолжаем на SLAVE:

mysql-ecss2> STOP SLAVE;
mysql-ecss2> FLUSH TABLES WITH READ LOCK;
mysql-ecss2> RESET MASTER;
mysql-ecss2> SHOW MASTER STATUS;

Запомнить FILE и POSITION, в mysql ecss1 выполнить:

mysql-ecss1> CHANGE MASTER TO MASTER_LOG_FILE='<FILE>', MASTER_LOG_POS=<POS>;
mysql-ecss1> START SLAVE;
mysql-ecss1> SHOW SLAVE STATUS \G;

Убедиться в том, что параметры Slave_IO_Running и Slave_SQL_Running имеют значение Yes. Снять LOCK на ecss2 и запустить репликацию:

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