加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.52wenzhou.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL 8.0新特性:彻底解决困扰运维的复制延迟问题,你信吗?

发布时间:2018-09-18 07:43:27 所属栏目:MySql教程 来源:雁南归
导读:技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 MySQL 8.0可以说是MySQL发展历史上里程碑式的一个版本,包括了多个重大更新,目前Generally Available版本已经已经发布,在此将介绍8.0版本中引入的一个重要的新特性基于WriteSet的

测试时通过Sysbench先在主机上执行100W条事务,然后开启Slave的复制线程,测试环境在Xeon E5-2699-V3 16核主机上执行,以下是测试结果:

MySQL 8.0新特性:彻底解决困扰运维的复制延迟问题,你信吗?

MySQL 8.0新特性:彻底解决困扰运维的复制延迟问题,你信吗?

MySQL 8.0新特性:彻底解决困扰运维的复制延迟问题,你信吗?

可以看到,在客户端线程比较少的时候WRITESET具有最好的性能,在只有一个连接时WRITESET_SESSION 和 COMMIT_ORDER差别不大。

五、结论

从MySQL Hight Availability的测试中可以看到,开启了基于WriteSet的事务依赖后,对Slave上RelayLog回放速度提升显著。Slave上的 RelayLog回放速度将不再依赖于Master上提交时的并行程度,使得Slave上可以发挥其最大的吞吐能力,这个特性在Slave上复制停止一段时间后恢复复制时尤其有效。

这个特性使得Slave上可能拥有比Master上更大的吞吐量,同时可能在保证事务依赖关系的情况下,在Slave上产生Master上没有产生过的提交场景,事务的提交顺序可能会在Slave上发生改变。

虽然在5.7的并行复制中就可能发生这种情况,不过在8.0中由于Slave上更高的并发能力,会使该场景更加常见。

通常情况下这不是什么大问题,不过如果在Slave上做基于Binlog的增量备份,可能就需要保证在Slave上与Master上一致的提交顺序,这种情况下可以开启slave_preserve_commit_order,这是一个5.7就引入的参数,可以保证Slave上并行回放的线程按RelayLog中写入的顺序Commit。

参考

  • http://jfg-mysql.blogspot.jp/2018/01/an-update-on-write-set-parallel-replication-bug-fix-in-mysql-8-0.html
  • http://jfg-mysql.blogspot.jp/2018/01/write-set-in-mysql-5-7-group-replication.html
  • https://mysqlhighavailability.com/improving-the-parallel-applier-with-writeset-based-dependency-tracking/ 

【编辑推荐】

  1. 静默错误:Oracle数据库是如何应对和处理的 ?
  2. 【工具】数据库设计中的6个最佳实践步骤
  3. 为什么MySQL存储过程、函数和触发器对性能不好
  4. SQL Server与MySQL中排序规则与字符集相关知识的一点总结
  5. 面试中有哪些经典的数据库问题?
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读