mysql主从同步时,多库同步到一个库时,表结构同步失败

项目上有一个mysql主从,是将过个master同步到一个slave上.所以会使用到

--replicate-rewrite-db=old_name->new_name

修改数据库名称.

前期配置好以后,同步数据正常,一切参数也很正常.知道有一次修改了master上一个表的结构.发现,表的结构并没有同步到slave上.然后就开启了排除问题的道路.

一 ,期初以为是主从同步异常了,然后通过名称

show slave status;

发现状态都是正常

二, 查看binlog日志

通过命令

how binlog events;
show binlog events in 'mysql-bin.000002';

查看master上binlog日志,找到修改表结构时,记录下来的日志记录.

在查看slave上,记录的日志

show RELAYLOG EVENTS;

show RELAYLOG events in 'mysql-bin.000002';

也找到了表修改结构执行的语句.

这个就尴尬了......

查看执行的语句,发现有这么一句

use `ylzx_purchase_order`; ALTER TABLE `ylzx_purchase_order`.`p_order_check` 
MODIFY COLUMN `djzq` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '描述' AFTER `enter_id`

 前面有一句  use '库名';这是进库的操作,但因为我是将多个数据源同步到一个地方,所以使用--replicate-rewrite-db=old_name->new_name 将原始库名修改为了新的库名,但这里执行的语句,使用的是原始库名.感觉像是找到了问题所在.但转念一下,不对啊.其他更新也是正常的,为什么这个就不行,抱着试一试的想法,我更新了一条数据来看具体的执行语句.

悲催的发现,更新数据时,也是带的原始库名称,虽然没有进库的操作语句,但不能证明是这个的进库操作导致的同步失败,因为没有办法绕过这个进库操作.无奈之下又开始找其他原因.

三,从官网上找问题

后来实在没有办法.想到去看看官网上市如何解释 --replicate-rewrite-db=old_name->new_name配置项用法的,结果还真有这么一句话.

翻译过来就是

 

 --replicate-rewrite-db=old_name->new_name这个配置项,在替换库名时,只对部分语句起作用,像如 CREATE ,DROP,ALTER DATABASE这类语句,是不起作用的.所以在执行时,不会去替换为配置的新库名执行.所以导致同步失败了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值