Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Combining Different Member Versions in a Group

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

组复制根据 MySQL Server 版本来版本化,该版本是 Group Replication 插件与 MySQL Server 一起捆绑的版本。例如,如果成员正在运行 MySQL 8.4.0,那么该就是 Group Replication 插件的版本。要检查组成员上的 MySQL Server 版本,请执行:

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

关于理解 MySQL Server 版本和选择版本的指导,请见第 2.1.2 节,“Which MySQL Version and Distribution to Install”

为了确保最佳兼容性和性能,组中的所有成员都应该运行相同版本的 MySQL 服务器和 Group Replication。然而,在在线组升级过程中,您可能需要在同一时间运行具有不同 MySQL 服务器版本的成员,以最大化可用性。在这种情况下,您可能会遇到不兼容的问题。例如,如果某个功能在主要版本之间被弃用,那么组合这些版本可能会导致依赖于弃用功能的成员失败。反之,写入运行 newer MySQL 版本的成员,而有读写成员在组中运行 older MySQL 版本可能会导致缺乏新版本引入的函数的成员出现问题。

为了防止这些问题,Group Replication 包含了兼容性策略,可以让您安全地将运行不同 MySQL 版本的成员组合在同一个组中。成员根据这些策略决定是否正常加入组、只读模式加入组还是不加入组,这取决于哪种选择结果使得加入成员和现有组成员的操作都安全。在升级场景中,每个服务器必须离开组、升级并重新加入组,以其新的服务器版本。到这个时候,成员将应用其新服务器版本的策略,这可能与它最初加入组时应用的策略不同。

作为管理员,您可以通过配置服务器并发出START GROUP_REPLICATION语句,指示任何服务器尝试加入任何组。加入成员自己决定是否加入组、或以只读模式加入组,这个决策和实施由加入成员本身执行。加入成员接收当前组成员的MySQL Server版本信息,对其自身与这些成员的兼容性进行评估,并根据自己的MySQL Server版本(不是现有成员使用的政策)来决定是否兼容。

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

  • 如果加入成员运行与现有组成员中最低版本相同的MySQL Server版本,它将正常地加入组。

  • 如果加入成员运行高于现有组成员中最低版本的MySQL Server版本,它将加入组,但保持只读模式。这在组运行在多主模式时才会产生差异,因为在单主模式下,新添加的成员默认情况下总是以只读模式。

成员在检查兼容性时,将考虑整个major.minor.release版本号。

在具有不同MySQL Server版本的多主模式组中,Group Replication 自动管理成员的读写和只读状态。如果一个成员离开组,运行当前最低版本的成员将自动设置为读写模式。将单主模式组更改为多主模式时,使用group_replication_switch_to_multi_primary_mode()函数,Group Replication 将自动设置成员到正确的模式。运行高版本MySQL Server的成员将自动设置为只读模式,而运行最低版本的成员将设置为读写模式。