Mysql 主从同步错误解决记录

文章描述了一次MySQL主从复制过程中遇到的同步错误,错误信息显示从库缺少主库的更新记录。通过查询和分析错误日志,发现是由于特定更新操作时从库缺少对应记录导致。解决方法包括停止并重新启动从库同步以及考虑使用数据库同步工具如Ibbackup或xtrabackup进行数据同步,其中Ibbackup提供无锁表备份功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器配置好的Mysql主从复制,已经稳定运行一个多月了,今日突然发现,同步报错卡在了昨天上午的日志记录处了
1.查询相关错误信息

mysql> select * from performance_schema.replication_applier_status_by_worker\G
Worker 1 failed executing transaction 'ANONYMOUS' at master log WIN-H7TETN00JMA-bin.000438, end_log_pos 1068165654; Could not execute Update_rows event on table ave_remoteservice.samples; Can't find record in 'samples', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log WIN-H7TETN00JMA-bin.000438, end_log_pos 1068165654

推测是之前同步过程遗漏的差异数据?

通过 mysqlbinlog 查询主从同步错误日志

 mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS WIN-H7TETN00JMA-bin.000438 | grep -A '20' 1068165654
#230509 20:28:09 server id 1  end_log_pos 1068165654 CRC32 0x87637247    Update_rows: table id 477 flags: STMT_END_F
### UPDATE `ave_remoteservice`.`samples`
### WHERE
###   @1=8990932 /* INT meta=0 nullable=0 is_null=0 */
###   @2=897 /* INT meta=0 nullable=0 is_null=0 */
###   @3='2023-02-24 00:00:00' /* DATETIME(0) meta=0 nullable=0 is_null=0 */
###   @4=2 /* TINYINT meta=0 nullable=1 is_null=0 */
###   @5=0 /* TINYINT meta=0 nullable=1 is_null=0 */
###   @6='2023-02-25 11:49:22' /* DATETIME(0) meta=0 nullable=1 is_null=0 */
###   @7=0 /* INT meta=0 nullable=1 is_null=0 */
###   @8='系统管理员' /* VARSTRING(150) meta=150 nullable=1 is_null=0 */
###   @9='20230224000055' /* VARSTRING(150) meta=150 nullable=0 is_null=0 */

update时,从库没有这条记录,然后给从库补上了这条记录
重新开启从库同步

mysql> stop slave;
mysql> start slave;
mysql> show slave status\G;

 	Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
 	Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates

差异数据过多时,能排查处理则排查处理,不能的,考虑重新配置主从同步(数据库很大很耗时)
或者使用数据库同步工具同步

Ibbackup热备份工具,是付费的。xtrabackup是免费的,功能上一样。
Ibbackup备份期间不锁表,备份时开启一个事务(相当于做一个快照),然后会记录一个点,之后数据的更改保存在ibbackup_logfile文件里,恢复时把ibbackup_logfile 变化的数据再写入到ibdata里。
Ibbackup 只备份数据( ibdata、.ibd ),表结构.frm不备份。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值