最近在工作中遇到一个很诡异的问题,想问问各位mysql大神
情况是这这样的,(工作问题就不公开了)
有一个表A
表A的数据主要是从其它表拉取数据,每天执行类似这样的语句,
`insert into A(name,age,createTime)
select name,age,createTime from B b where not exists(select 1 from C where id=b.id);`
但是今天发现C表的数据,主机比备机多几条(中间有出错过一次),现在A表是空的,B表主备一致,这样就导致select name,age,createTime from B b where not exists(select 1 from C where id=b.id)
这条语句备机查出来要比主机多,同步时会出现'Duplicate entry '387923' for key 1'类似的错误,于是我进行了这样的处理
先跳过备机的mysqlerror。我的疑问是在同步的时候,binlog里只同步语句,但是主键ID也同步过来了,想问问是不是这个原因
另外,最近刚刚开始部分运维工作,想问问大家有没有合适的mysql书籍推荐,主要是针对mysql管理方面的
建议在master上执行你的insert语句后,用mysqlbinlog分别导出master和slave上的binlog的SQL语句,对比分析一下,看看有什么区别:mysqlbinlog /var/log/mysql/binlog > binlog.sql
书的话推荐Percona核心团队(博客)编写的《高性能MySQL》。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。