MySQL 从库down机
MySQL 从库down机中午突然down机,重启后,从库同步报主键重复的错误。
Could not execute Write_rows event on table operation_master; Duplicate entry '93157' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY;
the event's master log mysql-bin.000006, end_log_pos 930319690
根据报错的ID值删除,还是报主键重复。后来就直接删除大于ID的值
主从同步报
Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND 是主从更新时丢失数据,导致主从不一致,在从库上mysql> show slave status\G;结果如下
根据报错信息,运行:
/usr/bin/mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS mysql-bin.000006 | grep -A '10' 930324249
查看是那个ID的值缺少:
#181212 13:38:59 server id 11367 end_log_pos 930324249 CRC32 0x925f45f8 Update_rows: table id 820 flags: STMT_END_F ### UPDATE `wms2_db`.`doc_operation_master` ### WHERE ### @1=93159 /* INT meta=0 nullable=0 is_null=0 */ ### @2='93159' /* VARSTRING(300) meta=300 nullable=0 is_null=0 */ ### @3=1 /* INT meta=0 nullable=0 is_null=0 */ ### @4=1274373 /* INT meta=0 nullable=0 is_null=0 */ ### @5=1 /* INT meta=0 nullable=0 is_null=0 */ ### @6=723 /* INT meta=0 nullable=0 is_null=0 */ ### @7='f0669e0b00345c6d94f7dec9de411c97' /* VARSTRING(300) meta=300 nullable=0 is_null=0 */ ### @8=296963 /* INT meta=0 nullable=0 is_null=0 */ -- # at 930324249 #181212 13:38:59 server id 11367 end_log_pos 930324280 CRC32 0xc8ba4f28 Xid = 69359044 COMMIT/*!*/; # at 930324280 #181212 13:38:59 server id 11367 end_log_pos 930324345 CRC32 0x51de68de Anonymous_GTID last_committed=668830 sequence_number=668831 rbr_only=yes /*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/; SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/; # at 930324345 #181212 13:38:59 server id 11367 end_log_pos 930324420 CRC32 0xd7909fa2 Query thread_id=3782053 exec_time=0 error_code=0 SET TIMESTAMP=1544593139/*!*/; BEGIN
是Id=93159的值备库缺少,接下来就是生成93159的insert语句,
通过SQLyog工具查询这条数据,在“工具”--“导出表中所有行/结果”,选择”数据仅仅“和“SQL”,导出就可以得到需要行的insert语句
备注: 如果是选择导出整个表,需要选择表。
导出查询结果,不选择表,运行查询后,就可以直接导出成insert的SQL