我在主/从复制中使用 Debian 9 下的 MariaDB 10.2.10。我遇到了复制问题,因为从属设备由于 1062 重复键错误而拒绝复制。
查了很久才发现,master的binlog中有两次相同的INSERT语句。它以基于语句和行的格式编写。binlog_format 设置为 MIXED。
我查看了一般日志 - INSERT 语句只提交了一次。
这是mysqlbinlog的输出:
# at 11481089
#171205 10:22:37 server id 126 end_log_pos 11481132 CRC32 0x73b0f77c
Write_rows: table id 22683990 flags: STMT_END_F
### INSERT INTO `mydb`.`document_reference`
### SET
### @1=30561
### @2=6
### @3=0
# at 11481132
#171205 10:22:37 server id 126 end_log_pos 11481387 CRC32 0x599e2b04
Query thread_id=3282752 exec_time=0 error_code=0
SET TIMESTAMP=1512465757/*!*/;
INSERT INTO document_reference
(document_reference_document_id, document_reference_type, document_reference_value)
VALUES (30561, "single", 0)
/*!*/;
# at 11481387
#171205 10:22:37 server id 126 end_log_pos 11481418 CRC32 0x73fe1166 Xid = 248234294
COMMIT/*!*/;
任何人都有一个想法,为什么这个语句被写入binlog两次?