Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Group Replication System Variables

20.9.1 组复制系统变量

本节列出了组复制插件的系统变量。

每个组复制系统变量的名称都以 group_replication_ 作为前缀。

Note

InnoDB 集群使用组复制,但组复制系统变量的默认值可能与本节中记录的默认值不同。例如,在 InnoDB 集群中,group_replication_communication_stack 的默认值为 MYSQL,而不是 XCOM,如组复制的默认实现所示。

有关更多信息,请参阅 MySQL InnoDB 集群

某些系统变量在组复制组成员上,包括一些组复制特定的系统变量和一些通用系统变量,是组范围的配置设置。这些系统变量必须在所有组成员上具有相同的值,并且需要组的完全重新启动(由具有 group_replication_bootstrap_group=ON 的服务器引导)以使值更改生效。有关重新启动组的说明,请参阅 第 20.5.2 节,“重新启动组”

如果正在运行的组具有某个组范围配置设置的值,并且加入的成员具有不同的值,则加入的成员无法加入组,直到值被更改为匹配。如果组具有某个系统变量的值,并且加入的成员不支持该系统变量,则无法加入组。

以下系统变量是组范围配置设置:

组范围配置设置不能通过通常的方法在组复制运行时更改。然而,从 MySQL 8.0.16 开始,您可以使用 group_replication_switch_to_single_primary_mode()group_replication_switch_to_multi_primary_mode() 函数更改 group_replication_single_primary_modegroup_replication_enforce_update_everywhere_checks 的值,而组仍在运行中。有关更多信息,请参阅 第 20.5.1.2 节,“更改组模式”

大多数组复制系统变量可以在不同的组成员上具有不同的值。对于以下系统变量,建议在所有组成员上设置相同的值,以避免事务回滚、消息传递失败或消息恢复失败:

大多数组复制系统变量都是动态的,可以在服务器运行时更改其值。然而,在大多数情况下,变化只有在停止和重新启动组复制后生效,使用 STOP GROUP_REPLICATION 语句,后跟 START GROUP_REPLICATION 语句。以下系统变量的更改无需停止和重新启动组复制:

当您更改任何Group Replication系统变量的值时,请注意,如果在每个成员上同时停止Group Replication,例如使用STOP GROUP_REPLICATION语句或系统shutdown,那么组必须像第一次启动那样重新启动。有关如何安全地执行此操作的说明,请参见第20.5.2节,“重新启动组”。在组范围内的配置设置中,这是必需的,但如果您正在更改其他设置,请尝试确保至少有一个成员一直在运行。

Important

服务器系统变量,特定于Group Replication插件,连同它们的功能或目的描述,列举如下:

  • group_replication_advertise_recovery_endpoints

    Command-Line Format --group-replication-advertise-recovery-endpoints=value
    System Variable group_replication_advertise_recovery_endpoints
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value DEFAULT

    该系统变量的值可以在Group Replication运行时更改。更改立即生效于成员。但是,已经收到以前值的加入成员继续使用该值。只有在值更改后加入的成员才会收到新值。

    group_replication_advertise_recovery_endpoints指定加入成员如何与现有成员建立连接,以便进行分布式恢复。该连接用于远程克隆操作和状态传输从donor的二进制日志。

    值为DEFAULT,这是默认设置,意味着加入成员使用现有成员的标准SQL客户端连接,如MySQL Server的hostnameport系统变量所指定。如果指定了替代端口号由report_port系统变量,那么使用该端口号。性能模式表replication_group_members显示该连接的地址和端口号在MEMBER_HOSTMEMBER_PORT字段中。这是MySQL 8.0.20之前版本的组成员行为。

    相比DEFAULT,您可以指定一个或多个分布式恢复端点,现有成员将其广播给加入成员,以便它们使用。提供分布式恢复端点让管理员可以单独控制分布式恢复流量,而不是普通的MySQL客户端连接到组成员。加入成员将尝试使用列表上的每个端点,以便连接到现有成员。

    指定分布式恢复端点作为逗号分隔的IP地址和端口号列表,例如:

    group_replication_advertise_recovery_endpoints= "127.0.0.1:3306,127.0.0.1:4567,[::1]:3306,localhost:3306"

    IPv4和IPv6地址和主机名可以在任何组合中使用。IPv6地址必须在方括号中指定。主机名必须解析为本地IP地址。通配符地址格式不能使用,也不能指定空列表。请注意,标准SQL客户端连接不会自动包含在分布式恢复端点列表中。如果您想使用它作为端点,必须明确地将其包含在列表中。

    有关如何选择分布式恢复端点的IP地址和端口,以及加入成员如何使用它们的详细信息,请参阅第20.5.4.1.1节,“选择分布式恢复端点的地址”。总的来说,要求如下:

  • group_replication_allow_local_lower_version_join

    Command-Line Format --group-replication-allow-local-lower-version-join[={OFF|ON}]
    System Variable group_replication_allow_local_lower_version_join
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    可以在Group Replication运行时更改该系统变量的值,但更改只在停止并重新启动Group Replication后生效。

    group_replication_allow_local_lower_version_join允许当前服务器加入组,即使它运行的MySQL Server版本低于组中的其他成员。默认情况下,OFF,服务器不允许加入复制组,如果它们运行的版本低于现有组成员。这种标准策略确保组中的所有成员能够交换消息和应用事务。注意,MySQL 8.0.17或更高版本的成员在检查其兼容性时考虑发行版本的补丁版本,而MySQL 8.0.16或更低版本或MySQL 5.7,只考虑主要版本。

    仅在以下情况下将group_replication_allow_local_lower_version_join设置为ON

    • 在紧急情况下,需要将服务器添加到组中以提高组的容错能力,只有旧版本可用。

    • 您想回滚一个或多个复制组成员的升级,而不需要关闭整个组并重新启动它。

    Warning

    将该选项设置为ON不会使新成员与组兼容,并允许它加入组而不进行任何保护措施,以防止现有成员的不兼容行为。为了确保新成员的正确操作,需要采取以下两种预防措施:两者

    1. 在服务器运行较低版本加入组之前,停止该服务器上的所有写操作。

    2. 从服务器运行较低版本加入组的那一刻起,停止组中的其他服务器上的所有写操作。

    如果不采取这些预防措施,运行较低版本的服务器可能会遇到困难并终止错误。

  • group_replication_auto_increment_increment

    Command-Line Format --group-replication-auto-increment-increment=#
    System Variable group_replication_auto_increment_increment
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 7
    Minimum Value 1
    Maximum Value 65535

    该系统变量应该在所有组成员上具有相同的值。您不能在Group Replication运行时更改该系统变量的值。您必须停止Group Replication,改变系统变量的值,然后重新启动Group Replication,在每个组成员上。 在此过程中,系统变量的值在组成员之间可能不同,但是一些事务可能会回滚。

    group_replication_auto_increment_increment 确定了在该服务器实例上执行的事务中自动递增列的间隔值。添加间隔避免了组成员上的写入操作选择重复的自动递增值,从而导致事务回滚。默认值为7,表示可用值的数量和最大复制组大小(9个成员)之间的平衡。如果您的组有更多或更少的成员,可以在启动Group Replication之前将该系统变量设置为匹配预期的组成员数量。

    Important

    设置 group_replication_auto_increment_incrementgroup_replication_single_primary_modeON 时无效。

    当Group Replication在服务器实例上启动时,服务器系统变量 auto_increment_increment 的值将被更改为该值,服务器系统变量 auto_increment_offset 的值将被更改为服务器ID。这些更改将在Group Replication停止时被还原。这些更改仅在 auto_increment_incrementauto_increment_offset 都具有默认值1时进行。如果它们的值已经从默认值修改,Group Replication不会修改它们。在MySQL 8.0中,当Group Replication处于单一主模式时,也不会修改这些系统变量,其中只有一个服务器写入。

  • group_replication_autorejoin_tries

    Command-Line Format --group-replication-autorejoin-tries=#
    System Variable group_replication_autorejoin_tries
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 3
    Minimum Value 0
    Maximum Value 2016

    该系统变量的值可以在Group Replication运行时更改,并立即生效。当前值是在出现问题时读取的。

    group_replication_autorejoin_tries 指定了成员在被驱逐或无法与大多数组成员联系时尝试自动重新加入组的次数。当成员的驱逐或不可达大多数超时达到时,它将尝试重新加入(使用当前插件选项值),然后继续尝试重新加入,直到达到指定的尝试次数。每次尝试重新加入失败后,成员将等待5分钟,然后再次尝试。如果指定的尝试次数用完而成员未重新加入或未停止,成员将执行 group_replication_exit_state_action 系统变量指定的操作。

    在MySQL 8.0之前,默认设置为0,表示成员不尝试自动重新加入。从MySQL 8.0.21开始,默认设置为3,表示成员自动尝试重新加入组3次,每次尝试之间等待5分钟。您可以指定最多2016次尝试。

    在自动重新加入尝试期间和之间,成员将保持超级只读模式,不接受写入,但仍可以在成员上执行读取,随着时间的推移,读取可能变得陈旧。如果您不能容忍任何时间的陈旧读取,设置group_replication_autorejoin_tries为 0。有关自动重新加入功能的更多信息,以及选择此选项值时的考虑因素,请参阅第 20.7.7.3 节,“自动重新加入”

  • group_replication_bootstrap_group

    Command-Line Format --group-replication-bootstrap-group[={OFF|ON}]
    System Variable group_replication_bootstrap_group
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    group_replication_bootstrap_group 配置服务器以引导组。这系统变量只能在一个服务器上设置,只能在第一次启动组或重新启动整个组时设置。在组引导后,将其设置为 OFF。它应该在动态设置和配置文件中都设置为 OFF。在组正在运行时启动两个服务器或重新启动一个服务器时,这个选项设置可能会导致人工的脑裂情况,其中两个独立的组具有相同的名称。

    有关首次引导组的说明,请参阅第 20.2.1.5 节,“引导组”。有关安全引导组的说明,请参阅第 20.5.2 节,“重新启动组”

  • group_replication_clone_threshold

    Command-Line Format --group-replication-clone-threshold=#
    System Variable group_replication_clone_threshold
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 9223372036854775807
    Minimum Value 1
    Maximum Value 9223372036854775807
    Unit 事务

    可以在 Group Replication 运行时更改该系统变量的值,但更改只在停止并重新启动 Group Replication 后生效。

    group_replication_clone_threshold 指定了分布式恢复过程中状态传输到加入成员时的交易差距阈值。如果加入成员和合适的捐赠者之间的交易差距超过阈值,Group Replication 将开始分布式恢复过程中的远程克隆操作。如果交易差距低于阈值,或者远程克隆操作不可行,Group Replication 将直接从捐赠者的二进制日志中传输状态。

    Warning

    不要在活动组中使用低的 group_replication_clone_threshold 设置。如果在远程克隆操作期间组中发生了大量交易,加入成员可能会在重新启动后再次触发远程克隆操作,并可能会无限期地继续下去。为避免这种情况,请确保将阈值设置为高于组中预期发生的交易数量。

    要使用此功能,捐赠者和加入成员都必须事先设置以支持克隆。有关说明,请参阅第 20.5.4.2 节,“分布式恢复中的克隆”。当远程克隆操作执行时,Group Replication 将其管理,包括所需的服务器重新启动,前提是group_replication_start_on_boot=ON 已设置。如果没有,您必须手动重新启动服务器。远程克隆操作将替换加入成员上的现有数据字典,但 Group Replication 会检查并且不会继续执行,如果加入成员具有不在其他组成员上的其他事务,因为这些事务将被克隆操作擦除。

    默认设置(即事务在 GTID 中的最大序列号)意味着从捐赠者的二进制日志中的状态传输几乎总是尝试,而不是克隆。然而,请注意,Group Replication 总是尝试执行克隆操作,无论您的阈值如何,如果从捐赠者的二进制日志中的状态传输是不可能的,例如,因为加入成员所需的事务不在任何现有组成员的二进制日志中。如果您不想在复制组中使用克隆,请不要在成员上安装克隆插件。

  • group_replication_communication_debug_options

    Command-Line Format --group-replication-communication-debug-options=value
    System Variable group_replication_communication_debug_options
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value GCS_DEBUG_NONE
    Valid Values

    GCS_DEBUG_NONE

    GCS_DEBUG_BASIC

    GCS_DEBUG_TRACE

    XCOM_DEBUG_BASIC

    XCOM_DEBUG_TRACE

    GCS_DEBUG_ALL

    该系统变量的值可以在 Group Replication 运行时更改,并且更改立即生效。

    group_replication_communication_debug_options 配置了 Group Replication 组件的调试消息级别,例如 Group Communication System (GCS) 和组通信引擎 (XCom,Paxos 变体)。调试信息存储在数据目录中的 GCS_DEBUG_TRACE 文件中。

    可用的选项可以组合,指定为字符串。以下选项可用:

    • GCS_DEBUG_NONE 禁用 GCS 和 XCom 的所有调试级别。

    • GCS_DEBUG_BASIC 在 GCS 中启用基本调试信息。

    • GCS_DEBUG_TRACE 在 GCS 中启用跟踪信息。

    • XCOM_DEBUG_BASIC 在 XCom 中启用基本调试信息。

    • XCOM_DEBUG_TRACE 在 XCom 中启用跟踪信息。

    • GCS_DEBUG_ALL 启用 GCS 和 XCom 的所有调试级别。

    将调试级别设置为 GCS_DEBUG_NONE 只有在没有其他选项时才生效。将调试级别设置为 GCS_DEBUG_ALL 将覆盖所有其他选项。

  • group_replication_communication_max_message_size

    Command-Line Format --group-replication-communication-max-message-size=#
    System Variable group_replication_communication_max_message_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10485760
    Minimum Value 0
    Maximum Value 1073741824
    Unit 字节

    该系统变量在所有组成员上应该具有相同的值。您不能在 Group Replication 运行时更改该系统变量的值。您必须停止 Group Replication,改变系统变量的值,然后重新启动 Group Replication,在每个组成员上。 在此过程中,该系统变量的值在组成员之间可能不同,但是一些事务可能会回滚。

    组复制通信最大消息大小 指定了组复制通信的最大消息大小。超过此大小的消息将自动分割成碎片,分别发送并由接收方重新组装。有关更多信息,请参阅 第 20.7.5 节,“消息碎片化”

    默认情况下,最大消息大小为 10485760 字节(10 MiB),这意味着从 MySQL 8.0.16 版本开始,默认情况下使用碎片化。允许的最大值与 副本最大允许数据包 系统变量的最大值相同,为 1073741824 字节(1 GB)。组复制通信最大消息大小 设置必须小于 副本最大允许数据包 设置,因为应用程序线程无法处理大于最大允许数据包大小的消息碎片。要关闭碎片化,请将 组复制通信最大消息大小 设置为零。

    为了使复制组成员使用碎片化,组的通信协议版本必须是 MySQL 8.0.16 或更高版本。使用 组复制获取通信协议() 函数查看组的通信协议版本。如果使用的是较低版本,组成员将不分割消息。你可以使用 组复制设置通信协议() 函数将组的通信协议设置为较高版本,如果所有组成员都支持该版本。有关更多信息,请参阅 第 20.5.1.4 节,“设置组的通信协议版本”

  • 组复制通信堆栈

    System Variable 组复制通信堆栈
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value XCOM
    Valid Values

    XCOM

    MYSQL

    Note

    该系统变量实际上是一个组全局配置设置,需要对复制组进行完整的重新启动以使更改生效。

    组复制通信堆栈 指定是否使用 XCom 通信堆栈或 MySQL 通信堆栈来建立组成员之间的通信连接。XCom 通信堆栈是组复制的实现,始终用于 MySQL 8.0.27 版本之前的版本,不支持身份验证或网络命名空间。MySQL 通信堆栈是 MySQL 服务器的本机实现,支持身份验证和网络命名空间,并且可以立即访问新安全功能。所有组成员必须使用相同的通信堆栈。

    当您使用 MySQL 的通信堆栈代替 XCom 的时候,MySQL 服务器使用自己的身份验证和加密协议来建立组成员之间的每个连接。

    Note

    如果您使用 InnoDB 集群,默认值为 组复制通信堆栈MYSQL

    有关更多信息,请参阅 MySQL InnoDB 集群

    当您设置组使用 MySQL 的通信堆栈时,需要进行额外的配置;请参阅 第 20.6.1 节,“通信堆栈用于连接安全管理”

    组复制通信栈 是一个组范围的配置设置,必须在所有组成员上保持一致。然而,这不是组复制自己的检查组范围配置设置的一部分。具有不同值的成员无法与其他成员通信,因为通信协议不兼容,因此无法交换配置设置信息。

    这意味着,虽然系统变量的值可以在组复制运行时更改,并在重新启动组复制后生效,但成员仍然无法重新加入组,直到所有成员上的设置都被更改。你必须停止所有成员上的组复制,然后在所有成员上更改系统变量的值,然后才能重新启动组。由于所有成员都被停止,因此需要完全重新启动组(由服务器引导,group_replication_bootstrap_group=ON)。要迁移到另一个通信栈,请参阅 第 20.6.1 节,“通信栈用于连接安全管理”

  • 组复制组件停止超时

    Command-Line Format --group-replication-components-stop-timeout=#
    System Variable 组复制组件停止超时
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 300
    Minimum Value 2
    Maximum Value 31536000
    Unit

    该系统变量的值可以在组复制运行时更改,但更改仅在停止并重新启动组复制后生效。

    组复制组件停止超时 指定了组复制在关闭过程中等待每个模块完成进程的时间,以秒为单位。组件超时在 STOP GROUP_REPLICATION 语句发出后生效,自动重新加入。

    超时用于解决组复制组件无法正常关闭的情况,例如成员被逐出组时或 MySQL Enterprise Backup 持有全局锁时。在这种情况下,成员无法停止 applier 线程或完成分布式恢复过程以重新加入。STOP GROUP_REPLICATION 不会完成,直到情况解决(例如,锁被释放)或组件超时到期并关闭模块,ardless of their status。

    在 MySQL 8.0.27 之前,默认组件超时为 31536000 秒,即 365 天。使用这种设置,组件超时不会帮助解决上述情况,因此建议使用较低的设置。从 MySQL 8.0.27 开始,默认值为 300 秒,以便在 5 分钟内关闭组复制组件,允许成员重新启动并重新加入。

  • 组复制压缩阈值

    Command-Line Format --group-replication-compression-threshold=#
    System Variable 组复制压缩阈值
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1000000
    Minimum Value 0
    Maximum Value 4294967295
    Unit 字节

    阈值值以字节为单位,以上的消息将被压缩并发送到组成员之间。如果该系统变量设置为零,则压缩被禁用。组复制压缩阈值 的值应该在所有组成员上保持一致。

    组复制使用LZ4压缩算法来压缩组中的消息。请注意,LZ4压缩算法的最大支持输入大小为2113929216字节。这限制低于group_replication_compression_threshold系统变量的最大可能值,该值与XCom接受的最大消息大小相匹配。使用LZ4压缩算法,不要将group_replication_compression_threshold设置为大于2113929216字节的值,因为启用消息压缩时,超过该大小的交易无法提交。

    有关更多信息,请参阅第20.7.4节,“消息压缩”

  • group_replication_consistency

    Command-Line Format --group-replication-consistency=value
    System Variable group_replication_consistency
    Scope 全局、会话
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value EVENTUAL
    Valid Values

    EVENTUAL

    BEFORE_ON_PRIMARY_FAILOVER

    BEFORE

    AFTER

    BEFORE_AND_AFTER

    可以在组复制运行时更改该系统变量的值。group_replication_consistency是服务器系统变量,而不是组复制插件特定变量,因此不需要重新启动组复制以使更改生效。更改会话值立即生效,全球值更改对新会话生效。需要GROUP_REPLICATION_ADMIN权限来更改该系统变量的全局设置。

    group_replication_consistency控制组提供的交易一致性保证。可以全局或每个交易配置一致性。group_replication_consistency还配置了单个主组中新选出的主服务器使用的防护机制。该变量的效果必须考虑到只读(RO)和读写(RW)交易。

    • EVENTUAL

      RO和RW交易都不等待前面的交易应用程序执行。这是组复制添加该变量之前的行为。RW交易不等待其他成员应用交易。这意味着交易可能在一个成员上外部化之前其他成员没有应用程序。这也意味着在主服务器故障转移时,新的主服务器可以在旧主服务器交易应用程序之前接受新的RO和RW交易。RO交易可能会导致过时的值,RW交易可能会导致回滚冲突。

    • BEFORE_ON_PRIMARY_FAILOVER

      新的RO或RW交易在新选出的主服务器上应用backlog时被hold(不应用),直到所有backlog都被应用。这确保了在主服务器故障转移时,客户端总是看到主服务器上的最新值。这保证了一致性,但客户端必须能够处理在应用backlog时的延迟。通常这种延迟应该是最小的,但取决于backlog的大小。

    • BEFORE

      RW交易等待所有前面的交易完成,然后应用。RO交易等待所有前面的交易完成,然后执行。这确保了交易读取最新的值,只影响交易的延迟。这减少了每个RW交易的同步开销,通过确保同步仅用于RO交易。这一致性级别还包括BEFORE_ON_PRIMARY_FAILOVER提供的一致性保证。

    • AFTER

      RW 事务等待直到其更改被应用于所有其他成员。这一值对 RO 事务没有影响。此模式确保当事务在本地成员上提交时,任何后续事务读取写入的值或更近的值在任何组成员上。使用此模式与主要用于 RO 操作的组,以确保应用的 RW 事务在提交后在所有地方生效。这可以由应用程序确保后续读取获取最新数据,包括最新的写入操作。这减少了每个 RO 事务的同步开销,通过仅在 RW 事务上使用同步。

    • BEFORE_AND_AFTER

      RW 事务等待 1) 所有前一个事务完成之前被应用和 2) 直到其更改被应用于其他成员。RO 事务等待所有前一个事务完成之前执行。这一一致性级别还包括 BEFORE_ON_PRIMARY_FAILOVER 提供的一致性保证。

    有关更多信息,请参阅 第 20.5.3 节,“事务一致性保证”

  • group_replication_enforce_update_everywhere_checks

    Command-Line Format --group-replication-enforce-update-everywhere-checks[={OFF|ON}]
    System Variable group_replication_enforce_update_everywhere_checks
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF
    Note

    该系统变量是一个组全局配置设置,需要对复制组进行完整的重新启动以使更改生效。

    group_replication_enforce_update_everywhere_checks 启用或禁用多主更新处处的一致性检查。默认情况下,检查被禁用。在单主模式下,该选项必须在所有组成员上禁用。在多主模式下,当该选项启用时,语句将被检查以确保它们与多主模式兼容:

    • 如果事务在 SERIALIZABLE 隔离级别下执行,那么其提交将在与组同步时失败。

    • 如果事务对具有级联约束的表执行,那么事务将在与组同步时失败提交。

    该系统变量是一个组全局配置设置。它必须在所有组成员上具有相同的值,不能在 Group Replication 运行时更改,并且需要对组进行完整的重新启动(通过服务器引导 group_replication_bootstrap_group=ON)以使值更改生效。有关安全引导组的说明,请参阅 第 20.5.2 节,“重新启动组”

    如果组具有该系统变量的值,并且加入成员具有不同的值,那么加入成员不能加入组,直到值被更改以匹配。如果组成员具有该系统变量的值,并且加入成员不支持该系统变量,那么它不能加入组。

    从 MySQL 8.0.16 开始,您可以使用 group_replication_switch_to_single_primary_mode()group_replication_switch_to_multi_primary_mode() 函数来更改该系统变量的值,而不需要重新启动组。有关更多信息,请参阅 第 20.5.1.2 节,“更改组模式”

  • group_replication_exit_state_action

    Command-Line Format --group-replication-exit-state-action=value
    System Variable group_replication_exit_state_action
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value READ_ONLY
    Valid Values

    服务器中止

    离线模式

    只读

    该系统变量的值可以在Group Replication运行时更改,并且更改立即生效。该系统变量的当前值是在出现问题时读取的,以便采取相应的行为。

    group_replication_exit_state_action 配置了当服务器实例意外离开组时Group Replication的行为,例如在遇到应用程序错误、丢失多数或被其他组成员驱逐时。该成员离开组的超时期限由 group_replication_unreachable_majority_timeout 系统变量设置,而怀疑超时期限由 group_replication_member_expel_timeout 系统变量设置。请注意,被驱逐的组成员不知道自己被驱逐,直到它重新连接到组时,或者成员对自己提出怀疑并将自己驱逐。

    当组成员由于怀疑超时或丢失多数而被驱逐时,如果成员设置了 group_replication_autorejoin_tries 系统变量以指定自动重新加入尝试次数,它首先在超级只读模式下进行指定次数的尝试,然后按照 group_replication_exit_state_action 指定的操作。自动重新加入尝试不适用于应用程序错误,因为这些错误不可恢复。

    group_replication_exit_state_action 设置为 只读,如果成员意外离开组或耗尽自动重新加入尝试次数,实例将 MySQL 切换到超级只读模式(通过将系统变量 super_read_only 设置为 ON)。只读 退出操作是 MySQL 8.0 版本之前的默认行为,从 MySQL 8.0.16 版本开始重新成为默认行为。

    group_replication_exit_state_action 设置为 离线模式,如果成员意外离开组或耗尽自动重新加入尝试次数,实例将 MySQL 切换到离线模式(通过将系统变量 offline_mode 设置为 ON)。在这种模式下,连接的客户端用户在下一个请求时断开连接,连接不再被接受,除非客户端用户拥有 CONNECTION_ADMIN 权限(或已弃用的 SUPER 权限)。Group Replication 也将系统变量 super_read_only 设置为 ON,因此客户端即使拥有 CONNECTION_ADMINSUPER 权限,也无法进行更新。离线模式 退出操作从 MySQL 8.0.18 版本开始可用。

    group_replication_exit_state_action 设置为 服务器中止,如果成员意外离开组或耗尽自动重新加入尝试次数,实例将关闭 MySQL。该设置是从 MySQL 8.0.12 版本到 MySQL 8.0.15 版本的默认行为。

    Important

    如果在成员成功加入组之前发生故障,则指定的退出操作 不采取。这是在本地配置检查期间发生故障,或者成员的配置与组的配置不匹配的情况下。在这些情况下,super_read_only 系统变量保持其原始值,连接继续被接受,服务器不关闭 MySQL。为了确保服务器在 Group Replication 未启动时不能接受更新,我们因此建议在服务器的配置文件中设置 super_read_only=ON,Group Replication 在成功启动后将其更改为 OFF。这项安全措施特别重要,当服务器配置为在服务器启动时启动 Group Replication (group_replication_start_on_boot=ON),但它也适用于手动使用 START GROUP_REPLICATION 命令启动 Group Replication 时。

    有关使用此选项的更多信息,以及退出操作采取的情况的完整列表,请参阅 第 20.7.7.4 节,“退出操作”

  • group_replication_flow_control_applier_threshold

    Command-Line Format --group-replication-flow-control-applier-threshold=#
    System Variable group_replication_flow_control_applier_threshold
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 25000
    Minimum Value 0
    Maximum Value 2147483647
    Unit 事务

    可以在 Group Replication 运行时更改此系统变量的值,并且更改立即生效。

    group_replication_flow_control_applier_threshold 指定了 applier 队列中等待的事务数,以触发流控制。

  • group_replication_flow_control_certifier_threshold

    Command-Line Format --group-replication-flow-control-certifier-threshold=#
    System Variable group_replication_flow_control_certifier_threshold
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 25000
    Minimum Value 0
    Maximum Value 2147483647
    Unit 事务

    可以在 Group Replication 运行时更改此系统变量的值,并且更改立即生效。

    group_replication_flow_control_certifier_threshold 指定了 certifier 队列中等待的事务数,以触发流控制。

  • group_replication_flow_control_hold_percent

    Command-Line Format --group-replication-flow-control-hold-percent=#
    System Variable group_replication_flow_control_hold_percent
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value 100
    Unit 百分比

    可以在 Group Replication 运行时更改此系统变量的值,并且更改立即生效。

    组复制流控制hold百分比 定义了群组配额中剩余多少百分比未使用,以便在流控制下让集群赶上延迟的工作负载。值为 0 意味着不保留任何配额来赶上工作负载。

  • 组复制流控制最大配额

    Command-Line Format --组复制流控制最大配额=#
    System Variable 组复制流控制最大配额
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 2147483647

    该系统变量的值可以在 Group Replication 运行时更改,并且更改立即生效。

    组复制流控制最大配额 定义了群组的最大流控制配额,或者在流控制启用时的最大可用配额。值为 0 意味着没有设置最大配额。该系统变量的值不能小于 组复制流控制最小配额组复制流控制最小恢复配额

  • 组复制流控制成员配额百分比

    Command-Line Format --组复制流控制成员配额百分比=#
    System Variable 组复制流控制成员配额百分比
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 100
    Unit 百分比

    该系统变量的值可以在 Group Replication 运行时更改,并且更改立即生效。

    组复制流控制成员配额百分比 定义了成员应该假设可用的配额百分比,以便计算配额。值为 0 意味着配额应该平分给最后一期的写入者。

  • 组复制流控制最小配额

    Command-Line Format --组复制流控制最小配额=#
    System Variable 组复制流控制最小配额
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 2147483647

    该系统变量的值可以在 Group Replication 运行时更改,并且更改立即生效。

    组复制流控制最小配额 控制了分配给成员的最小流控制配额,不管最后一期的最小配额计算结果如何。值为 0 意味着没有最小配额。该系统变量的值不能大于 组复制流控制最大配额

  • 组复制流控制最小恢复配额

    Command-Line Format --组复制流控制最小恢复配额=#
    System Variable 组复制流控制最小恢复配额
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 2147483647

    该系统变量的值可以在Group Replication运行时更改,并且更改立即生效。

    group_replication_flow_control_min_recovery_quota 控制了由于另一个恢复成员在组中的最低配额,独立于上一个周期中执行的最小配额计算。值为 0 表示没有最小配额。该系统变量的值不能大于 group_replication_flow_control_max_quota

  • group_replication_flow_control_mode

    Command-Line Format --group-replication-flow-control-mode=value
    System Variable group_replication_flow_control_mode
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value QUOTA
    Valid Values

    DISABLED

    QUOTA

    该系统变量的值可以在Group Replication运行时更改,并且更改立即生效。

    group_replication_flow_control_mode 指定了用于流控制的模式。

  • group_replication_flow_control_period

    Command-Line Format --group-replication-flow-control-period=#
    System Variable group_replication_flow_control_period
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1
    Minimum Value 1
    Maximum Value 60
    Unit

    该系统变量的值可以在Group Replication运行时更改,并且更改立即生效。

    group_replication_flow_control_period 定义了在流控制迭代之间等待的秒数,在这些迭代中发送流控制消息并运行流控制管理任务。

  • group_replication_flow_control_release_percent

    Command-Line Format --group-replication-flow-control-release-percent=#
    System Variable group_replication_flow_control_release_percent
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 50
    Minimum Value 0
    Maximum Value 1000
    Unit 百分比

    该系统变量的值可以在Group Replication运行时更改,并且更改立即生效。

    group_replication_flow_control_release_percent 定义了在流控制不再需要限制写入成员时,组配额应该如何释放,以该百分比增加配额。值为 0 表示一旦流控制阈值在限制范围内,配额将在单个流控制迭代中释放。该范围允许配额在流控制周期内增加最多 10 倍,以便更好地适应大流控制周期和小配额的情况。

  • group_replication_force_members

    Command-Line Format --group-replication-force-members=value
    System Variable group_replication_force_members
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    该系统变量用于强制新的组成员身份。该系统变量的值可以在Group Replication运行时更改,并且更改立即生效。你只需要在要保留在组中的一个组成员上设置该系统变量的值。有关在何种情况下可能需要强制新的组成员身份,以及使用该系统变量时的步骤,请参阅第 20.7.8 节,“处理网络分区和仲裁损失”

    group_replication_force_members 指定了一个以逗号分隔的对等地址列表,例如 host1:port1,host2:port2。任何未包含在列表中的现有成员将不会收到新的组视图,并将被阻止。对于要继续作为成员的每个现有成员,你必须包括其 IP 地址或主机名和端口,如在每个成员的 group_replication_local_address 系统变量中所给定的那样。IPv6 地址必须在方括号中指定。例如:

    "198.51.100.44:33061,[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061,example.org:33061"

    Group Replication 的组通信引擎(XCom)检查提供的 IP 地址是否格式正确,并检查你是否未包括任何当前不可达的组成员。否则,新的配置将不会被验证,因此你必须小心地仅包括在线的可达成员。列表中的任何无效值或无效的主机名都可能会导致组被阻止并出现无效配置。

    在强制新的成员配置之前,确保要排除的服务器已经关闭。如果它们没有关闭,请在继续之前关闭它们。在线的组成员可以自动形成新的配置,如果已经发生这种情况,强制新的配置可能会为组创建人工的脑裂情况。

    在使用 group_replication_force_members 系统变量成功强制新的组成员身份并解除组阻止后,请确保清除该系统变量。group_replication_force_members 必须为空,以便发出 START GROUP_REPLICATION 语句。

  • group_replication_group_name

    Command-Line Format --group-replication-group-name=value
    System Variable group_replication_group_name
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type String

    该系统变量的值不能在 Group Replication 运行时更改。

    group_replication_group_name 指定了该服务器实例所属的组的名称,该名称必须是一个有效的 UUID。该 UUID 是 GTIDs 的一部分,用于写入二进制日志的客户端事务和组成员生成的视图更改事件。

    Important

    必须使用唯一的 UUID。

  • group_replication_group_seeds

    Command-Line Format --group-replication-group-seeds=value
    System Variable group_replication_group_seeds
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type String

    该系统变量的值可以在 Group Replication 运行时更改,但更改仅在停止并重新启动 Group Replication 后生效。

    组复制组种子 是一个列表,包含可以连接的组成员,以获取当前组成员的详细信息。加入的成员使用这些详细信息来选择和连接到组成员,以获取与组同步所需的数据。该列表由每个种子成员的内部网络地址或主机名组成,如种子成员的 组复制本地地址 系统变量所配置的(不是种子成员的 SQL 客户端连接,如 MySQL 服务器的 主机名端口 系统变量所指定的)。种子成员的地址以逗号分隔的列表指定,例如 主机1:端口1,主机2:端口2。IPv6 地址必须在方括号中指定。例如:

    group_replication_group_seeds= "198.51.100.44:33061,[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061, example.org:33061"

    注意,您指定的这个变量的值直到发出 START GROUP_REPLICATION 语句并且组通信系统(GCS)可用时才会被验证。

    通常,这个列表包含组的所有成员,但您可以选择组成员的子集作为种子。列表必须包含至少一个有效的成员地址。每个地址在启动组复制时都会被验证。如果列表不包含任何有效的成员地址,发出 START GROUP_REPLICATION 将失败。

    当服务器加入复制组时,它尝试连接到其 组复制组种子 系统变量中列出的第一个种子成员。如果连接被拒绝,加入的成员将尝试连接到列表中的其他种子成员,以此类推。如果加入的成员连接到种子成员但未被添加到复制组中(例如,因为种子成员没有加入成员的地址在其 allowlist 中并关闭连接),加入的成员将继续尝试列表中的其他种子成员。

    加入的成员必须使用与种子成员相同的协议(IPv4 或 IPv6)来与种子成员通信,该协议是种子成员在 组复制组种子 选项中宣传的。对于组复制的 IP 地址权限,种子成员的 allowlist 必须包含加入成员的 IP 地址或主机名,该地址或主机名必须在加入成员的 组复制本地地址 中设置和允许,除非种子成员的协议与加入成员的协议不匹配。在这种情况下,加入成员的连接尝试将被拒绝。有关更多信息,请参阅 第 20.6.4 节,“组复制 IP 地址权限”

  • 组复制 GTID 分配块大小

    Command-Line Format --group-replication-gtid-assignment-block-size=#
    System Variable 组复制 GTID 分配块大小
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1000000
    Minimum Value 1
    Maximum Value (64-bit platforms) 9223372036854775807
    Maximum Value (32-bit platforms) 4294967295
    Note

    该系统变量是一个组全局配置设置,需要对复制组进行完整的重新启动以使更改生效。

    组复制 GTID 分配块大小 指定了每个组成员保留的连续 GTID 数量。每个成员都消耗自己的块并在需要时保留更多。

    该系统变量是一个组级配置设置。它必须在所有组成员上具有相同的值,不能在组复制运行时更改,并且需要组的完全重新启动(由具有group_replication_bootstrap_group=ON的服务器引导)以使值更改生效。有关如何安全地引导已执行和认证事务的组的说明,请参阅第 20.5.2 节,“重启组”

    如果组具有该系统变量的值,并且加入成员具有不同的值,则加入成员不能加入组,直到值更改为匹配。如果组成员具有该系统变量的值,并且加入成员不支持该系统变量,则不能加入组。

  • group_replication_ip_allowlist

    Command-Line Format --group-replication-ip-allowlist=value
    System Variable group_replication_ip_allowlist
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value AUTOMATIC

    group_replication_ip_allowlist 指定哪些主机被允许连接到组。当 XCom 通信栈用于组 (group_replication_communication_stack=XCOM) 时,allowlist 用于控制对组的访问。当 MySQL 通信栈用于组 (group_replication_communication_stack=MYSQL) 时,用户身份验证用于控制对组的访问,而 allowlist 不被使用且被忽略。

    您在 group_replication_local_address 中指定的每个组成员的地址必须在其他服务器上被允许。请注意,该变量的值不会被验证,直到 START GROUP_REPLICATION 语句被发出并且组通信系统 (GCS) 可用。

    默认情况下,该系统变量设置为 AUTOMATIC,这允许来自主机上的私有子网络的连接。组通信引擎自动扫描主机上的活动接口,识别私有子网络上的地址。这些地址和 localhost 的 IPv4 和 IPv6 地址用于创建组复制 allowlist。有关自动 allowlist 的私有地址范围的列表,请参阅 第 20.6.4 节,“组复制 IP 地址权限”

    自动 allowlist 不能用于来自外部私有网络的连接。对于组复制连接,服务器实例位于不同的机器上,您必须提供公共 IP 地址并将其指定为明确的 allowlist。如果您指定了 allowlist 的任何条目,私有地址将不会自动添加,因此如果您使用这些地址,您必须明确指定它们。localhost 地址将自动添加。

    作为 group_replication_ip_allowlist 选项的值,您可以指定以下任何组合:

    • IPv4 地址(例如 198.51.100.44

    • IPv4 地址带 CIDR 表示法(例如 192.0.2.21/24

    • IPv6 地址,从 MySQL 8.0.14 开始(例如 2001:db8:85a3:8d3:1319:8a2e:370:7348

    • IPv6 地址带 CIDR 表示法,从 MySQL 8.0.14 开始(例如 2001:db8:85a3:8d3::/64

    • 主机名(例如 example.org

    • 主机名带 CIDR 表示法(例如 www.example.com/24

    在 MySQL 8.0.14 之前,主机名只能解析到 IPv4 地址。从 MySQL 8.0.14 开始,主机名可以解析到 IPv4 地址、IPv6 地址或两者。如果主机名解析到 IPv4 和 IPv6 地址,Group Replication 连接将始终使用 IPv4 地址。你可以使用 CIDR 表示法与主机名或 IP 地址结合,以允许具有特定网络前缀的 IP 地址块,但请确保该子网中的所有 IP 地址都在您的控制之下。

    每个条目之间必须用逗号分隔。例如:

    "192.0.2.21/24,198.51.100.44,203.0.113.0/24,2001:db8:85a3:8d3:1319:8a2e:370:7348,example.org,www.example.com/24"

    如果组中的种子成员在 group_replication_group_seeds 选项中列出了 IPv6 地址,而加入成员的 group_replication_local_address 是 IPv4 地址,或者反之亦然,那么您还需要为加入成员设置备用地址,以便与种子成员的协议相匹配(或主机名解析到该协议的地址)。有关更多信息,请参阅 第 20.6.4 节,“组复制 IP 地址权限”

    您可以根据安全要求在不同的组成员上配置不同的 allowlists,例如,以保持不同的子网分离。但是,这可能会在组重新配置时引发问题。如果您没有特定的安全要求,请在组的所有成员上使用相同的 allowlist。有关更多详细信息,请参阅 第 20.6.4 节,“组复制 IP 地址权限”

    对于主机名,名称解析仅在其他服务器发出连接请求时进行。如果主机名无法解析,不会将其考虑在 allowlist 验证中,并将警告消息写入错误日志。将对解析后的主机名进行反向确认 DNS (FCrDNS) 验证。

    Warning

    主机名在 allowlist 中比 IP 地址不安全。FCrDNS 验证提供了很高的保护级别,但可以被某些类型的攻击所破坏。只有在绝对必要时才指定主机名,并确保所有用于名称解析的组件,例如 DNS 服务器,都在您的控制之下。您也可以使用 hosts 文件在本地实现名称解析,以避免使用外部组件。

  • group_replication_local_address

    Command-Line Format --group-replication-local-address=value
    System Variable group_replication_local_address
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    可以在 Group Replication 运行时更改该系统变量的值,但更改仅在停止并重新启动 Group Replication 后生效。

    group_replication_local_address 设置组成员提供的网络地址,以便与其他成员建立连接,指定为 host:port 格式的字符串。该地址必须可以被组中的所有成员访问,因为它用于 Group Replication 的组通信引擎(XCom,Paxos 变体)之间的 TCP 通信。如果您使用 MySQL 通信栈来建立组成员之间的通信连接(group_replication_communication_stack = MYSQL),则该地址必须是 MySQL 服务器监听的 IP 地址和端口之一,如服务器的 bind_address 系统变量所指定。

    Warning

    请勿使用该地址来查询或管理成员上的数据库。这不是 SQL 客户端连接的主机和端口。

    您在 group_replication_local_address 中指定的地址或主机名将被 Group Replication 作为组成员的唯一标识符。您可以使用同一个端口号来连接所有组成员,只要主机名或 IP 地址不同;您也可以使用同一个主机名或 IP 地址,只要端口号不同。推荐的端口号为 group_replication_local_address 是 33061。请注意,您指定的值将在 START GROUP_REPLICATION 语句执行并且 Group Communication System (GCS) 可用时进行验证。

    group_replication_local_address 配置的网络地址必须能够被所有组成员解析。例如,如果每个服务器实例在不同的机器上具有固定的网络地址,您可以使用机器的 IP 地址,例如 10.0.0.1。如果您使用主机名,必须使用完全合格的名称,并确保通过 DNS、正确配置的 /etc/hosts 文件或其他名称解析过程进行解析。从 MySQL 8.0.14 开始,IPv6 地址(或解析到它们的主机名)也可以与 IPv4 地址一起使用。IPv6 地址必须在方括号中指定,以便与端口号区分,例如:

    group_replication_local_address= "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061"

    如果为服务器实例指定的 Group Replication 本地地址解析到 IPv4 和 IPv6 地址,Group Replication 连接将始终使用 IPv4 地址。有关 Group Replication 对 IPv6 网络和混合 IPv4 和 IPv6 组的支持,请参阅 第 20.5.5 节,“支持 IPv6 和混合 IPv4 和 IPv6 组”

    如果您使用 XCom 通信栈来建立组成员之间的通信连接 (group_replication_communication_stack = XCOM),则必须将每个组成员的地址添加到 group_replication_ip_allowlist 系统变量的列表中。使用 XCom 通信栈时,allowlist 用于控制对组的访问。当使用 MySQL 通信栈时,用户身份验证用于控制对组的访问,allowlist 将被忽略。如果任何种子成员的 IPv6 地址在 group_replication_group_seeds 选项中列出,而该成员的 group_replication_local_address 是 IPv4 地址,或者反之,您必须也设置并允许该成员的备用地址,以便在所需的协议(或主机名)下使用。有关更多信息,请参阅 第 20.6.4 节,“Group Replication IP 地址权限”

  • group_replication_member_expel_timeout

    Command-Line Format --group-replication-member-expel-timeout=#
    System Variable group_replication_member_expel_timeout
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 5
    Minimum Value 0
    Maximum Value 3600
    Unit

    可以在 Group Replication 运行时更改该系统变量的值,并且更改将立即生效。当前的系统变量值将在 Group Replication 检查超时时读取。不是所有组成员都需要具有相同的设置,但建议这样做,以避免意外的驱逐。

    组复制成员驱逐超时 指定组复制组成员在创建嫌疑后等待的时间(以秒为单位),然后从组中驱逐怀疑失败的成员。初始的 5 秒检测期不计入这段时间。在 MySQL 8.0.20 及更低版本中,组复制成员驱逐超时 的值默认为 0,这意味着没有等待期,怀疑成员将立即被驱逐出组。从 MySQL 8.0.21 开始,默认值为 5,意味着怀疑成员将在 5 秒后被驱逐出组。

    更改 组复制成员驱逐超时 的值将立即对现有和未来嫌疑的组成员生效。因此,您可以使用此方法强制嫌疑超时并驱逐怀疑成员,允许更改组配置。有关更多信息,请参阅 第 20.7.7.1 节,“驱逐超时”

    增加 组复制成员驱逐超时 的值可以帮助避免在较慢或不稳定的网络上或在预期的暂时网络中断或机器减速的情况下进行不必要的驱逐。如果怀疑成员在超时前重新激活,它将应用缓冲的消息并进入 在线 状态,无需操作员干预。您可以指定最长 3600 秒(1 小时)的超时值。确保 XCom 的消息缓存足够大,以容纳指定时间段内的预期消息量,加上初始的 5 秒检测期,否则成员无法重新连接。您可以使用 组复制消息缓存大小 系统变量调整缓存大小限制。有关更多信息,请参阅 第 20.7.6 节,“XCom 缓存管理”

    如果超时被超过,怀疑成员将立即被驱逐。如果成员能够恢复通信并收到驱逐的视图,并且成员具有 组复制自动重新加入尝试次数 系统变量指定的重新加入尝试次数,它将尝试重新加入组,同时处于超级只读模式。如果成员没有指定重新加入尝试次数,或者已经用尽了指定的尝试次数,它将遵循系统变量 组复制退出状态操作 指定的操作。

    有关使用 组复制成员驱逐超时 设置的更多信息,请参阅 第 20.7.7.1 节,“驱逐超时”。对于不使用该系统变量的替代策略,以避免不必要的驱逐,请参阅 第 20.3.2 节,“组复制限制”

  • 组复制成员权重

    Command-Line Format --group-replication-member-weight=#
    System Variable 组复制成员权重
    Scope Global
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 50
    Minimum Value 0
    Maximum Value 100
    Unit 百分比

    可以在组复制运行时更改该系统变量的值,并且更改将立即生效。该系统变量的当前值将在故障转移情况下读取。

    组复制成员权重 指定了一个百分比权重,可以分配给成员,以影响成员被选为主服务器的机会,例如在单一主服务器组中,现有的主服务器离开时。将数字权重分配给成员,以确保特定的成员被选中,例如在计划的主服务器维护期间或在故障转移事件中确保特定的硬件被优先考虑。

    例如,一个组中成员配置如下:

    • member-1: 组复制成员权重=30,服务器UUID=aaaa

    • member-2: 组复制成员权重=40,服务器UUID=bbbb

    • member-3: 组复制成员权重=40,服务器UUID=cccc

    • member-4: 组复制成员权重=40,服务器UUID=dddd

    在选举新主服务器时,上述成员将被排序为 member-2member-3member-4member-1。这将导致 member-2 被选为新主服务器。在故障转移事件中,更多信息,请参阅 第 20.1.3.1 节,“单一主服务器模式”

  • 组复制消息缓存大小

    Command-Line Format --组复制消息缓存大小=#
    System Variable 组复制消息缓存大小
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1073741824 (1 GB)
    Minimum Value 134217728 (128 MB)
    Maximum Value (64-bit platforms) 18446744073709551615 (16 EiB)
    Maximum Value (32-bit platforms) 315360004294967295 (4 GB)
    Unit 字节

    该系统变量应该在所有组成员上具有相同的值。可以在组复制运行时更改该系统变量的值。更改将在每个组成员上生效,停止并重新启动组复制后。在此过程中,该系统变量的值可能在组成员之间不同,但成员可能无法重新连接在断开连接事件中。

    组复制消息缓存大小 设置了组通信引擎中的消息缓存的最大内存量,用于组复制(XCom)。XCom 消息缓存持有组成员之间交换的消息(及其元数据),作为一致协议的一部分。该缓存用于恢复组成员重新连接时遗漏的消息。

    组复制成员驱逐超时 系统变量确定了成员重新连接组的等待期(最多一小时),在此期间,成员可以返回组而不是被驱逐。XCom 消息缓存的大小应该根据预期的消息量在该时间段内进行设置,以便包含所有遗漏的消息,用于成员成功返回。从 MySQL 8.0.20 开始,默认值仅为 5 秒检测期,但从 MySQL 8.0.21 开始,默认值为 5 秒检测期加 5 秒等待期,总共 10 秒。

    确保系统上有足够的内存来容纳所选的缓存大小限制,考虑到 MySQL 服务器的其他缓存和对象池的大小。默认设置为 1073741824 字节(1 GB)。最小设置为 1 GB,直到 MySQL 8.0.20。从 MySQL 8.0.21 开始,minimum 设置为 134217728 字节(128 MB),以便在具有受限可用内存的主机上部署,并且具有良好的网络连接性,以最小化组成员之间的暂时性断开连接的频率和持续时间。请注意,使用 组复制消息缓存大小 设置的限制仅适用于缓存中的数据,而缓存结构需要额外的 50 MB 内存。

    缓存大小限制可以在运行时动态增加或减少。如果您减少缓存大小限制,XCom将删除已决策和已交付的最旧条目,直到当前大小低于限制。组复制的组通信系统(GCS)将警告您,当一个可能需要恢复的消息从消息缓存中删除时,通过警告消息。如果您想了解更多关于调整消息缓存大小的信息,请参阅第 20.7.6 节,“XCom 缓存管理”

  • 组复制 Paxos 单一领导者

    Command-Line Format --group-replication-paxos-single-leader[={OFF|ON}]
    System Variable 组复制 Paxos 单一领导者
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF
    Note

    该系统变量是一个组全局配置设置,需要对复制组进行完整重新启动以使更改生效。

    组复制 Paxos 单一领导者 从 MySQL 8.0.27 开始可用。它使组通信引擎在单一主模式下使用单一共识领导者。默认情况下,OFF,该行为被禁用,每个组成员都用作领导者,这是之前版本的行为。当系统变量设置为 ON 时,组通信引擎可以使用单一领导者来驱动共识。在单一主模式下,使用单一共识领导者可以提高性能和弹性,特别是在某些组成员当前不可达时。更多信息,请参阅第 20.7.3 节,“单一共识领导者”

    为了使组通信引擎使用单一共识领导者,组的通信协议版本必须是 MySQL 8.0.27 或更高版本。使用 group_replication_get_communication_protocol() 函数查看组的通信协议版本。如果使用的是较低版本,组无法使用该行为。您可以使用 group_replication_set_communication_protocol() 函数将组的通信协议设置为更高版本,如果所有组成员都支持该版本。更多信息,请参阅第 20.5.1.4 节,“设置组的通信协议版本”

    该系统变量是一个组全局配置设置。它必须在所有组成员上具有相同的值,不能在组复制运行时更改,并且需要对组进行完整重新启动以使值更改生效。有关如何安全地引导组的说明,请参阅第 20.5.2 节,“重新启动组”

    如果组已经设置了该系统变量的值,并且加入的成员具有不同的值,加入的成员不能加入组,直到值被更改以匹配。如果组成员已经设置了该系统变量的值,并且加入的成员不支持该系统变量,它不能加入组。

    性能模式表 replication_group_communication_information 中的字段 WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE 显示组是否支持使用单一领导者,即使 组复制 Paxos 单一领导者 当前设置为 OFF。该字段设置为 1,如果组以 组复制 Paxos 单一领导者 设置为 ON 启动,并且其通信协议版本是 MySQL 8.0.27 或更高版本。

  • 组复制轮询自旋循环次数

    Command-Line Format --组复制-轮询-自旋-循环次数=#
    System Variable 组复制轮询自旋循环次数
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value (64-bit platforms) 18446744073709551615
    Maximum Value (32-bit platforms) 4294967295

    可以在组复制运行时更改该系统变量的值,但更改仅在停止并重新启动组复制后生效。

    组复制轮询自旋循环次数 指定组通信线程等待通信引擎互斥锁释放前的等待次数,然后等待更多的入站网络消息。

  • 组复制恢复完成时刻

    Command-Line Format --组复制-恢复-完成-时刻=value
    Deprecated
    System Variable 组复制恢复完成时刻
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value 事务已应用
    Valid Values

    事务已认证

    事务已应用

    可以在组复制运行时更改该系统变量的值,但更改仅在停止并重新启动组复制后生效。

    组复制恢复完成时刻 指定分布式恢复过程中处理缓存事务的策略,在从现有成员的状态传输后。您可以选择成员在接收和认证所有事务后是否被标记为在线(事务已认证),或仅在接收、认证和应用所有事务后(事务已应用)。

    该变量自 MySQL 8.0.34 起弃用(同样弃用 事务已认证)。预计在未来 MySQL 版本中删除该变量。

  • 组复制恢复压缩算法

    Command-Line Format --组复制-恢复-压缩-算法=value
    System Variable 组复制恢复压缩算法
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 集合
    Default Value 未压缩
    Valid Values

    zlib

    zstd

    未压缩

    可以在组复制运行时更改该系统变量的值,但更改仅在停止并重新启动组复制后生效。

    组复制恢复压缩算法 指定组复制分布式恢复连接的压缩算法,用于从捐赠者的二进制日志传输状态。可用的算法与 protocol_compression_algorithms 系统变量相同。有关更多信息,请参阅 第 6.2.8 节,“连接压缩控制”

    如果服务器设置了克隆支持(参阅 第 20.5.4.2 节,“分布式恢复克隆”),并且在分布式恢复期间使用远程克隆操作,则该设置不适用。在这种情况下,克隆插件的 clone_enable_compression 设置适用。

  • 组复制恢复获取公钥

    Command-Line Format --组复制恢复获取公钥[={OFF|ON}]
    System Variable 组复制恢复获取公钥
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    可以在组复制运行时更改该系统变量的值,但更改仅在停止并重新启动组复制后生效。

    组复制恢复获取公钥 指定是否从源请求用于RSA密钥对基于密码交换的公钥。如果 组复制恢复公钥路径 设置为有效的公钥文件,则它将优先于 组复制恢复获取公钥。该变量适用于不使用SSL进行分布式恢复的 组复制恢复 通道 (组复制恢复使用SSL=ON),并且复制用户帐户对组复制使用 caching_sha2_password 插件(这是 MySQL 8.0 的默认值)。有关更多详细信息,请参阅 第 20.6.3.1.1 节,“复制用户与 Caching SHA-2 身份验证插件”

  • 组复制恢复公钥路径

    Command-Line Format --组复制恢复公钥路径=file_name
    System Variable 组复制恢复公钥路径
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value 空字符串

    可以在组复制运行时更改该系统变量的值,但更改仅在停止并重新启动组复制后生效。

    组复制恢复公钥路径 指定了一个文件的路径名,该文件包含了源所需的公钥副本,用于RSA密钥对基于密码交换。该文件必须是 PEM 格式。如果 组复制恢复公钥路径 设置为有效的公钥文件,则它将优先于 组复制恢复获取公钥。该变量适用于不使用SSL进行分布式恢复的 组复制恢复 通道 (因此 组复制恢复使用SSL 设置为 OFF),并且复制用户帐户对组复制使用 caching_sha2_password 插件(这是 MySQL 8.0 的默认值)或 sha256_password 插件。(对于 sha256_password,设置 组复制恢复公钥路径 仅适用于 MySQL 使用 OpenSSL 构建时。)有关更多详细信息,请参阅 第 20.6.3.1.1 节,“复制用户与 Caching SHA-2 身份验证插件”

  • 组复制恢复重新连接间隔

    Command-Line Format --组复制恢复重新连接间隔=#
    System Variable 组复制恢复重新连接间隔
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 60
    Minimum Value 0
    Maximum Value 31536000
    Unit

    该系统变量的值可以在组复制运行时更改,但更改仅在停止并重新启动组复制后生效。

    group_replication_recovery_reconnect_interval 指定了在分布式恢复中找不到合适的捐赠者时重新连接的睡眠时间,以秒为单位。

  • group_replication_recovery_retry_count

    Command-Line Format --group-replication-recovery-retry-count=#
    System Variable group_replication_recovery_retry_count
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value 31536000

    该系统变量的值可以在组复制运行时更改,但更改仅在停止并重新启动组复制后生效。

    group_replication_recovery_retry_count 指定了成员在分布式恢复中尝试连接可用捐赠者的次数。

  • group_replication_recovery_ssl_ca

    Command-Line Format --group-replication-recovery-ssl-ca=value
    System Variable group_replication_recovery_ssl_ca
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    该系统变量的值可以在组复制运行时更改,但更改仅在停止并重新启动组复制后生效。

    group_replication_recovery_ssl_ca 指定了分布式恢复连接的可信SSL证书颁发机构的路径。请参阅第 20.6.2 节,“使用安全套接字层(SSL)保护组通信连接”以获取关于配置SSL的信息。

    如果该服务器已经设置了克隆支持(请参阅第 20.5.4.2 节,“分布式恢复克隆”),并且您已经将group_replication_recovery_use_ssl 设置为 ON,那么组复制将自动配置克隆SSL选项clone_ssl_ca以匹配您的group_replication_recovery_ssl_ca 设置。

    当 MySQL 通信栈用于组通信(group_replication_communication_stack = MYSQL)时,该设置将用于组通信连接的 TLS/SSL 配置,以及分布式恢复连接。

  • group_replication_recovery_ssl_capath

    Command-Line Format --group-replication-recovery-ssl-capath=value
    System Variable group_replication_recovery_ssl_capath
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    该系统变量的值可以在组复制运行时更改,但更改仅在停止并重新启动组复制后生效。

    组复制恢复SSL_CA路径 指定了一个目录的路径,该目录包含了分布式恢复连接的受信任SSL证书颁发机构证书。请参阅 第 20.6.2 节,“使用Secure Socket Layer (SSL)保护组通信连接”,了解如何为分布式恢复配置SSL。

    当MySQL通信栈用于组(group_replication_communication_stack = MYSQL)时,该设置用于组通信连接的TLS/SSL配置,以及分布式恢复连接。

  • 组复制恢复SSL证书

    Command-Line Format --group-replication-recovery-ssl-cert=值
    System Variable 组复制恢复SSL证书
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    该系统变量的值可以在Group Replication运行时更改,但更改仅在停止并重新启动Group Replication组成员后生效。

    组复制恢复SSL证书 指定了用于建立分布式恢复连接的SSL证书文件的名称。请参阅 第 20.6.2 节,“使用Secure Socket Layer (SSL)保护组通信连接”,了解如何为分布式恢复配置SSL。

    如果该服务器已设置为支持克隆(请参阅 第 20.5.4.2 节,“分布式恢复克隆”),并且您已将 组复制恢复使用SSL 设置为 ON,则Group Replication将自动配置克隆SSL选项 克隆SSL证书 以匹配您的 组复制恢复SSL证书 设置。

    当MySQL通信栈用于组(group_replication_communication_stack = MYSQL)时,该设置用于组通信连接的TLS/SSL配置,以及分布式恢复连接。

  • 组复制恢复SSL密码

    Command-Line Format --group-replication-recovery-ssl-cipher=值
    System Variable 组复制恢复SSL密码
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    该系统变量的值可以在Group Replication运行时更改,但更改仅在停止并重新启动Group Replication组成员后生效。

    组复制恢复SSL密码 指定了SSL加密的允许密码列表。请参阅 第 20.6.2 节,“使用Secure Socket Layer (SSL)保护组通信连接”,了解如何为分布式恢复配置SSL。

    当MySQL通信栈用于组(group_replication_communication_stack = MYSQL)时,该设置用于组通信连接的TLS/SSL配置,以及分布式恢复连接。

  • 组复制恢复SSL证书撤销列表

    Command-Line Format --组复制恢复SSL CRL=value
    System Variable 组复制恢复SSL CRL
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名

    可以在组复制运行时更改该系统变量的值,但更改仅在停止并重新启动组复制后生效。

    组复制恢复SSL CRL 指定包含证书撤销列表文件的目录路径。请参阅 第 20.6.2 节,“使用安全套接层(SSL)保护组通信连接”,了解如何为分布式恢复配置 SSL。

    当 MySQL 通信栈用于组(group_replication_communication_stack = MYSQL)时,该设置用于组通信连接的 TLS/SSL 配置,以及分布式恢复连接。

  • 组复制恢复SSL CRL路径

    Command-Line Format --组复制恢复SSL CRL路径=value
    System Variable 组复制恢复SSL CRL路径
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名

    可以在组复制运行时更改该系统变量的值,但更改仅在停止并重新启动组复制后生效。

    组复制恢复SSL CRL路径 指定包含证书撤销列表文件的目录路径。请参阅 第 20.6.2 节,“使用安全套接层(SSL)保护组通信连接”,了解如何为分布式恢复配置 SSL。

    当 MySQL 通信栈用于组(group_replication_communication_stack = MYSQL)时,该设置用于组通信连接的 TLS/SSL 配置,以及分布式恢复连接。

  • 组复制恢复SSL 密钥

    Command-Line Format --组复制恢复SSL 密钥=value
    System Variable 组复制恢复SSL 密钥
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    可以在组复制运行时更改该系统变量的值,但更改仅在停止并重新启动组复制后生效。

    组复制恢复SSL 密钥 指定用于建立安全连接的 SSL 密钥文件名。请参阅 第 20.6.2 节,“使用安全套接层(SSL)保护组通信连接”,了解如何为分布式恢复配置 SSL。

    如果该服务器已设置为支持克隆(请参阅 第 20.5.4.2 节,“分布式恢复克隆”),并且您已将 组复制恢复使用SSL 设置为 ON,则组复制将自动配置克隆 SSL 选项 clone_ssl_key 以匹配您的 组复制恢复SSL 密钥 设置。

    当 MySQL 通信栈用于组(group_replication_communication_stack = MYSQL)时,此设置用于组通信连接和分布式恢复连接的 TLS/SSL 配置。

  • group_replication_recovery_ssl_verify_server_cert

    Command-Line Format --group-replication-recovery-ssl-verify-server-cert[={OFF|ON}]
    System Variable group_replication_recovery_ssl_verify_server_cert
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    该系统变量的值可以在 Group Replication 运行时更改,但更改仅在停止并重新启动 Group Replication 后生效。

    group_replication_recovery_ssl_verify_server_cert 指定了分布式恢复连接是否应检查服务器的公共名称值在证书中。请参阅 第 20.6.2 节,“使用安全套接层(SSL)保护组通信连接”,以获取有关配置 SSL 的分布式恢复信息。

    当 MySQL 通信栈用于组(group_replication_communication_stack = MYSQL)时,此设置用于组通信连接和分布式恢复连接的 TLS/SSL 配置。

  • group_replication_recovery_tls_ciphersuites

    Command-Line Format --group-replication-recovery-tls-ciphersuites=value
    System Variable group_replication_recovery_tls_ciphersuites
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value NULL

    该系统变量的值可以在 Group Replication 运行时更改,但更改仅在停止并重新启动 Group Replication 后生效。

    group_replication_recovery_tls_ciphersuites 指定了一个以冒号分隔的允许的加密套件列表,当 TLSv1.3 用于连接加密时,该服务器实例是分布式恢复连接的客户端。如果该系统变量设置为 NULL 时(这是默认值),则允许默认的加密套件,如 第 8.3.2 节,“加密连接 TLS 协议和加密套件” 所列。如果该系统变量设置为空字符串,则不允许任何加密套件,TLSv1.3 将不被使用。该系统变量从 MySQL 8.0.19 开始可用。请参阅 第 20.6.2 节,“使用安全套接层(SSL)保护组通信连接”,以获取有关配置 SSL 的分布式恢复信息。

    当 MySQL 通信栈用于组(group_replication_communication_stack = MYSQL)时,此设置用于组通信连接和分布式恢复连接的 TLS/SSL 配置。

  • group_replication_recovery_tls_version

    Command-Line Format --group-replication-recovery-tls-version=value
    System Variable group_replication_recovery_tls_version
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value TLSv1.2,TLSv1.3

    该系统变量的值可以在Group Replication运行时更改,但更改仅在停止并重新启动Group Replication后生效。

    group_replication_recovery_tls_version 指定了一个或多个允许的TLS协议版本,以便在分布式恢复连接中使用该服务器实例作为客户端,即加入成员。参与每个分布式恢复连接的组成员作为客户端(加入成员)和服务器(捐赠者)negotiate最高的协议版本,以便它们都支持该版本。该系统变量从MySQL 8.0.19开始可用。

    当MySQL通信栈用于组通信(group_replication_communication_stack = MYSQL)时,该设置用于TLS/SSL配置,用于组通信连接和分布式恢复连接。

    如果该系统变量未设置,默认值为TLSv1,TLSv1.1,TLSv1.2,TLSv1.3,直到MySQL 8.0.27,自MySQL 8.0.28起,默认值为TLSv1.2,TLSv1.3。确保指定的协议版本是连续的,不跳过序列中的版本号。

    Important
    • 从MySQL 8.0.28起,TLSv1和TLSv1.1连接协议从MySQL Server中删除。这些协议从MySQL 8.0.26起被弃用,尽管MySQL Server客户端,包括作为客户端的Group Replication服务器实例,不会向用户返回警告,如果使用了弃用的TLS协议版本。请参阅弃用TLSv1和TLSv1.1协议以获取更多信息。

    • 从MySQL 8.0.16起,TLSv1.3协议在MySQL Server中可用,前提是MySQL Server使用OpenSSL 1.1.1编译。服务器在启动时检查OpenSSL的版本,如果低于1.1.1,TLSv1.3将从默认值中删除。在那种情况下,默认值为TLSv1,TLSv1.1,TLSv1.2,直到MySQL 8.0.27,自MySQL 8.0.28起,默认值为TLSv1.2

    • 从MySQL 8.0.18起,Group Replication支持TLSv1.3,自MySQL 8.0.19起,支持密码套件选择。请参阅第20.6.2节,“使用Secure Socket Layer (SSL)保护组通信连接”以获取更多信息。

    请参阅第20.6.2节,“使用Secure Socket Layer (SSL)保护组通信连接”以获取分布式恢复的SSL配置信息。

  • group_replication_recovery_use_ssl

    Command-Line Format --group-replication-recovery-use-ssl[={OFF|ON}]
    System Variable group_replication_recovery_use_ssl
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value OFF

    该系统变量的值可以在Group Replication运行时更改,但更改仅在停止并重新启动Group Replication后生效。

    group_replication_recovery_use_ssl 指定了Group Replication分布式恢复连接之间是否使用SSL。请参阅第20.6.2节,“使用Secure Socket Layer (SSL)保护组通信连接”以获取分布式恢复的SSL配置信息。

    如果该服务器已设置为支持克隆(请参阅第20.5.4.2节,“分布式恢复的克隆”),并将该选项设置为ON,Group Replication将使用SSL进行远程克隆操作,以及从捐赠者的二进制日志中传输状态。如果将该选项设置为OFF,Group Replication将不使用SSL进行远程克隆操作。

  • 组复制恢复Zstd压缩级别

    Command-Line Format --组复制恢复-zstd-压缩级别=#
    System Variable 组复制恢复Zstd压缩级别
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 3
    Minimum Value 1
    Maximum Value 22

    可以在组复制运行时更改该系统变量的值,但更改仅在停止并重新启动组复制后生效。

    组复制恢复Zstd压缩级别 指定了用于组复制分布式恢复连接的压缩级别,该连接使用 zstd 压缩算法。允许的级别从 1 到 22,较大的值表示增加的压缩级别。默认的 zstd 压缩级别为 3。对于不使用 zstd 压缩的分布式恢复连接,该变量无效。

    有关更多信息,请参阅 第 6.2.8 节,“连接压缩控制”

  • 组复制单一主模式

    Command-Line Format --组复制-单一主模式[={OFF|ON}]
    System Variable 组复制单一主模式
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON
    Note

    该系统变量是一个组全局配置设置,需要重新启动整个复制组以使更改生效。

    组复制单一主模式 指示组自动选择一个服务器来处理读/写工作负载。该服务器是主服务器,而其他服务器是辅助服务器。

    该系统变量是一个组全局配置设置。它必须在所有组成员上具有相同的值,不能在组复制运行时更改,并且需要重新启动整个组(通过具有 组复制引导组 的服务器)以使更改生效。有关安全引导组的说明,请参阅 第 20.5.2 节,“重新启动组”

    如果组成员具有该系统变量的值,并且加入的成员具有不同的值,则加入的成员不能加入组,直到值更改为匹配。如果组成员具有该系统变量的值,并且加入的成员不支持该系统变量,则加入的成员不能加入组。

    将该变量设置为 ON 将忽略 组复制自动增量增量 的设置。

    在 MySQL 8.0.16 及更高版本中,可以使用 组复制切换到单一主模式()组复制切换到多主模式() 函数更改该系统变量的值,而不需要重新启动组。有关更多信息,请参阅 第 20.5.1.2 节,“更改组模式”

  • 组复制SSL模式

    Command-Line Format --组复制-ssl-模式=value
    System Variable 组复制SSL模式
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value DISABLED
    Valid Values

    禁用

    REQUIRED

    VERIFY_CA

    VERIFY_IDENTITY

    该系统变量的值可以在Group Replication运行时更改,但更改仅在停止并重新启动Group Replication后生效。

    group_replication_ssl_mode 设置组通信连接的安全状态。可能的值如下:

    DISABLED

    建立未加密的连接(默认)。

    REQUIRED

    如果服务器支持安全连接,则建立安全连接。

    VERIFY_CA

    类似于 REQUIRED,但另外验证服务器TLS证书是否与配置的证书颁发机构(CA)证书匹配。

    VERIFY_IDENTITY

    类似于 VERIFY_CA,但另外验证服务器证书是否与连接尝试的主机匹配。

    请参阅 第 20.6.2 节,“使用Secure Socket Layer(SSL)保护组通信连接”,了解如何为组通信配置SSL。

  • group_replication_start_on_boot

    Command-Line Format --group-replication-start-on-boot[={OFF|ON}]
    System Variable group_replication_start_on_boot
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON

    该系统变量的值可以在Group Replication运行时更改,但更改仅在停止并重新启动Group Replication后生效。

    group_replication_start_on_boot 指定服务器是否在启动时自动启动Group Replication(ON)或不启动(OFF)。当您将此选项设置为 ON 时,Group Replication 将在远程克隆操作用于分布式恢复后自动重新启动。

    要在服务器启动时自动启动Group Replication,必须在服务器的复制元数据存储库中存储分布式恢复的用户凭据,使用 CHANGE REPLICATION SOURCE TO 语句。如果您prefer 在 START GROUP_REPLICATION 语句中指定用户凭据,该语句仅将用户凭据存储在内存中,请确保 group_replication_start_on_boot 设置为 OFF

  • group_replication_tls_source

    Command-Line Format --group-replication-tls-source=value
    System Variable group_replication_tls_source
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value mysql_main
    Valid Values

    mysql_main

    mysql_admin

    该系统变量的值可以在Group Replication运行时更改,但更改仅在停止并重新启动Group Replication后生效。

    group_replication_tls_source 指定Group Replication的TLS材料来源。

  • group_replication_transaction_size_limit

    Command-Line Format --group-replication-transaction-size-limit=#
    System Variable group_replication_transaction_size_limit
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 150000000
    Minimum Value 0
    Maximum Value 2147483647
    Unit 字节

    该系统变量应该在所有组成员上具有相同的值。可以在 Group Replication 运行时更改该系统变量的值。更改立即生效,适用于下一个在该成员上启动的事务。在此过程中,该系统变量的值在组成员之间可能不同,但是一些事务可能会被拒绝。

    group_replication_transaction_size_limit 配置了复制组接受的最大事务大小(以字节为单位)。大于该大小的事务将被接收成员回滚,并且不会被广播到组中。大型事务可能会对复制组造成问题,例如内存分配问题,可能会使系统变慢,或者网络带宽消耗问题,可能会使成员被怀疑失败,因为它忙于处理大型事务。

    当该系统变量设置为 0 时,没有事务大小限制。从 MySQL 8.0 开始,该系统变量的默认设置为 150000000 字节(约 143 MB)。根据需要的最大消息大小调整该系统变量的值,考虑到事务处理时间与其大小成正比。group_replication_transaction_size_limit 的值应该在所有组成员上相同。有关大型事务的进一步缓解策略,请参阅 第 20.3.2 节,“Group Replication Limitations”

  • group_replication_unreachable_majority_timeout

    Command-Line Format --group-replication-unreachable-majority-timeout=#
    System Variable group_replication_unreachable_majority_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 31536000
    Unit

    该系统变量的值可以在 Group Replication 运行时更改,并且更改立即生效。当前的系统变量值在出现问题时被读取,该行为被需要。

    group_replication_unreachable_majority_timeout 指定了成员在网络分区且无法连接到多数时等待的秒数。在 5 服务器组(S1,S2,S3,S4,S5)中,如果存在网络分区(S1,S2)和(S3,S4,S5),则第一组(S1,S2)现在是少数,因为它无法联系到组的多数。同时,多数组(S3,S4,S5)保持运行,少数组等待指定的时间以重新连接网络。有关该场景的详细描述,请参阅 第 20.7.8 节,“Handling a Network Partition and Loss of Quorum”

    默认情况下,group_replication_unreachable_majority_timeout 设置为 0,这意味着成员在网络分区时等待永远离开组。如果您设置超时,当指定的时间结束时,所有挂起的事务将被回滚,少数服务器将移动到 ERROR 状态。如果成员具有 group_replication_autorejoin_tries 系统变量指定的自动重新加入尝试次数,它将尝试重新加入组的指定次数,同时处于超级只读模式。如果成员没有自动重新加入尝试次数,或者已经耗尽了指定的尝试次数,它将遵循系统变量 group_replication_exit_state_action 指定的操作。

    Warning

    当您拥有一个对称的组,例如只有两个成员(S0,S2),如果出现网络分区且没有多数,经过配置的超时后所有成员将进入 ERROR 状态。

    有关使用该选项的更多信息,请参阅 第 20.7.7.2 节,“Unreachable Majority Timeout”

  • 组复制视图更改UUID

    Command-Line Format --组复制视图更改uuid值
    Deprecated
    System Variable 组复制视图更改uuid
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value 自动
    Note

    该系统变量是一个组范围的配置设置,需要对复制组进行完整的重新启动以使更改生效。

    组复制视图更改uuid 指定了一个备用UUID,以便在组生成的视图更改事件的GTID中使用。该备用UUID使得这些内部生成的事务易于与从客户端接收的事务区分开来。这在您的设置允许组之间进行故障转移,并且您需要标识和丢弃特定于备份组的事务时非常有用。该系统变量的默认值为 自动,这意味着视图更改事件的GTID使用了由 组复制组名 系统变量指定的组名,就像客户端事务一样。在不支持该系统变量的版本中,组成员被视为具有 自动 值。

    备用UUID必须与 组复制组名 系统变量指定的组名不同,也必须与任何组成员的服务器UUID不同。它还必须与在该拓扑结构中的任何复制通道上应用于匿名事务的UUID不同,使用 ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS 选项的 CHANGE REPLICATION SOURCE TO 语句。

    该系统变量是一个组范围的配置设置。它必须在所有组成员上具有相同的值,不能在组复制运行时更改,并且需要对组进行完整的重新启动(由 组复制引导组=ON 的服务器引导)以使值更改生效。有关安全引导组的说明,请参阅 第 20.5.2 节,“Restarting a Group”

    如果组具有该系统变量的值,并且加入的成员具有不同的值,则加入的成员不能加入组,直到值被更改为匹配。如果组成员具有该系统变量的值,并且加入的成员不支持该系统变量,则它不能加入组。

    在 MySQL 8.3.0 中,视图更改事件的日志记录被替换为恢复元数据的共享,该变量已弃用。