mysql ignore详解_MySQL replicate-ignore-db详解

0818b9ca8b590ca3270a3433284dd417.png

官方的解释是:在主从同步的环境中,replicate-ignore-db用来设置不需要同步的库。解释的太简单了,但是里面还有很多坑呢。生产库上不建议设置过滤规则。如果非要设置,那就用Replicate_Wild_Ignore_Table: mysql.%这种方式。实验探坑如下:

第一种情况

从库:

replicate-ignore-db = mysql

主库:

use mysql

CREATE TABLE test.testrepl1(

id int(5))ENGINE=INNODB DEFAULT CHARSET=UTF8;

从库不会同步。坑!

第二种情况

从库:

replicate-ignore-db = mysql

主库:

use test

CREATE TABLE mysql.testrepl2(

id int(5))ENGINE=INNODB DEFAULT CHARSET=UTF8;

从库不会同步。坑!

第三种情况

use test

update mysql.user set user = 'testuser5' where user = 'testuser1';

从库会同步

第四种情况

grant all on *.* to testnowild@'%' identified by 'ge0513.hudie';

从库会同步

第二大类:

Replicate_Wild_Ignore_Table: mysql.%

第五种情况

主库:

use test

update mysql.user set user = 'testuser1' where user = 'testuser5';

从库没有同步。坑!

第六种情况

主库:

grant all on *.* to testwild@'%' identified by 'ge0513.hudie';

从库没有同步。坑!

在复制中,如果实在要启用参数 replicate-ignore-db / replicate-do-db 后想要让复制正常运行,只需在连接数据库后不执行 "use db" 语句即可,如果是在php中,连接数据库后,不再执行 mysql_select_db() 即可。

这是因为复制机制会判断是否使用了 replicate-do(ignore)-db 参数,然后判断当前数据库是否为指定的数据库,如果是,才执行相应的binlog,否则略过。如果不指定数据库的话,就可以忽略这个环节了。

0818b9ca8b590ca3270a3433284dd417.png

感谢关注OpenSkill_CN订阅号,http://openksill.cn开源技术社区是一个致力开源、分享平台,在这里你可以分享你的技术见解和问题,分享你解决技术问题的方法文章,为我们的后来学习者提供福利!

欢迎加QQ技术交流群(372476089),如果你认同这种开源、分享的极客精神的话,帮忙转发,让更多小伙伴知道开源技术社区,欢迎注册分享!

OpenSKill

OpenSkill 中国最极客IT技术问答平台

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值