主从复制之神秘的表丢失

Posted 人生不设限

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了主从复制之神秘的表丢失相关的知识,希望对你有一定的参考价值。

问题想象:

最近在做一个项目的生产环境迁移,采用的是《源-中继-目标》这种架构,在测试阶段,开发反应一个问题:目标端的测试数据少了两张表。第一反应是:这两张表肯定是最近新增的表。因为我们的测试数据5天前就已经停止同步生产库,最近新增的表是不会出现在测试环境的。过不期然,这两张表是新增的。于是从中继节点(中继节点是一直在同步源端生产数据的)导出一份数据再入到测试环境。检查后发现,缺少的表还是不存在。检查了中继几点到源端的主从同步,状态ok。检查了源端本身的主从复制状态也是ok。但是表就是少了。

问题原因:

后经排查发现,中继节点的主库是源端集群的从库,而该从库没有打开log_slave_updates  参数

mysql> show variables like ‘%log%slave%‘;
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| log_slave_updates         | OFF   |
| log_slow_slave_statements | OFF   |
+---------------------------+-------+
2 rows in set (0.00 sec)

这样的设置,会导致源端主库的操作不会同步映射到从库的binlog,也就没法同步到中继节点。这就出现了上述所说的情况。

以上是关于主从复制之神秘的表丢失的主要内容,如果未能解决你的问题,请参考以下文章

Redis主从之全量复制和增量复制

133期MySQL主从复制的几种复制方式

RocketMQ高可用设计之主从复制和读写分离

MySQL主从复制之GTID模式介绍

MySql之基于ssl安全连接的主从复制

MySQL之主从半同步复制