gpt4 book ai didi

带有AUTO_INCREMENT主键的Mysql主从复制

转载 作者:行者123 更新时间:2023-11-30 21:44:18 25 4
gpt4 key购买 nike

问题出在标准 Mysql Master-Slave 设置(slave 是只读的,二进制日志记录设置为 ROW),当在 Master 表中插入一行时具有自动递增主键,例如,这一行获得 ID 4288996,当在从站复制相同的插入时,同一行获得不同的 ID 例如4289032(因为插入时没有主键值,这是自动生成的)。

现在当 UPDATE 语句在 Master 的这一行发出时问题出现了:

#180430 18:00:12 server id 1  end_log_pos 429933 CRC32 0xd0d85778
Update_rows: table id 260 flags: STMT_END_F
### UPDATE `cmon`.`simple_alarm`
### WHERE
### @1=4288996
### SET
### @13=1525104012
### @15=1
# at 429933
#180430 18:00:12 server id 1 end_log_pos 429964 CRC32 0xdc9f3fa4 Xid = 452035

因为Slave上不存在同一行(有不同的ID):

'Could not execute Update_rows event on table cmon.simple_alarm; Can't find record in 'simple_alarm', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log xxxxx_bin_log.000003, end_log_pos 429933'

我知道为什么这是个问题,但我不知道如何解决它?

最佳答案

已知问题

MySQL 8.0 Reference Manual / ... / Replication and AUTO_INCREMENT17.4.1.1

A statement invoking a trigger or function that causes an update to an AUTO_INCREMENT column is not replicated correctly using statement-based replication. These statements are marked as unsafe. (Bug #45677)

尝试基于行的日志记录或混合类型。也许它会得到解决。

关于带有AUTO_INCREMENT主键的Mysql主从复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50130322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com