MySQL从库选项log-slave-updates未启用引发的异常

    最近核查一个基于从库复制某张特定的表到另外一个主库调整,未配置log-slave-updates导致表无法正常同步。我们的配置文件中使用了replicate-rewrite-db参数以及replicate_wild_do_table参数。具体场景见下面的描述。

1、环境介绍及问题由来   DB1M(Master)  ---> DB1S(Slave)   DB2M(Master)  ---> DB2S(Slave)   现在的情形是需要将DB1M实例上的特定的表tbname上实时同步到DB2M实例   为减轻DB1M上的压力,我们将DB1S作为DB2M的主库,即最终的拓扑结果如下:   DB1M(tbname)  ---> DB1S(tbname) ---> DB2M(tbname) --->DB2S(tbname)   在DB2M上配置了如下参数:   replicate-rewrite-db=DB1->DB2   replicate_wild_do_table=DB2.tbname   经过上述配置后,将tbname表从DB1M一致性导出后同步到DB2M实例的DB2上   配置完毕后,DB2M(Master)  ---> DB2S(Slave)上的表tbname并没有彻底同步,总是存在数据丢失的问题

2、分析   a、DB1M(Master)  ---> DB1S(Slave)表tbname无异常,排除DB1S做为DB2M主存在问题的可能性   b、DB1S(tbname) ---> DB2M(tbname)表tbname无异常,排除DB1S上启用的相关配置等   b、DB2M(Master)  ---> DB2S(Slave)期间表tbname存在问题,也就是说应该是在DB2M上基于表tbname的dml日志并没有写入到binlog   c、在DB2M上基于表tbname的dml日志是来源于DB1S产生的relay log,同步到DB2M(Master)上无异常,一定可以在relay log找到tbname的相关操作   e、验证步骤c,再检查DB2M(Master)上是否有tbname的binlog,如果没有,一定是某个参数未设置或某个特定对的原因而导致在apply relay log时未添加到binlog

3、故障解决   通过上述的分析及验证,果然发现在DB2M(Master)上丢失了参数log-slave-updates   通过在DB2M(Master)添加作为从库的选项log-slave-updates后表tbname同步正常

4、有关log-slave-updates选项      log-slave-updates是一个全局非动态选项,其值为布尔型,即TRUE和FALSE。缺省为FALSE,修改该参数需要重启实例。

Normally, a slave does not log to its own binary log any updates that are received from a master server. This option tells the slave to log the updates performed by its SQL thread to its own binary log. For this option to have any effect, the slave must also be started with the --log-bin [2039] option to enable binary logging. Prior to MySQL 5.5, the server would not start when using the --log-slave-updates [2004] option without also starting the server with the --log-bin [2039] option, and would fail with an error; in MySQL 5.6, only a warning is generated. (Bug #44663) --log-slave-updates [2004] is used when you want to chain replication servers. For example, you might want to set up replication servers using this arrangement:

    A -> B -> C

    Here, A serves as the master for the slave B, and B serves as the master for the slave C. For this to work, B must be both a master and a slave. You must start both A and B with --log-bin [2039] to enable binary logging, and B with the --log-slave-updates [2004] option so that updates received from A are logged by B to its binary log.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LanceToBigData

开发问题(一)在windows和linux端口占用问题

前言   今天在MyEclipse中使用tomcat发现tomcat端口8080竟然被占用了,所以就找了一下解决办法共参考!   在网络程序的调试过程中,经常发...

21310
来自专栏Java学习网

http错误码对照表

http错误码对照表 2xx 成功 200 正常;请求已完成。 201 正常;紧接 POST 命令。 202 正常;已接受用于处理,但处理尚未完成。...

2267
来自专栏虚拟化云计算

oVirt之软件架构全剖析

本文是从软件架构设计的角度剖析oVirt的vdsm,另外还有一篇是从功能架构设计的角度剖析oVirt。

1974
来自专栏cloudskyme

搭建hadoop1.2集群

环境准备 我使用的是vmware workstation,首先安装ubuntu 12.04,安装完成后通过vmware的clone,clone出两个虚机,设置的...

3043
来自专栏抠抠空间

django自带权限机制

权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活;用好权限机制,能让系统更加强大和健壮。因此,基于Django的开发,理清Django权...

1523
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装和配置Postfix

Postfix是一种流行的开源邮件传输代理(MTA),可用于在Linux系统上路由和传递电子邮件。据估计,互联网上约有25%的公共邮件服务器运行Postfix。

2931
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装Bro

Bro是一个开源网络分析框架和安全监控应用程序。它将OSSEC和osquery的一些最佳功能集成到一个包中。

2065
来自专栏逸鹏说道

安装和搭建基于netcore的demo

系统CentOS安装:   网上很多教程,很详细,我就不再赘述了。在安装过程中,需要注意的是设置时区、个人账户密码、root密码(一定要注意,否则后续很麻烦)、...

3659
来自专栏python读书笔记

python 数据分析基础 day7-xlrd,xlwt读写多个excel通过xlrd和xlwt读多个excel文件并写入一个新excel文件

今天总结的内容为通过xlrd和xlwt模块将读取的多个excel文件中多个工作表输出至多个excel文件中。 通过xlrd和xlwt读多个excel文件并写入一...

3458
来自专栏菜鸟程序员

Ubuntu防火墙安装和配置

1844

扫码关注云+社区

领取腾讯云代金券