一、半同步复制
1、什么是半同步复制
当主服务器发起任何写操作时,这个写操作必须写到二进制日志文件中,并通知给从服务器,从服务器接下来并且在本地完成数据修改,而后反馈同步成功给主服务器,然后主服务器才返回OK状态;像这样的,只有等从服务器返回状态结果给主服务器,主服务器再返回状态,这叫同步,而mysql其实默认是工作于异步模式的
在主从架构中,可以有一主多从,而主服务器只等待其中最快的一台从服务器响应,而不用等待所有的从服务器响应,所以叫半同步
2、实现方法
早期mysql是不支持半同步复制的,后利益于goolge为mysql贡献了一个插件semisync_master.so和semisync_slave.so,因此,要想实现半同步复制,我们需先安装这两个插件
![捕获.PNG wKioL1NL8AmAunRuAAA6CgzyaUw495.png]()
3、半同步复制的实现
1)在主服务器上安装半同步插件并设置
![1 主上配置.PNG wKioL1NL8PPgpPOtAACKt_RdSso320.png]()
2)查看主服务器上的半同步功能是否开户成功
![2 . 主上设置.PNG wKioL1NL8TPRlGARAAA1ySXkUpo567.png]()
3)在从服务器上安装半同步插件
![3 从上配置.PNG wKiom1NL8Yni_jiNAABlHEVMeE8681.png]()
4)查看从服务器的半同步功能是否启动成功
![4 从上show global variables like '%semi%'.PNG wKioL1NL8X-TU191AAA4xq1BD30018.png]()
5)在主服务器上验证半同步复制是否生效,如果出现下面那项,则说明成功
![5、在主服务器上验证半同步复制是否生效.PNG wKioL1NL8bySUNwvAABLPb2JsLk275.png]()
二、复制过滤器的使用
1、关于过滤的一些选项
1)master,主服务器
其中主服务器只可过滤到库级别,如果想要过滤表级别的,则应该在从服务器上设置
要想使设置永久生效,就写入配置文件
①、binlog_do_db=
仅复制指定库
②、binlog_ignore_db=
忽略指定库的复制
2)slave,从服务器
①、replicate_do_db=
仅复制指定库
②、replicate_ignore_db=
忽略指定库的复制
③、replicate_do_table=db_name.table_name
基于表做白名单
④、replicate_ignore_table=
基于表做黑名单
⑤、基于通配做过滤
replicate_wild_do_table=
replicate_wild_ignore_table=
2、复制过滤器的使用
1)基于库做过滤
(1)在主服务器上做school过滤
![1 replicate_ignore_db.PNG wKioL1NL9pOAsM_IAABJUlrcUcg207.png]()
(2)在主服务器上创建school库
![2 master show global variables like '%replicate%'.PNG wKioL1NL9xjTkw2uAAA3IEJlQxA136.png]()
(3)在从服务器上做验证,刚才在主服务器上过滤的那个库没有同步到从服务器上来
![3 slave show datavbases;.PNG wKioL1NL9z3x5N1YAABNuMoMwb0025.png]()
2)基于表做过滤
(1)在从服务器上做hlbrc库的students表过滤
![4 slave set global replicate_ignore_table='hlbrc.students'.PNG wKiom1NL99iy1Ns5AABlABgeaII547.png]()
(2)在从服务器查看从服务器中的hlbrc库中的students表中的信息
![5 slave select 8 from student.PNG wKioL1NL-FXS_3BVAAAwAuEkSS4236.png]()
(3)主服务器上也有一个hlbrc库,向其students表中插入一个数据
![6 master insert into students and show .PNG wKiom1NL-RSiycslAABFV5v5eqI236.png]()
(4)来到从服务器验证,刚才在主服务器插入的数据没有同步过来,说明在从服务器上做基于表过滤成功
![7 slave select 8 from students.PNG wKioL1NL-RfTJbthAABdj19f8iQ442.png]()
(5)测试hlbrc中的其它表是否可以同步到从服务器上,先在主服务器上创造一张students表
![8 master create another table in hlbrc.PNG wKiom1NL-XyR6ajJAABfjKxBWgc964.png]()
(6)到从服务器上测试,hlbrc库中的其它表可同步到从服务器上,过滤只应用到的确实是hlbrc库中的students表
![9 slave have the table too.PNG wKioL1NL-aST_QUxAAAqs7Tt6lE533.png]()
本文转自 nmshuishui 51CTO博客,原文链接:http://blog.51cto.com/nmshuishui/1395615,如需转载请自行联系原作者