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

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

на ecss1

sudo mysql -uroot -ppassword
CODE


на ecss1 ecss1-mysql>

STOP SLAVE;
CODE

на ecss1 ecss1-mysql>

RESET MASTER;
CODE

на ecss1 ecss1-mysql>

FLUSH TABLES WITH READ LOCK;
CODE
Запомнить параметры File, Position (<FILE>, <POS>)

на ecss1 ecss1-mysql>

SHOW MASTER STATUS; 
CODE

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

на ecss1 в другом окне

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

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

на ecss1 ecss1-mysql>

UNLOCK TABLES;
CODE

Скопировать файл ecss1.mysql.dump на ecss2.

на ecss1 в другом окне

scp ecss1.mysql.dump ecss2:/home/<user name>/
CODE

 
После этого зайти в mysql ecss2

на ecss2

sudo mysql -uroot -ppassword
CODE

И выполнить команду:

на ecss2 mysql-ecss2>

STOP SLAVE;
CODE

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

на ecss2 в другом окне

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

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

на ecss2 mysql-ecss2>

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

на ecss2 mysql-ecss2>

CHANGE MASTER TO MASTER_LOG_FILE='<FILE>', MASTER_LOG_POS=<POS>;
CODE

на ecss2 mysql-ecss2>

START SLAVE;
CODE

на ecss2 mysql-ecss2>

SHOW SLAVE STATUS \G;
CODE


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

на ecss2
mysql> SHOW SLAVE STATUS \G;
*************************** 1. row ***************************
. . .
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
. . .


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

на ecss2 mysql-ecss2>

STOP SLAVE;
CODE

на ecss2 mysql-ecss2>

FLUSH TABLES WITH READ LOCK;
CODE

на ecss2 mysql-ecss2>

RESET MASTER;
CODE

на ecss2 mysql-ecss2>

SHOW MASTER STATUS;
CODE

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

на ecss1 mysql-ecss1>

CHANGE MASTER TO MASTER_LOG_FILE='<FILE>', MASTER_LOG_POS=<POS>;
CODE

на ecss1 mysql-ecss1>

START SLAVE;
CODE

на ecss1 mysql-ecss1>

SHOW SLAVE STATUS \G;
CODE

Убедиться в том, что параметры Slave_IO_Running и Slave_SQL_Running имеют значение Yes.

на ecss1
mysql> SHOW SLAVE STATUS \G;
*************************** 1. row ***************************
. . .
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
. . .

Снять LOCK на ecss2 и запустить репликацию:

на ecss2 mysql-ecss2>

UNLOCK TABLES;
CODE

на ecss2 mysql-ecss2>

START SLAVE;
CODE