replace into 引发的从库auto_increment不自增问题
Posted gered
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了replace into 引发的从库auto_increment不自增问题相关的知识,希望对你有一定的参考价值。
【问题】replace into 引发的从库auto_increment不自增问题
mysql主从,主上的表有唯一索引,然后用replace into 对唯一索引列的值修改了,auto_increment是会增加的,但是从库并不会同步auto_increment值,有什么方法可以规避这个吗 。
一旦涉及replace into,主从的表auto_increment就会不一样,这样后期如果主从切换就会有问题
【分析】
正常insert肯定是会变的,replace into并不是bug,如果值是不一样的那就和正常的insert是一样的,我说的场景是replace into的值是唯一索引列值一样的。
这种情况主库上是先delete后再insert,然后binlog中的表现形式是update的形式,所以主库的auto_increment会增加,但是从库只是update所以auto_increment不增加
我看网上的办法是
loveflea
建议:
1、将新表b里有的旧表a里没有的记录,保存到c表;并删除b里对应的记录!
2、insert into a select * from b;
3、update a,b set a.price=b.price where a.name=b.name
loveflea
建议:
1、将新表b里有的旧表a里没有的记录,保存到c表;并删除b里对应的记录!
2、insert into a select * from b;
3、update a,b set a.price=b.price where a.name=b.name
【最终解决】
我测试了一下,把主库的binlog_rows_query_log_events打开就可以了同步auto_increment
摘录自群问题:mysql dba技术交流群
以上是关于replace into 引发的从库auto_increment不自增问题的主要内容,如果未能解决你的问题,请参考以下文章