做Mysql主从时,注意使用replicate_wild_do_table和replicate-wild-ignore-table【转】
做Mysql主从时,注意使用replicate_wild_do_table和replicate-wild-ignore-table
浓缩版:
使用replicate_do_db和replicate_ignore_db时有一个隐患,跨库更新时会出错。
如在Master(主)服务器上设置 replicate_do_db=test(my.conf中设置)
use mysql;
update test.table1 set ......
那么Slave(从)服务器上第二句将不会被执行
如Master设置 replicate_ignore_db=mysql
use mysql;
update test.table1 set ......
那么Slave上第二句会被忽略执行
原因是设置replicate_do_db或replicate_ignore_db后,MySQL执行sql前检查的是当前默认数据库,所以跨库更新语句在Slave上会被忽略。
可以在Slave上使用 replicate_wild_do_table 和 replicate_wild_ignore_table 来解决跨库更新的问题,如:
replicate_wild_do_table=test.%
或
replicate_wild_ignore_table=mysql.%
这样就可以避免出现上述问题了
---------------------华丽丽的分界线------------------------
完整版:
原文: http://www.mysqlperformanceblog.com/2009/05/14/why-mysqls-binlog-do-db-option-is-dangerous/
作者: Baron Schwartz
Why MySQL’s binlog-do-db option is dangerous
为什么 MySQL的 binlog-do-db 选项是危险的.
I see a lot of people filtering replication with
binlog-do-db, binlog-ignore-db, replicate-do-db, and
replicate-ignore-db. Although there are uses for these, they are
dangerous and in my opinion, they are overused. For many cases, there's a
safer alternative.
我发现很多人通过 binlog-do-db, binlog-ignore-db, replicate-do-db 和
replicate-ignore-db 来过滤复制(某些数据库), 尽管有些使用, 但是,在我看来,他们是危险的,并且他们被滥用了.
对于很多的实例,有更安全的替换方案.
The danger is simple: they don't work the way you think
they do. Consider the following scenario: you set binlog-ignore-db to
"garbage" so data in the garbage database (which doesn't exist on the
slave) isn't replicated. (I'll come back to this in a second, so if you
already see the problem, don't rush to the comment form.)
为什么危险很简单: 他们并不像你想的那样工作. 想象如下的场景: 你设置了 binlog-ignore-db =
garbage, 所以 garbage数据库(在slave上不存在这个数据库)
中的数据不会被复制,(待会儿我再讲这个,如果你已经发现问题了,不要急于到评论表单)
Now you do the following:
现在做下面的事情:
$ mysql
mysql> delete from garbage.junk;
mysql> use garbage;
mysql> update production.users set disabled = 1 where user = "root";
You just broke replication, twice. Once, because your
slave is going to execute the first query and there's no such table
"garbage.junk" on the slave. The second time, silently, because the update to production.users isn't replicated, so now the root user isn't disabled on the slave.
复制会broke2次, 第一次,因为
slave尝试着去之西你给第一条语句,但是slave上并没有这样的表"garbage.junk" , 第二次, 隐含的, 因为 对
production.users不会被 复制,因为 root帐号并没有在slave上被禁用掉.
Why? Because binlog-ignore-db doesn't do what you think.
The phrase I used earlier, "data in the garbage database isn't
replicated," is a fallacy. That's not what it does. In fact, it filters out binary logging for statements issued from connections whose default database is "garbage." In other words, filtering is not based on the contents of the query -- it is based on what database you USE.
为什么? 因为 binlog-ignore-db 并不像你想的那样执行, 我之前说的,
"在garbage数据库中的数据不会被复制" 是错的, 实际上(数据库)并没有这么做.事实上, 他是通过默认的数据库为“garbage"
的连接, 过滤二进制的(SQL)语句日志的. 换句话说, 过滤不是基于 查询的字符串的, 而实际于你used的数据库.
The other configuration options I mentioned work
similarly. The binlog-do-db and binlog-ignore-db statements are
particularly dangerous because they keep statements from ever being
written to the binary log, which means you can't use the binary log for
point-in-time recovery of your data from a backup.
其他我提到的配置选项也都类似. binlog-do-db 和 binlog-ignore-db 语句是特别危险的,因为他们将语句写入了二进制日志. 意味着你不能使用二进制日志从备份恢复指定时间的数据.
In a carefully controlled environment, these options can have benefits, but I won't talk about that here. (We covered that in our book.)
在严格控制的环境中, 这些选项是很有用的,但是我不会谈论这些(这些包含在我们的书中),
The safer alternative is to configure filters on the
slave, with options that actually operate on the tables mentioned in the
query itself. These are replicate-wild-* options. For example, the
safer way to avoid replicating data in the garbage database is to
configure replicate-wild-ignore-table=garbage.%. There are still edge
cases where that won't work, but it works in more cases and has fewer
gotchas.
安全的替换方案是 在 slave上配置过滤, 使用基于查询中真正涉及到的表的选项, 这些是:
replicate-wild-* 选项, 例如, 避免复制 garbage数据库中的数据的安全的方案是 配置:
replicate-wild-ignore-table=garbage.%. 这样做仍然有一些特殊的情况,
不能正常工作,但可以在更多的情况下正常工作,并且会遇到更少的意外 (gotchas).
If you are confused, you should read the replication rules section of the manual until you know it by heart
如果你有些疑惑了,你应该去读一读手册上的复制规则一节,直到你真正明白为止.
Refer from http://www.mysqlperformanceblog.com/2009/05/14/why-mysqls-binlog-do-db-option-is-dangerous
做Mysql主从时,注意使用replicate_wild_do_table和replicate-wild-ignore-table【转】的更多相关文章
- windows 系统本地做mysql 主从同步,最后面解决主从同步库名不一致,表结构一致
原文:windows 系统本地做mysql 主从同步,最后面解决主从同步库名不一致,表结构一致 mysql主从同步的好处以及原理 之前看到很多新闻说某某的服务器奔溃,磁盘碎了,导致数据丢失 ...
- XtraBackup做mysql主从同步
一.背景: 线上一个主库压力比较大,所以增加一个从库,但是不能重启或者停止主库的正常运行,不能锁库锁表影响业务的正常运行.所以这里想到了XtraBackup 二.XtraBackup介绍: Xtrab ...
- GTID做mysql主从时报错
今天在做主从同步时,显示slave_IO线程为NO ,并且报如下错误 Slave_IO_Running: No ... Last_IO_Error: Fatal error: The slave I/ ...
- MySQL主从数据库同步延迟问题解决(转)
最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务 ...
- mysql主从设置windows
MySQL 主从复制是其最重要的功能之一.主从复制是一台服务器充当主服务器,另一台或多台服务器充当从服务器,主机自动复制到从机.对于多级复制,数据服务器即可充当主机,也可充当从机.MySQL 复制的基 ...
- mysql主从同步异常原因及恢复
mysql主从同步异常原因及恢复 前言 mysql数据库做主从复制,不仅可以为数据库的数据做实时备份,保证数据的完整性,还能做为读写分离,提升数据库的整体性能.但是,mysql主从复制经常会因为某些原 ...
- MySQL主从关系设置(转)
来源:LAMP兄弟连 作者:李恺 http://***/php/bencandy.php?fid=70&id=635 要做MySQL主从关系的设置,那么就得有两台MySQL主机.所以在开始之前 ...
- Mysql主从(主从不同步解决办法,常见问题及解决办法,在线对mysql做主从复制)
一.主从不同步解决办法 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master status; 也正常. mys ...
- 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践
双机热备的概念简单说一下,就是要保持两个数据库的状态 自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换 ...
随机推荐
- HDU4466_Triangle
今天比赛做的一个题目,不过今天终于感受到了复旦题目有多坑了. 题目的意思是给你一段长为n个单位长度的直线,你可以选择任意连续单位长度的线段组成三角形,可以组成任意你可以组成任意多个三角形,且要求其中所 ...
- bzoj1923[Sdoi2010]外星千足虫(高斯消元)
Description Input 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结果.每行 包含一个“01”串和一个数字,用一个空格隔开.“01 ...
- 【bzoj2351】[BeiJing2011]Matrix 二维Hash
题目描述 给定一个M行N列的01矩阵,以及Q个A行B列的01矩阵,你需要求出这Q个矩阵哪些在原矩阵中出现过.所谓01矩阵,就是矩阵中所有元素不是0就是1. 输入 输入文件的第一行为M.N.A.B,参见 ...
- (转)解决点击a标签返回页面顶部的问题
本文转载至http://www.cnblogs.com/chenluomenggongzi/p/5950670.html 1 <!DOCTYPE html> 2 <html lang ...
- QT uic rcc moc 命令行使用
QT uic rcc moc 命令行使用 PS C:\Users\lsgx> uic.exe --help Usage: C:\Qt\Qt5.5.1\5.5\msvc2012\bin\uic.e ...
- 【刷题】BZOJ 5249 [2018多省省队联测]IIIDX
Description [题目背景] Osu听过没?那是Konano最喜欢的一款音乐游戏,而他的梦想就是有一天自己也能做个独特酷炫的音乐游戏.现在,他在世界知名游戏公司KONMAI内工作,离他的梦想也 ...
- 【移动支付】.NET微信扫码支付接入(模式二-NATIVE)
一.前言 经过两三天的琢磨总算完成了微信扫码支付功能,不得不感叹几句: 微信提供的DEMO不错,直接复制粘贴就可以跑起来了: 微信的配置平台我真是服了.公众平台.商户平台.开放平台,一个平 ...
- SMBv3空指针引用dos漏洞复现
0x01 前言 去年年底,当设置一个模拟器来定位SMB协议时,发现了一个如此简单而又非常有效的攻击大型企业的漏洞.TL; DR:一个拒绝服务错误允许BSOD协议向Windows 8.1和Windows ...
- ss命令用法小记
By francis_hao Nov 4,2017 ss是一个查看socket的实用工具 概要 ss [options] [ FILTER ] 描述 ss可以查看socket的统计信息, ...
- 手脱UPX v0.89.6 - v1.02
声明: 只为纪录自己的脱壳历程,高手勿喷 这个壳的脱法很多一般都一步直达的,步过我喜欢ESP定律 1.载入OD,在入口下一行ESP定律运行一次 > pushad ; //入口 BE mov es ...