问题描述:

slave不能同步master的一张表,其他表都正常。


排查:

show slave status;看都正常。
mysqlbinlog 打开中继日志看,发现没有这张表的insert语句,证明sql没有从master同步过来。
去master看binlog,发现也没有这张表的insert操作,手动执行一下alter table是能写进binlog的。
去查master的my.cnf,发现有个这样的配置:
replicate-ignore-db = mysql
binlog-ignore-db    = mysql

意思是在mysql库里做的操作不写binlog,slave也过滤掉mysql库里的操作。


基本上确定是这个配置的问题了,实验了下use mysql;后,去更新其他库里的表,发现没有写binlog。
注销掉这两个配置,重启了master,重新做了slave,一切恢复正常。
看来应用在insert的时候,不一定是在当前库中操作。所以为防止主从数据不一致,最好所有的库都进行同步。