slave中继日志损坏如何处理

Last_SQL_Error: Error initializing relay log position: I/O error reading the header from the binary log

Last_SQL_Error: Error initializing relay log position: Binlog has bad magic number;  

It's not a binary log file that can be used by  this version of MySQL


手工修复

解决方法:找到同步的binlog和POS点,然后重新做同步,这样就可以有新的中继日值了。


mysql> show slave status\G;

*************************** 1. row ***************************

              Master_Log_File: mysql-bin.000010

          Read_Master_Log_Pos: 1191

               Relay_Log_File: vm02-relay-bin.000005

                Relay_Log_Pos: 253

        Relay_Master_Log_File: mysql-bin.000010

             Slave_IO_Running: Yes

            Slave_SQL_Running: No

              Replicate_Do_DB: 

          Replicate_Ignore_DB: 

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: 

  Replicate_Wild_Ignore_Table: 

                   Last_Errno: 1593

                   Last_Error: Error initializing relay log position: I/O error reading the header from the binary log

                 Skip_Counter: 1

          Exec_Master_Log_Pos: 821


Slave_IO_Running :接收master的binlog信息

                   Master_Log_File

                   Read_Master_Log_Pos


Slave_SQL_Running:执行写操作

                   Relay_Master_Log_File

                   Exec_Master_Log_Pos


以执行写的binlog和POS点为准。


Relay_Master_Log_File: mysql-bin.000010

Exec_Master_Log_Pos: 821

mysql> stop slave;

Query OK, 0 rows affected (0.01 sec)


mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000010',MASTER_LOG_POS=821;

Query OK, 0 rows affected (0.01 sec)


mysql> start slave;

Query OK, 0 rows affected (0.00 sec)


mysql> show slave status\G;

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.8.22

                  Master_User: repl

                  Master_Port: 3306

                Connect_Retry: 10

              Master_Log_File: mysql-bin.000010

          Read_Master_Log_Pos: 1191

               Relay_Log_File: vm02-relay-bin.000002

                Relay_Log_Pos: 623

        Relay_Master_Log_File: mysql-bin.000010

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB: 

          Replicate_Ignore_DB: 

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: 

  Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0

                   Last_Error: 

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 1191

              Relay_Log_Space: 778

              Until_Condition: None

               Until_Log_File: 

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File: 

           Master_SSL_CA_Path: 

              Master_SSL_Cert: 

            Master_SSL_Cipher: 

               Master_SSL_Key: 

        Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error: 

               Last_SQL_Errno: 0

               Last_SQL_Error: 

  

  

如果嫌麻烦,可以在slave的配置文件里加上参数relay_log_recovery=1 就可以了


你可能感兴趣的:(mysql)