一、基础
1.目前MySQL主要有三种复制方式
1)异步复制
2)半同步复制
3)增强半同步复制
推荐使用:对性能要求较高的推荐使用异步复制 ,如果运行的金融类业务推荐使用增强半同步复制,并使用ROW+GTID+5.7以上
1.1)异步复制
MySQL复制的默认方式
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值,然后恢复,保证了数据的完整性;
二、部署
异步复制环境:一主一从
主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)主库加载半同步复制插件