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的值缺少:
# :: server id end_log_pos CRC32 0x925f45f8 Update_rows: table id flags: STMT_END_F
### UPDATE `wms2_db`.`doc_operation_master`
### WHERE
### @= /* INT meta=0 nullable=0 is_null=0 */
### @='' /* VARSTRING(300) meta=300 nullable=0 is_null=0 */
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* INT meta=0 nullable=0 is_null=0 */
### @='f0669e0b00345c6d94f7dec9de411c97' /* VARSTRING(300) meta=300 nullable=0 is_null=0 */
### @= /* INT meta=0 nullable=0 is_null=0 */
--
# at
# :: server id end_log_pos CRC32 0xc8ba4f28 Xid =
COMMIT/*!*/;
# at
# :: server id end_log_pos CRC32 0x51de68de Anonymous_GTID last_committed= sequence_number= rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at
# :: server id end_log_pos CRC32 0xd7909fa2 Query thread_id= exec_time= error_code=
SET TIMESTAMP=/*!*/;
BEGIN
是Id=93159的值备库缺少,接下来就是生成93159的insert语句,
通过SQLyog工具查询这条数据,在“工具”--“导出表中所有行/结果”,选择”数据仅仅“和“SQL”,导出就可以得到需要行的insert语句
备注: 如果是选择导出整个表,需要选择表。
导出查询结果,不选择表,运行查询后,就可以直接导出成insert的SQL