论坛
门户
内部优惠
喜欢
话题
VIP会员
搜索
新浪微博
登录
注册
100%
100%
首页
>
站长学院
>
数据库区
>
Mysql二进制日志过滤器
回复
« 返回列表
灯火互联
管理员
注册日期
2011-07-27
发帖数
41778
QQ
火币
41290枚
粉丝
1086
关注
100
加关注
写私信
打招呼
阅读:
3239
回复:
0
[mysql]
Mysql二进制日志过滤器
楼主
#
更多
只看楼主
倒序阅读
发布于:2012-09-25 14:41
保存
100%
100%
[]
1
Mysql二进制日志过滤器
二进制日志过滤器可以通过两个选项从二进制日志中过滤语句:
binlog-do-db和binlog-ignore-db
www.atcpu.com
一,binlog-do-db
使用 binlog-do-db=db_name。使用这个选项后,主服务器会判断当前的数据库(即USE选定的数据库)是否是db_name,如果是,则会将更新记录到二进制日志中。在使用之后,其它所有没有明显指定的数据库 都会被忽略。如果使用该选项,你应确保只对当前的数据库进行更新。
在我服务器上有两个数据库,一个db_factory,另一个是db_user。在没有使用这个选项之前,对两个数据库的更新操作都是立即会复制到从库上的,但设置
www.atcpu.com
[sql]
binlog-do-db=db_factory
之后,对db_user的改动,都不会被从库所复制。所以如果不是特别有需求,最好不要设置这个选项。当然如果是一个数据库经常更新,其它的都是一样的本地数据库,可以不用于二进制日志的后续操作的情况下,作为一种优化手段,也是可以的。
一个需要特别注意的地方是,如果设置binlog-do-db=db_factory。但后续使用如下语句:
[sql]
use db_user
insert into db_factory.employ ...........
此时,更新是不会被二进制日志所接收的。
二,binlog-ignore-db
表示忽略某个特定的数据库,而对其它数据库进行复制的选项。其实上面的选项是表示“忽略其他数据库,只记录我进入日志”,而这个选项可以表“忽略我,将其它数据库记录日志”,对这外选项的使用,可以如下所示:
www.atcpu.com
[sql]
[mysqld]
binlog-ignore-db=db_factory
binlog-ignore-db=db_user
当然上面的binlog-do-db也可以使用多次记录多个表需要被写入二进制日志。
三,选项规则
是否有binlog-do-db或binlog-ignore-db规则?
没有:将语句写入二进制日志并退出。
有:执行下一步。
有一些规则(binlog-do-db或binlog-ignore-db或二者都有)。当前有一个数据库,也就是是否用USE命令选择数据库?
没有:不要写入语句,并退出。
有:执行下一步。
www.atcpu.com
有当前的数据库。是否有binlog-do-db规则?
有:当前的数据库是否匹配binlog-do-db规则? 如果是,则写入并退出,如果不是,不写入并退出。
没有:执行下一步。
有一些binlog-ignore-db规则。当前的数据库是否匹配binlog-ignore-db规则?
有:不要写入语句,并退出。
没有:写入查询并退出。
从上面的流程逻辑可以知道,如果binlog-do-db被设置了,binlog-ignore-db将会被忽略。
另外,在这两个选项的应用过程中,要注意的是当前数据库的选择是通过USE来选择,这一点很重要。
喜欢
0
评分
0
最新喜欢:
淘宝天猫隐藏优惠券地址
回复
100%
发帖
回复
« 返回列表
普通帖
您需要登录后才可以回帖,
登录
或者
注册
100%
返回顶部
关闭
最新喜欢