我正在寻找具有组复制功能的可用于生产的 mysql,想知道 v5.7 和 v8.0 组复制实现之间是否存在差异?
考虑到组复制和系统稳定性,一个版本是否比另一个版本更受欢迎和/或更稳定?
答案1
由于你具体询问组复制并声明可靠性至关重要, 这MySQL 8.0:复制中的新功能帖子专门讨论了此功能和 MySQL 8.0 的改进。我引用并参考了其中的具体部分,讨论了我认为在做出决定时需要考虑的重要因素。
MySQL 8.0:复制中的新功能
最近,MySQL 5.7 中发布了一项新技术 MySQL Group Replication,后来它也被包含在 MySQL 8 中。它在 MySQL 5.7 和 MySQL 8 中通过错误修复或新功能不断改进。但这并不是 MySQL 8 中唯一的新功能。还有更多。
MySQL 8 中改进的相关复制领域:
- 弹性:复制中的崩溃可恢复 DDL。
性能和效率
使复制高效且快速也是我们不断努力的方向。在 MySQL 8 中,有一组功能可以增强复制应用程序管道,以便能够以更快、更高效的方式接收更多负载。以下是重点:
事务在复制应用程序管道中花费的时间更少。接收方和应用方线程之间的同步机制得到改进,这意味着接收方和应用方线程之间的争用更少。此增强功能允许接收方和应用方线程并行执行更多工作,而不是在保护中继日志的锁中序列化自身。
更多交易同时应用。 通过依赖事务 WRITESET(大致是更改的行集),大大改进了并行应用程序。这还允许应用程序并行安装更改,即使对于来自复制的单线程工作负载也是如此。关于此功能有很多话要说,但您可以在此处了解更多详细信息。
可预测且持续的复制吞吐量微调流量控制。流量控制也得到了修改和改进。用户现在可以对组复制集群进行微调,以限制不平衡成员的影响,并使整个系统收敛到持续的吞吐量。
弹性
打个比方,MySQL 进行了一次大脑移植。它现在有了一个新的数据字典,除了其他改进之外,还带来了崩溃可恢复的字典更改。大致来说,这使得 DDL 具有原子性和可恢复性。此功能还扩展为包括 DDL 的二进制日志可恢复性。
在恢复时,也恢复我的原子 DDL!当服务器在崩溃后重新启动时,二进制日志和 InnoDB 会进行同步,以确定要恢复哪些事务以使两者达到一致状态。现在原子 DDL 恢复还会考虑二进制日志的内容,以便元数据和二进制日志保持一致。
在恢复时,也恢复我的原子 DDL......哦,还有我的申请人位置!如果在复制应用程序应用原子 DDL 时发生崩溃,则恢复将确保复制位置与元数据更改一致。