加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

怎么解决MySQL中the master's binary log is corrupted报错难题

发布时间:2023-07-19 13:42:46 所属栏目:MySql教程 来源:
导读:本篇内容介绍了“怎么解决MySQL中the master's binary log is corrupted报错问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧

本篇内容介绍了“怎么解决MySQL中the master's binary log is corrupted报错问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

主从复制报错,下面是从库复制状态:

mysql> show slave status\G;

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

        Slave_IO_State: Waiting for master to send event

         Master_Host: 192.168.129.150

         Master_User: replicat

         Master_Port: 3306

        Connect_Retry: 60

       Master_Log_File: mysql-bin.000197

     Read_Master_Log_Pos: 213271941

        Relay_Log_File: mysql-relay-bin.000584

        Relay_Log_Pos: 1037392990

    Relay_Master_Log_File: mysql-bin.000195

       Slave_IO_Running: Yes

      Slave_SQL_Running: No

...

          Last_Errno: 1594

          Last_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.

         Skip_Counter: 0

     Exec_Master_Log_Pos: 1037392827

       Relay_Log_Space: 2368588837

...

        Last_SQL_Errno: 1594

        Last_SQL_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.

 Replicate_Ignore_Server_Ids:

       Master_Server_Id: 3

         Master_UUID: 58c0c354-8652-11e6-bebe-40f2e9ddc532

       Master_Info_File: /data/DB/mysql/master.info

          SQL_Delay: 0

     SQL_Remaining_Delay: NULL

   Slave_SQL_Running_State:

      Master_Retry_Count: 86400

         Master_Bind:

   Last_IO_Error_Timestamp:

   Last_SQL_Error_Timestamp: 161018 09:38:49

....

中继日志读主库日志失败 ,顺道看下错误日志信息,日志显示从库9点37分时重启了,38分出现主从故障,看样子是因为从库异常重启导致的!

161018 09:37:39 mysqld_safe Number of processes running now: 0

161018 09:37:39 mysqld_safe mysqld restarted

...

2016-10-18 09:38:49 6042 [ERROR] Slave SQL: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave. Error_code: 1594

解决方法,重新设置主从进程解决:

mysql> stop slave;

Query OK, 0 rows affected (0.02 sec)

mysql> reset slave;

Query OK, 0 rows affected (0.57 sec)

mysql> change master to master_host='192.168.129.150',

  -> master_user='replicat',

  -> master_password='passw',

  -> master_log_file='mysql-bin.000195',

  -> master_log_pos=1037392827;

Query OK, 0 rows affected, 2 warnings (0.07 sec)

mysql> start slave;

Query OK, 0 rows affected (0.03 sec)

以前从库异常重启都没发生这类情况,网上查了相关资料,发现和relay_log_info_repository和relay_log_info_repository这两个参数有关

mysql> show variables like '%relay_log_info_repository%';

+---------------------------+-------+

| Variable_name             | Value |

+---------------------------+-------+

| relay_log_info_repository | FILE  |

+---------------------------+-------+

1 row in set (0.00 sec)

mysql> show variables like '%relay_log_info_repository%';

+---------------------------+-------+

| Variable_name             | Value |

+---------------------------+-------+

| relay_log_info_repository | FILE  |

+---------------------------+-------+

1 row in set (0.00 sec)

把FILE修改成TABLE可以降低这种主从失败发生的概率。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章