记一次 MySQL 主从同步异常的排查记录,百转千回

本文详细记录了一次MySQL主从同步异常的排查过程,问题表现为备库同步线程停止,错误信息指向binlog或relay log损坏。通过分析从库同步状态、重启、检查binlog和relay log,发现relay log损坏导致SQL线程停止。最终通过手动设置GTID跳过后,从库恢复正常同步。
摘要由CSDN通过智能技术生成

本文主要内容如下:

一、现象

最近项目的测试环境遇到一个主备同步的问题:

备库的同步线程停止了,无法同步主库的数据更改。

备库报错如下:

完整的错误信息:

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.

上面的报错信息是什么意思呢?

翻译一下就是主库的 binlog 或者从库的 relay log 损坏了,造成这个问题的原因:

  • 可能是网络问题。
  • 也可能是主库或备库的代码 bug。

首先我们还是得复习下主从同步的原理才能更好地分析原因。

二、主从同步的原理

首先我们还是得复习下主从同步的原理才能更好地分析原因。

  • 从库会生成两个线程,一个 I/O 线程,名字叫做 Slave_IO_Running,另外一个是 SQL 线程,名字叫做 Slave_SQL_Running;
  • 从库的 I/O 线程会去请求主库的 binlog 日志文件,并将得到的 binlog 日志文件写到本地的 relay-log (中继日志)文件中;
  • 主库会生成一个 dump 线程,用来给从库 I/O 线程传 binlog;
  • 从库 SQL 线程,会读取 relay log 文件中的日志,并解析成 SQL 语句逐一执行。

三、排查思路

3.1 分析从库的同步状态

我们可以打印下从库的同步状态,看到如下几个关键信息:

Master_Log_File: mysql-bin.000956,代表从库读到的主库的 binlog file,

Read_Master_Log_Pos: 528071913,代表从库读到的主库的 binlog file 的日志偏移量

Relay_Log_File: relay-bin.000094,代表从库执行到了哪一个 relay log

Relay_Log_Pos: 123408769,代表从库执行的 relay log file 的日志偏移量

Relay_Master_Log_File: mysql-bin.000955,代表从库已经重放到了主库的哪个 binlog file。

Exec_Master_Log_Pos: 123408556,

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL主从同步异常是指在主从复制过程中出现的错误或异常,可能导致主从数据不一致或同步延迟。对于这种情况,通常可以采取一些措施来解决或修复。 首先,我们可以通过检查MySQL主从配置文件、网络连接、用户权限等方面,排查配置问题和网络问题。确保主从服务器之间网络连接正常,主从配置正确,且用户权限设置正确。 其次,我们可以尝试重启MySQL服务来恢复主从同步。通过在主服务器上执行"FLUSH TABLES WITH READ LOCK"命令,锁定表并停止写入操作,然后重启主服务器和从服务器。这可以帮助重新建立主从同步关系。 如果以上方法未能解决同步异常问题,我们可以考虑使用一些专门用于修复MySQL主从同步问题的软件工具。例如,Percona Toolkit提供了一些工具,如pt-table-checksum和pt-table-sync,可以用于检查主从数据的一致性并修复不一致的数据。这些工具可以帮助找出数据不一致的表和行,并进行同步修复。 此外,如果主从同步异常是由于网络故障或服务器宕机等硬件故障引起的,我们可以考虑恢复数据库备份来修复同步异常。通过使用备份数据重新构建主从复制关系,可以确保数据的一致性,并尽量减小同步延迟。 总而言之,针对MySQL主从同步异常,我们可以通过检查配置、重启服务、使用专门工具、恢复备份等方式来解决或修复。不同的情况可能需要采取不同的策略,具体方法取决于问题的原因和具体环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值