mysql复制--复制过滤
复制过滤:
让从节点仅仅复制指定的数据库,或指定数据库的指定数据表。主服务器有10个数据库,而从节点只需要同步其中的一两个数据库。这个时候就需要复制过滤。复制过滤器可以在主节点中实现,也可以在从节点中实现。
主节点:
在主节点的二进制事件日志中仅记录与指定数据库(数据表)相关的事件日志,但是主节点的二进制日志不完整,没有记录所有对主节点的修改操作。(不推荐)
如果要使用该方式,则在主节点的配置文件中添加如下参数:
- binlog_do_db=”XXX,XXX,XXX”; #数据库白名单列表
- binlog_ingore_db=”XXX,XXX,XXX”; #数据库黑名单列表。
但这两个配置参数不要同时使用。
从节点:
从服务器的 SQL Thread在Replay中继日志中的事件时,仅读取于特定数据库(数据表)相关的事件,并应用于本地。(但是浪费I/O ,浪费带宽)推荐使用
从节点复制过滤相关设置项:
- replicate_do_db =”“; #复制的白名单
- replicate_ingore_db =”“; #复制的黑名单
- replicate_do_table=”“;
- relicate_ingore_table=”“;
- replicate_wild_do_table=”“; #更高级别的应用,通配符,应用到哪一类表的。
从节点复制过滤:
1:在从节点上查看与 replicate 相关的参数
2:停止从节点slave线程
3:修改变量,只复制【mydb】数据库
1):set 修改。但用SET配置的参数,只是临时有效,当mySQl重启时又无效了。
2):配置文件修改:如果要配置参数永久有效,则在配置文件里修改。
4:从启数据库,登录mysql
5:在从服务器查看 slave 线程状态
复制过滤测试
1:在主节点创建 testdb数据库
在主库创建testdb数据库。
在从库查看是否存在数据
2:向 mydb库修改数据
在主库创建mydb创建tb1表格。
在从表查看是否存在表格tb1