文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  在组中组合不同的成员版本

20.8.1 在组中组合不同的成员版本

组复制根据与组复制插件捆绑的 MySQL 服务器版本进行版本控制。例如,如果成员运行的是 MySQL 9.0.0,那么这就是组复制插件的版本。要检查组成员上 MySQL 服务器的版本,请发出

SELECT MEMBER_HOST,MEMBER_PORT,MEMBER_VERSION FROM performance_schema.replication_group_members;
+-------------+-------------+----------------+
| member_host | member_port | member_version |
+-------------+-------------+----------------+
| example.com |	   3306     |   9.0.0	     |
+-------------+-------------+----------------+

有关了解 MySQL 服务器版本和选择版本的指南,请参阅第 2.1.2 节,“安装哪个 MySQL 版本和发行版”

为了获得最佳的兼容性和性能,组的所有成员都应该运行相同版本的 MySQL 服务器,因此也要运行相同版本的组复制。但是,在升级在线组的过程中,为了最大限度地提高可用性,您可能需要同时运行具有不同 MySQL 服务器版本的成员。根据 MySQL 版本之间所做的更改,在这种情况下,您可能会遇到不兼容的情况。例如,如果某个功能在主要版本之间已被弃用,则在组中组合版本可能会导致依赖于已弃用功能的成员失败。相反,如果在组中存在运行旧版 MySQL 的读写成员时,写入运行较新版 MySQL 的成员可能会导致缺少新版本中引入的功能的成员出现问题。

为了防止出现这些问题,组复制包含兼容性策略,使您能够安全地在同一组中组合运行不同版本 MySQL 的成员。成员应用这些策略来决定是正常加入组,还是以只读模式加入组,还是不加入组,具体取决于哪种选择会导致加入成员和组的现有成员安全运行。在升级方案中,每个服务器都必须离开组,进行升级,然后使用其新的服务器版本重新加入组。此时,成员将应用其新服务器版本的策略,这些策略可能与其最初加入组时应用的策略不同。

作为管理员,您可以指示任何服务器尝试加入任何组,方法是适当地配置服务器并发出START GROUP_REPLICATION语句。在您尝试将成员添加到组后,由加入成员本身决定并执行是加入还是不加入组,或者以只读模式加入组。加入成员接收有关当前组成员的 MySQL 服务器版本的信息,评估其与这些成员的兼容性,并应用其自己的 MySQL 服务器版本(而不是现有成员使用的策略)中使用的策略来决定它是否兼容。

加入成员在尝试加入组时应用的兼容性策略如下:

  • 如果成员运行的 MySQL 服务器版本与现有组成员运行的最低版本相同,则该成员将正常加入组。

  • 如果成员运行的 MySQL 服务器版本高于现有组成员运行的最低版本,则该成员将加入组,但保持只读模式。此行为仅在组以多主模式运行时才会产生差异,因为在以单主模式运行的组中,新添加的成员在任何情况下都默认为只读。

成员在检查兼容性时会考虑软件的完整 major.minor.release 版本。

在使用不同 MySQL 服务器版本的多主模式组中,组复制会自动管理成员的读写和只读状态。如果某个成员离开组,则运行现在最低版本的成员将自动设置为读写模式。当您使用group_replication_switch_to_multi_primary_mode()函数将以单主模式运行的组更改为以多主模式运行时,组复制会自动将成员设置为正确的模式。如果成员运行的 MySQL 服务器版本高于组中存在的最低版本,则它们会自动置于只读模式,而运行最低版本的成员则会置于读写模式。