MySQL半同步复制与加强半同步复制详解及安装

1、基础mysql

1.目前MySQL主要有三种复制方式sql

1)异步复制vim

2)半同步复制服务器

3)加强半同步复制异步

推荐使用:对性能要求较高的推荐使用异步复制 ,若是运行的金融类业务推荐使用加强半同步复制,并使用ROW+GTID+5.7以上性能

1.1)异步复制测试

MySQL复制的默认方式spa

 

2.1)半同步复制的优缺点插件

rpl_semi_sync_master_wait_point=after_commit日志

 缺点1: 幻读

当用户发起一个事务,该事务已经写入redo日志和binlog日志,但该事务还没写入从库,此时处在waiting slave dump处,此时另外一个用户能够读取到这条数据,而他本身却不能;

 

缺点2:数据丢失

一个事务在waiting slave dump处crash后,主库将比从库多一条数据

 

疑问:此时若是主从复制恢复后,该数据时候能够正常同步到从服务器?(未测试!!)

 

3.1)加强半同步复制

rpl_semi_rsync_master_wait_point=after_sync

改善1:解决幻读

当用户发起一个事务,该事务写入二进制后,便向从库进行同步,此时其余用户没法读取到该数据,解决了幻读

 

改善2:解决数据丢失

一个事务在waiting slave dump处crash掉后,能够经过观察从库上是否存在主库的last gtid值,若是存在,这条数据正常恢复,若是不存在则删除主库的那条多余的GTID值,而后恢复,保证了数据的完整性;

 

2、部署

异步复制环境:一主一从

主IP:192.168.20.206

从IP:192.168.20.212

 

须要3个步骤:

1.给主库加载半同步复制插件,并件修改主库的my.cnf参数,

2.给从库加载半同步复制插,并件修改从库的my.cnf参数,

3.在从库中执行使用stop salve io_thread 、start slave io_thread命令搞定

 

1.1)主库加载半同步复制插件

install plugin rpl_semi_sync_master soname 'semisync_master.so';
 
1.2)主库开启半同步复制模式
set global rpl_semi_sync_master_enabled=1;
set global rpl_semi_sync_master_timeout=1000;
 
2.3)主库修改my.cnf文件
 
vim /etc/my.cnf
[mysqld]
###:for replcation
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
 
 
2.1)从库加载半同步复制插件
install plugin rpl_semi_sync_SLAVE soname 'semisync_slave.so';
 
2.2)从库开启半同步复制模式
set global rpl_semi_sync_slave_enabled=1;
 
2.3)从库修改my.cnf文件
 
vim /etc/my.cnf
[mysqld]
###:for replcation
rpl_semi_sync_slave_enabled=1
 
3.3)在从库中执行使用stop salve io_thread 、start slave io_thread;
stop slave io_thread;
start slave io_thread;
 
 
 
 
半同步复制监控命令:
show plugins;
show global status like '%semi%';
show global variables like '%semi%';
相关文章
相关标签/搜索