结论:不论是严格模式还是非严格模式情况,主库更新与从库不同的值时,在有主键情况下,不影响复制进程,从库对应主键正常同步主库的值,主要受slave_rows_search_algorithms参数的影响。该现象问AI后,发现这是percona的优化(AI真强大)

优化链接:当前的文档未找到,但是豆包给的:并且豆包还截图了,估计是被投喂过原文 https://docs.percona.com/percona-server/5.7/performance/row-based_replication_optimizations.html 1.png 2.png

验证如下: 版本:percona 5.7.24-27-20180711-log

非严格模式更新 从库:非严格模式,主库更新于从库不同的数据是,查看同步情况 主从数据: 主库插入一条新数据进行测试 3.png 从库对id=4的数据进行变更 4.png 此时主从id=4的ts值不一致,主库继续变更,查看从库数据与复制情况 主库变更: 5.png 6.png

从库情况: 7.png 8.png 发现主从复制正常:从库数据与主库恢复一致 严格模式:从库sql_mode改为严格模式STRICT_TRANS_TABLES后,重启复制进程,发现现象与上面一致。

--后续排查,上面问题询问AI-豆包,给的答案是percona5.7的优化与slave_rows_search_algorithms相关 修改参数:set global slave_rows_search_algorithms='TABLE_SCAN',重启主从复制,立即出现报错情况(从库id=1的字段在实时更新) 该参数改回时:set global slave_rows_search_algorithms='TABLE_SCAN,INDEX_SCAN'; 重启主从复制,主从复制正常,从库数据正常更新 9.png 注:其他版本暂未测试