mysql5.7半自动同步设置【转】
mysql的主从复制主要有3种模式:
a..主从同步复制:数据完整性好,但是性能消耗高
b.主从异步复制:性能消耗低,但是容易出现主从数据唯一性问题
c.主从半自动复制:介于上面两种之间。既能很好的保持完整性,又能提高性能
所以前面文章配置完主从之后,想改成半自动复制,下面是步骤:
1.主从的各个节点都要安装半自动复制插件,方法是登陆mysql执行一下脚本:
主库:
install plugin rpl_semi_sync_master soname 'semisync_master.so';
从库:
INSTALL PLUGIN rpl_semi_sync_slave SONAME
'semisync_slave.so'
;
执行完可以查看安装状态,没有启动,所以‘rpl_semi_sysnc_master_enabled’是‘OFF’
show global variables like 'rpl%';
2.在主从数据库的my.cnf里面加入下面:
在Master和Slave的my.cnf中编辑:
# On Master
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000 #此单位是毫秒
#可以不写,这里只为演示,默认就是AFTER_SYNC
#rpl_semi_sync_master_wait_point=AFTER_SYNC
# On Slave
[mysqld]
rpl_semi_sync_slave_enabled=1
新版本的semi sync 增加了rpl_semi_sync_master_wait_point参数 来控制半同步模式下 主库在返回给会话事务成功之前提交事务的方式。
该参数有两个值:
-
AFTER_COMMIT(5.6默认值)
master将每个事务写入binlog ,传递到slave 刷新到磁盘(relay log),同时主库提交事务。master等待slave 反馈收到relay log,只有收到ACK后master才将commit OK结果反馈给客户端。
-
AFTER_SYNC(5.7默认值,但5.6中无此模式)
master 将每个事务写入binlog , 传递到slave 刷新到磁盘(relay log)。master等待slave 反馈接收到relay log的ack之后,再提交事务并且返回commit OK结果给客户端。 即使主库crash,所有在主库上已经提交的事务都能保证已经同步到slave的relay log中。
因此5.7引入了after_sync模式,带来的主要收益是解决after_commit导致的master crash主从间数据不一致问题,因此在引入after_sync模式后,所有提交的数据已经都被复制,故障切换时数据一致性将得到提升。
3.查看状态
showstatus like "%rpl_semi%";
注意看RPL_SEMI_SYNC_MASTER_CLIENTS 后面的value代表链接了介个从库
转自
http://blog.csdn.net/yuanfen99xia/article/details/51837044
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2016-12-11 shell命令一行代码搞定【转】
2016-12-11 运维必备:Oracle自备份精简教程(linux及win)
2016-12-11 Ansible11:变量详解【转】
2016-12-11 Ansible9:条件语句【转】
2016-12-11 Ansible10:Playbook的角色与包含【转】
2016-12-11 Ansible8:Playbook循环【转】
2016-12-11 Ansible7:Playbook常用模块【转】