MYSQL数据库MySQL半同步复制

MYSQL数据库MySQL半同步复制,第1张

概述介绍《MYSQL数据库MySQL半同步复制》开发教程,希望对您有用。

《MysqL数据库MysqL半同步复制》要点:
本文介绍了MysqL数据库MysqL半同步复制,希望对您有用。如果有疑问,可以联系我们。

导读:何为半同步复制模式呢?在此我们先了解异步复制模式,这是MysqL的默认复制选项.异步复制即是master数据库把binlog日志发送给slave数据库,然后就没有了然后了.在此暴露一个问题,当slave服务 1、半同步复制简介

MysqL入门  何为半同步复制模式呢?在此我们先了解异步复制模式,当slave服务器发生故障了,那么肯定会导致主从数据库服务器的数据不一致.

MysqL入门  为了解决上面的问题,MysqL5.5引入一种叫做半同步复制模式.开启这种模式,可以保证slave数据库接收完master数据库发送过来的binlog日志并写入自己的中继日志中,然后反馈给master数据库,告知已经复制完毕.

MysqL入门  开启这种模式后,当出现超时,主数据库将会自动转为异步复制模式,直到至少有一台从服务器接受到主数据库的binlog,并且反馈给主数据库.这时主数据库才会切换回半同步复制模式.

MysqL入门注意:

MysqL入门半同步复制模式必须在主服务器和从服务器同时中开启,否则将会默认为异步复制模式.

2、环境说明

MysqL入门  两台linux虚拟主机

MysqL入门  linux版本CentOS6.6、MysqL 5.5

MysqL入门  ip:192.168.95.11(主)、192.168.95.12(从)

3、安装与配置3.1、安装前提

MysqL入门    1、必须是MysqL5.5或者以上

MysqL入门    2、MysqL必须有自动加载功能,即have_dynamic_loading变量为YES(因为我们是在MysqL里面来加载安装这个功能插件)

MysqL入门       show variables like 'have_dynamic_loading';  #检查是否具有自动加载功能

MysqL入门

MysqL入门    3、主从复制已经配置好,并且已经ing工作着的.

MysqL入门      主从复制配置教程:http://www.cnblogs.com/PHPstudy2015-6/p/6485819.HTML
 

3.2、安装

MysqL入门 

MysqL入门    192.168.95.11加载安装:
 

 MysqL>install plugin rpl_semi_sync_master soname 'semisync_master.so' 2   3 MysqL>show plugins;   #查看是否加载成功  4   5 MysqL>SET GLOBAL rpl_semi_sync_master_enabled = 1;  #开启半同步复制,默认是关闭的 

MysqL入门



192.168.95.12加载安装
 

MysqL>INSTALL PLUGIN rpl_semi_sync_slave SOname 'semisync_slave.so'     MysqL>show plugins;   #查看是否加载成功      MysqL>SET GLOBAL rpl_semi_sync_slave_enabled = 1;  #开启半同步复制,默认是关闭的     #重启从服务器IO线程,手动将异步模式切换为半同步模式      MysqL>Stop SLAVE IO_THREAD;    MysqL>START SLAVE IO_THREAD; 

MysqL入门 

3.3、配置文件
rpl_semi_sync_master_enabled=1  #主库配置文件添加,表示以后启动MysqL将会自动开启半同步复制     rpl_semi_sync_slave_enabled=1  #从库配置文件添加,同上 
4、查看相关参数

MysqL入门  1、主从执行命令show variables like '%semi%';

MysqL入门  master:

MysqL入门

@H_404_278@

MysqL入门  Rpl_semi_sync_master_enabled=ON表示开启半同步复制

MysqL入门  Rpl_semi_sync_master_timeout=1000默认1000毫秒,即10秒超时,将切换为异步复制

MysqL入门  Rpl_semi_sync_master_wait_no_slave表示是否允许master每个事物都要等待slave接收确认,默认为ON

MysqL入门  Rpl_semi_sync_master_trace_level=32表示用于开启半同步复制时的调试级别,默认32

MysqL入门  slave:

MysqL入门

MysqL入门  Rpl_semi_sync_slave_enabled=ON表示在slave已经开始半同步复制模式

MysqL入门  Rpl_semi_sync_slave_trace_level=32表示用于开启半同步复制时的调试级别,宋体; Font-size: 14px;'>MysqL入门  2、主从执行命令show status like '%semi%';

MysqL入门  master

MysqL入门

MysqL入门  Rpl_semi_sync_master_status表示主服务器使用是异步还是半同步复制

MysqL入门  Rpl_semi_sync_master_clIEnt表示从服务器有多少个配置成半同步复制

MysqL入门  Rpl_semi_sync_master_yes_tx表示从服务器确认成功提交的数量

MysqL入门  Rpl_semi_sync_master_no_tx表示从服务器确认失败提交的数量

MysqL入门  slave:

MysqL入门

MysqL入门 

MysqL入门  Rpl_semi_sync_slave_status表示从服务器开启半同步复制

5、测试

MysqL入门  模拟slave挂掉,master等待10s仍没接收到反馈信号,则转为异步复制模式,继续执行

MysqL入门  首先同步创建数据库aa

MysqL入门  1、slave执行stop slave;关闭主从复制

MysqL入门  2、master在aa数据库中创建表tab1,没接收到反馈信号,等待十秒后(Rpl_semi_sync_master_timeout=1000等待超时),宋体; Font-size: 14px;'>MysqL入门    master:

MysqL入门    

MysqL入门    slave:

MysqL入门    

MysqL入门  3、master在数据库中再创建tab2,不需要等待反馈,直接执行

MysqL入门   【当反馈超时时,master将切换到异步复制模式.此时是异步模式,不需要等待】

MysqL入门    

MysqL入门  4、slave执行start slave,数据开始同步,建立tab1、tab2,反馈给master,并切换为半同步复制

MysqL入门   

MysqL入门  5、slave执行stop slave;关闭主从复制

MysqL入门  6、master在数据库中创建表tab3,此时需要等待10s,接收slave反馈信号;等待超时,切换为异步复制模式,宋体; Font-size: 14px;'>MysqL入门   【步骤4时,数据同步已经反馈给master,此时master已经是半同步复制模式】

MysqL入门   


 

6、总结

MysqL入门  半同步复制模式的性能和并发比异步复制模式低的,因为每次复制都要进行反馈,相比之下多了一个步骤.

MysqL入门  说实话我还是不太明白为什么半同步复制就可以保持数据的完整性呢?若是slave挂了,master还不是变回异步复制.和之前的全异步没什么区别.还有就是即使多了个信息反馈,但是反馈回来除了让master确认还有什么作用?假若slave挂了,没有反馈信息,那master还是没什么进一步的处理方法呀.

总结

以上是内存溢出为你收集整理的MYSQL数据库MySQL半同步复制全部内容,希望文章能够帮你解决MYSQL数据库MySQL半同步复制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160169.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)