[[ Восстановление репликации в MySQL ]]

MySQL

Восстановление репликации в MySQL

Исправление единичной ошибки

FIXME

Полное восстановление

На master'е

Снять дамп

localhost:~$ mysqldump --master-data=2 --flush-logs --routines --triggers --opt --user=$USER --password=$PASS --host=$HOST --databases <DATABASE_NAME_1> <DATABASE_NAME_2> > /tmp/masterdump.sql

На slave'е

mysql> show slave status\G
*************************** 1. row ***************************
...
             Slave_IO_Running: No
            Slave_SQL_Running: No
...
                Last_IO_Errno: 1236
                Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
...

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

Я использовал значение master-data=2, поэтому CHANGE MASTER TO надо выполнить руками

cat /tmp/masterdump.sql | grep -m1 'CHANGE MASTER'  /tmp/masterdump.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.044000', MASTER_LOG_POS=107;

localhost:~$ mysql --user=$USER --password=$PASS --host=$HOST < /tmp/masterdump.sql

mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.044000', MASTER_LOG_POS=107;

mysql>  start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G  
*************************** 1. row ***************************
...
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
...
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
...
              Master_Log_File: mysql-bin.043998
        Relay_Master_Log_File: mysql-bin.043997
        Seconds_Behind_Master: 2236

Подождем немного, пока подтянутся изменения

mysql> show slave status\G  
*************************** 1. row ***************************
...
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
...
              Master_Log_File: mysql-bin.044002
          Read_Master_Log_Pos: 51783684
               Relay_Log_File: mysqld-relay-bin.000015
                Relay_Log_Pos: 51783830
        Relay_Master_Log_File: mysql-bin.044002
        Seconds_Behind_Master: 0

Репликация восстановлена.







Обсуждение

Bob, 2020/01/23 14:58

забыл mysql> reset slave;

Ваш комментарий. Вики-синтаксис разрешён:
74 +13 =
 
howto/mysql/mysql_replication_recovery.txt · Последнее изменение: 2022/08/31 14:53 — 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki