一、半同步复制

1、什么是半同步复制

   当主服务器发起任何写操作时,这个写操作必须写到二进制日志文件中,并通知给从服务器,从服务器接下来并且在本地完成数据修改,而后反馈同步成功给主服务器,然后主服务器才返回OK状态;像这样的,只有等从服务器返回状态结果给主服务器,主服务器再返回状态,这叫同步,而mysql其实默认是工作于异步模式的

   在主从架构中,可以有一主多从,而主服务器只等待其中最快的一台从服务器响应,而不用等待所有的从服务器响应,所以叫半同步

2、实现方法

   早期mysql是不支持半同步复制的,后利益于goolge为mysql贡献了一个插件semisync_master.so和semisync_slave.so,因此,要想实现半同步复制,我们需先安装这两个插件

MariaDB(mysql)之半同步复制及复制过滤器的使用_第1张图片

3、半同步复制的实现

   1)在主服务器上安装半同步插件并设置

MariaDB(mysql)之半同步复制及复制过滤器的使用_第2张图片

   2)查看主服务器上的半同步功能是否开户成功

MariaDB(mysql)之半同步复制及复制过滤器的使用_第3张图片

   3)在从服务器上安装半同步插件

MariaDB(mysql)之半同步复制及复制过滤器的使用_第4张图片

   4)查看从服务器的半同步功能是否启动成功

MariaDB(mysql)之半同步复制及复制过滤器的使用_第5张图片

   5)在主服务器上验证半同步复制是否生效,如果出现下面那项,则说明成功

MariaDB(mysql)之半同步复制及复制过滤器的使用_第6张图片

二、复制过滤器的使用

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过滤

MariaDB(mysql)之半同步复制及复制过滤器的使用_第7张图片

   (2)在主服务器上创建school库

MariaDB(mysql)之半同步复制及复制过滤器的使用_第8张图片

   (3)在从服务器上做验证,刚才在主服务器上过滤的那个库没有同步到从服务器上来

MariaDB(mysql)之半同步复制及复制过滤器的使用_第9张图片

   2)基于表做过滤

   (1)在从服务器上做hlbrc库的students表过滤

MariaDB(mysql)之半同步复制及复制过滤器的使用_第10张图片

   (2)在从服务器查看从服务器中的hlbrc库中的students表中的信息

MariaDB(mysql)之半同步复制及复制过滤器的使用_第11张图片

   (3)主服务器上也有一个hlbrc库,向其students表中插入一个数据

MariaDB(mysql)之半同步复制及复制过滤器的使用_第12张图片

   (4)来到从服务器验证,刚才在主服务器插入的数据没有同步过来,说明在从服务器上做基于表过滤成功

MariaDB(mysql)之半同步复制及复制过滤器的使用_第13张图片

   (5)测试hlbrc中的其它表是否可以同步到从服务器上,先在主服务器上创造一张students表

MariaDB(mysql)之半同步复制及复制过滤器的使用_第14张图片

   (6)到从服务器上测试,hlbrc库中的其它表可同步到从服务器上,过滤只应用到的确实是hlbrc库中的students表

MariaDB(mysql)之半同步复制及复制过滤器的使用_第15张图片