MySQL高可用实践
上QQ阅读APP看书,第一时间看更新

2.7 小 结

为了解决主从数据一致性的问题,MySQL早在5.5版本就引入了半同步复制。经过支持发送二进制日志事件和接收ACK的异步化,控制主库接收确认从库的反馈数量,二进制日志互斥锁改进等一系列的优化,使得半同步复制在保证数据一致性的同时,性能有了大幅提升。

在本章中,我们还展示了rpl_semi_sync_master_wait_point、sync_binlog、sync_relay_log这三个配置参数在MySQL 5.7中实现的源代码,详细分析了不同参数值对数据一致性产生的影响。在需要强一致性的场景中,sync_binlog和sync_relay_log都应设置为1,而rpl_semi_sync_master_wait_point应设置为WAIT_AFTER_SYNC。不过,这样做会牺牲一定的性能,因而需要权衡考虑。

最后,我们介绍了配置半同步复制的步骤,并且测试了主库提交事务、回滚事务对从库的影响,以及rpl_semi_sync_master_wait_no_slave参数所起的作用。通过设置相关的配置参数可以控制半同步复制的行为,同样通过查询相关的状态参数可以查看半同步复制的当前状态,它们被统称为半同步复制的管理接口。下一章将讲述一个与MySQL复制相关的重要主题——GTID。