两台服务器之间的mysql做了主从配置,但是发现有两张表主从不一致,分析发现主mysql的binlog里面少了一些insert语句,结果从表中就没有这部分数据,另外奇怪的是,并不是所有的insert都没有,而是部分,也就是说,对主mysql的两张表的部分insert操作没有记录,结果这些数据主表有,从表却没有。 |
|
5分 |
你说的这种情况基本不太可能
请确定主从表结构完全一致,并且show slave status正常 |
您好!从表是主表备份恢复的,status正常,因为其他所有表和数据都是能够正常实时备份到从表的,就有两张表的部分插入数据不正常。查了很久才发现是一些insert操作没有记录到binlog文件里,所以无法同步到从机。 首先是binlog里就没有部分insert,感觉跟主从同步不同步还没有关系。 挠头好几天了,也没有解决思路。希望高手指点 |
|
还没碰到过master插入数据 而binlog没有记录的,而且还是只针对特定一个表没有记录binlog
能重现吗 不能重现先把数据整同步
|
|
奇怪,同步设置里去掉指定同步哪个数据库的设置(现在是同步所有数据库),问题就没了,那两张表的数据也完全同步了。
这不是不能同步指定数据库了吗? 求解啊! |
|
是否当时的主从有问题?
|
|
主从配置有问题,当初的配置是否成功。
|
|
当初的配置是成功的,都能执行,只是里面有2张表的部分数据不能同步。 我们就配置成功后运行,开始检查一些表都正常同步了,以为没问题。后来查到有2张表的一部分数据没同步,就是说这2张表的另一部分数据也是能正常同步的,很奇怪。 现在是把制定同步的数据库配置去掉了,现在是同步所有数据库了(总共有两个数据库,其中一个本事不需要同步的),但是数据都能正常同步了。 |
|
复制的过滤主要有2种方式:
1,在主服务器在把事件从进二制日志中过滤掉,相关的参数是:binlog_do_db和binlog_ignore_db。 2,在从服务器上把事件从中继日志中过滤掉,相关的参数是replicate_*。 复制只能扩展读取,不能扩展写入,对数据进行分区可以进行扩展写入。 复制常见的问题: 复制的优化: 在mysql复制环境中,有8个参数可以让我们控制,需要复制或需要忽略不进行复制的DB或table分别为: 优点是Master端的Binlog记录所带来的Io量减少,网络IO减少,还会让slave端的IO线程,SQL线程减少,从而大幅提高复制性能, 下面六项需要在slave上设置: 优点是在slave端设置复制过滤机制,可以保证不会出现因为默认的数据库问题而造成Slave和Master数据不一致或复制出错的问题. |
|
15分 |
指定数据局同步
假如您配置的是同步数据库database-A 但您连接默认的数据库不是database-A,如下面的插入的语句 use database-B; insert into database-A.table values(…) 这种binlog是不会记录到database-A中的;所以主从就不一致 |
Replicate_Ignore_DB 肯定是这里设置了,所以被过滤了,不录入到binlog里面了啊。
|