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  /  ...  /  Group Replication System Variables

20.9.1 组复制系统变量

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

每个组复制系统变量的名称都以group_replication_开头。

Note

InnoDB 集群使用组复制,但组复制系统变量的默认值可能与本节中文档中记录的不同。例如,在 InnoDB 集群中,group_ replication_ communication_stack 的默认值是MYSQL,而不是XCOM,这是对默认组复制实现的。

更多信息,请见MySQL InnoDB 集群

组复制组成员的一些系统变量,包括一些组复制特定的系统变量和一些通用系统变量,是组-wide 配置设置。这些系统变量必须在所有组成员上具有相同的值,并且需要对整个组进行全局重新启动(由一个服务器执行group_ replication_bootstrap_group=ON)以便将值更改的效果生效。要了解如何在每个成员都已停止的情况下重新启动组,请见第20.5.2节,“ Restarting a Group”

如果正在运行的组已经为某个组-wide 配置设置指定了值,并且要加入该组的成员对该系统变量设置了不同的值,那么该成员不能直到将其值更改以匹配后才能加入该组。如果组已经为某个这些系统变量设置了值,而要加入该组的成员不支持该系统变量,那么该成员也不能加入该组。

以下是组-wide 配置设置:

组级配置设置在 Group Replication 运行时不能通过通常方法更改,但可以使用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节,“更改组模式”

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

大多数 Group Replication 系统变量都被描述为动态的,可以在服务器运行时更改值。然而,在大多数情况下,变化只会在你使用STOP GROUP_ REPLICATION语句后跟START GROUP_ REPLICATION语句后生效。以下系统变量的变化不需要停止和重新启动 Group Replication:

当您更改 Group Replication 系统变量的值时,请注意,如果在每个成员上同时执行STOP GROUP_REPLICATION语句或系统关机,群组必须在启动时重新启动,以便像第一次启动一样。关于安全地执行此操作的指南,请见第20.5.2节,“ Restarting a Group”。对于群组-wide 配置设置,这是必需的,但如果您正在更改其他设置,请尝试确保至少有一个成员始终运行。

Important
  • Group Replication 的一些系统变量在服务器启动时不完全验证,如果将它们作为命令行参数传递给服务器。这些系统变量包括group_replication_group_namegroup_replication_single_primary_modegroup_replication_force_members、SSL 变量和流量控制系统变量。它们只有在服务器启动后才能完全验证。

  • Group Replication 系统变量,用于指定组成员的 IP 地址或主机名,不会在 Group Replication 语句执行前被验证。Group Replication 的 Group Communication System(GCS)直到该点才可用来验证值。

以下是 Group Replication 插件特定的 Server 系统变量,及其功能或目的的描述:

  • group_replication_advertise_recovery_endpoints

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

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

    group_ replication_advertise_recovery_endpoints 指定了加入成员可以使用的连接方式,以便在分布式恢复中从现有成员获取状态。该连接用于远程克隆操作和从捐赠者的二进制日志中获取状态。

    值为DEFAULT,这是默认设置,意味着加入成员使用现有成员的标准SQL客户端连接,这由MySQL Server的hostnameport系统变量指定。如果由report_port系统变量指定了备用端口号,那么使用该端口号。性能chema表replication_group_membersMEMBER_HOSTMEMBER_PORT字段中显示该连接的地址和端口号。

    而不是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节,“选择分布式恢复端点”。总的来说,需要满足以下要求:

    • IP地址不需要配置为MySQL Server,但是它们必须被分配给服务器。

    • 端口需要在MySQL Server中使用portreport_portadmin_port系统变量中配置。

    • 如果使用admin_port,则需要 replication 用户具有适当的权限。

    • IP 地址不需要添加到由 group_replication_ip_allowlist 系统变量指定的 Group Replication 允许列表中。

    • 连接的 SSL 要求是根据 group_replication_recovery_ssl_* 选项指定的。

  • group_replication_allow_local_lower_version_join

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

    这个系统变量的值可以在 Group Replication 运行时更改,但是更改只会在您停止并重新启动 Group Replication 在组成员上生效。

    group_replication_allow_local_lower_version_join 允许当前服务器在运行低版本的 MySQL 服务端时仍然加入组。默认设置为OFF,服务器不允许在运行低版本时加入 replication 组。这一标准策略确保了组中的所有成员都可以交换消息并应用事务。请注意,运行 MySQL 8.0.17 或更高版本的成员会考虑发布的修订版本,而运行 MySQL 8.0.16 或更早版本的成员只会考虑主要版本。

    group_replication_allow_local_lower_version_join 设置为ON,只在以下情况下执行:

    • 服务器需要在紧急情况下添加到组,以提高组的容错性,并且只有较旧版本可用。

    • 您想回滚某些或所有复制组成员的升级,而不关闭整个组并重新启动它。

    Warning

    将该选项设置为ON 不会使新成员与组兼容,并允许它在没有任何保护措施下加入组,以确保新成员正确运行,请采取both以下预防措施:

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

    2. 从低版本服务器连接到组时,停止其他服务器在组中的写操作。

    否则,运行低版本的服务器可能会遇到困难并终止错误。

  • group_replication_auto_increment_increment

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

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

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

    Important

    设置group_复制自增值增量无效,当group_复制单主模式ON时。

    当 Group Replication 在服务器实例上启动时,服务器系统变量auto_increment_increment 的值将被更改为该值,并且服务器系统变量auto_increment_offset 的值将被更改为服务器 ID。这些更改在 Group Replication 停止时将被撤销。如果auto_increment_incrementauto_increment_offset 每个变量的默认值都是 1,那么这些更改才会被执行。如果它们的值已经被修改为非默认值,Group Replication 不会对它们进行修改。系统变量在 Group Replication 单主模式下也不会被修改,在这种模式下只有一个服务器写入。

  • group_replication_autorejoin_tries

    Command-Line Format --group-replication-autorejoin-tries=#
    System Variable group_replication_autorejoin_tries
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 3
    Minimum Value 0
    Maximum Value 2016

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

    group_ replication_autorejoin_tries 指定了成员在被驱逐或无法与大多数组成员保持联系(达到group_ replication_unreachable_majority_timeout 设置)时,自动重新加入组的尝试次数。当成员被驱逐或无法与大多数组成员保持联系达到设置时,它将尝试重新加入(使用当前插件选项值),然后继续进行进一步的自动重新加入尝试,直到指定的尝试次数。每次自动重新加入尝试失败后,成员将等待 5 分钟再次尝试。如果指定的尝试次数耗尽而成员未能重新加入或被停止,该成员将按照group_ replication_exit_state_action 系统变量指定的动作进行。

    在自动重新连接尝试期间和之间,成员将保持超级只读模式,不接受写入,但仍然可以对成员进行读取,随着时间的推移, stale reads 的可能性会增加。如果您不能容忍任何时间段内的 stale reads,设置group_ replication_ autorejoin_ tries为0。关于自动重新连接特性和选择该选项值时的考虑,请见第20.7.7.3节,“Auto- Rejoin”

  • group_ replication_ bootstrap_ group

    Command-Line Format --group-replication-bootstrap-group[={OFF|ON}]
    System Variable group_ replication_ bootstrap_ group
    Scope 全局
    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 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 9223372036854775807
    Minimum Value 1
    Maximum Value 9223372036854775807
    Unit 事务

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

    group_replication_clone_threshold 指定了在分布式恢复过程中,加入成员(recipient)和现有成员(donor)之间的事务差距,该差距会触发远程克隆操作以将状态传输到加入成员。如果加入成员与可用的捐赠者之间的事务差距超过阈值,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 组播复制系统变量
    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 Communication System(GCS)和group communication engine(XCom,Paxos变体)。调试信息将存储在数据目录中的GCS_DEBUG_TRACE文件中。

    可用的选项集,可以组合指定。以下是可用的选项:

    • GCS_DEBUG_NONE disable both GCS and 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 Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 10485760
    Minimum Value 0
    Maximum Value 1073741824
    Unit 字节

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

    group_ replication_communication_max_message_size 指定了 Group Replication 通信的最大消息大小。超过这个大小的消息将自动分割成片段,单独发送,并由接收方重新组装。更多信息,请见第20.7.5节,“消息分割”

    默认情况下,最大消息大小设置为10485760字节(10 MiB),这意味着碎片化被默认启用。允许的最大值与replica_max_allowed_packet系统变量的最大值相同,即1073741824字节(1 GB)。group_replication_communication_max_message_size设置必须小于replica_max_allowed_packet设置,因为应用线程无法处理大于最大允许数据包大小的消息碎片。要关闭碎片化,请将group_replication_communication_max_message_size设置为零。

    为了使复制组的成员使用碎片化,组的通信协议版本必须是 MySQL 8.0.16 或更高。可以使用group_replication_get_communication_protocol()函数查看组的通信协议版本。如果使用的是较低版本,组成员不进行消息碎片化。可以使用group_replication_set_communication_protocol()函数将组的通信协议设置为更高版本,如果所有组成员支持它。更多信息,请见第20.5.1.4节,“设置组的通信协议版本”

  • group_replication_communication_stack

    System Variable group_replication_communication_stack
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value XCOM
    Valid Values

    XCOM

    MYSQL

    Note

    这个系统变量实际上是一个组-wide 配置设置;虽然可以在运行时设置,但任何更改都需要整个复制组的重新启动以生效。

    group_ replication_communication_stack 指定了是否使用 XCom 通信栈或 MySQL 通信栈来建立组成员之间的通信连接。XCom 通信栈是 Group Replication 的实现,不支持身份验证或网络命名空间。MySQL 通信栈是 MySQL 服务器的native 实现,支持身份验证和网络命名空间,并且可以立即访问新安全功能。组中的所有成员都必须使用相同的通信栈。

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

    Note

    如果您正在使用 InnoDB 集群,group_ replication_communication_stack 的默认值是 MYSQL

    更多信息,请见MySQL InnoDB 集群

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

    group_ replication_通信栈 是一个群组级别的配置设置,所有群组成员都必须具有相同的值。然而,这不是 Group Replication 自己对群组级别配置设置的检查。拥有不同值的成员无法与其他成员通信,因为通信协议不兼容,因此无法交换其配置设置信息。

    这意味着,即使在 Group Replication 运行时可以更改系统变量的值,并且在重新启动群组成员后生效,但是成员仍然不能重新加入群组,直到所有成员都更改了该值。因此,您必须停止 Group Replication 在所有成员上,然后在它们上面更改系统变量的值,最后才能重新启动群组。由于所有成员都已停止,因此需要对整个群组进行完整的重启(由具有group_ replication_ bootstrap_group=ON的服务器执行的引导)以使该值生效。要了解如何从一个通信栈迁移到另一个,请见第20.6.1节,“连接安全管理中的通信栈”

  • group_ replication_components_stop_timeout

    Command-Line Format --group-replication-components-stop-timeout=#
    System Variable group_Replication_components_stop_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 300
    Minimum Value 2
    Maximum Value 31536000
    Unit

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

    group_Replication_components_stop_timeout 指定了 Group Replication 等待每个模块完成当前操作的时间,单位为秒。组件超时在发出STOP GROUP_Replication语句后生效,该语句在服务器重启或自动重新加入时自动发出。

    超时用于解决 Group Replication 组件无法正常停止的情况,这可能发生在成员被从组中expelled而处于错误状态,或者在 MySQL 企业备份过程中持有全局锁定表的成员上。 在这种情况下,成员不能停止应用线程或完成分布式恢复过程以重新加入。STOP GROUP_Replication 不会完成,直到情况被解决(例如,锁定被释放)或超时期限到期并且模块无视状态被强制关闭。

    默认值为300秒,因此如果情况不能在5分钟内解决,Group Replication组件将被停止,允许成员重新启动并重新加入。

  • group_replication_compression_threshold

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

    组件成员之间发送的消息的压缩阈值(以字节为单位)。如果该系统变量设置为零,压缩将被禁用。所有组件成员上的group_Replication_Compression_Threshold的值应该相同。

    Group Replication 使用 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 BEFORE_ON_PRIMARY_FAILOVER
    Valid Values

    EVENTUAL

    BEFORE_ON_PRIMARY_FAILOVER

    BEFORE

    AFTER

    BEFORE_AND_AFTER

    该系统变量的值可以在 Group Replication 运行时更改。group_replication_consistency 是服务器系统变量,而不是 Group Replication 插件特定的变量,因此不需要重新启动 Group Replication 才能生效。更改会话值的系统变量立即生效,改变全局值则对新启动的会话生效。GROUP_REPLICATION_ADMIN 权限是必要的,以便更改该系统变量的全局设置。

    group_replication_consistency 控制组提供的事务一致性保证。您可以对该变量进行全局或事务级别的配置。group_replication_consistency 还控制新选举的主节点在单个主节点组中使用的围栏机制。需要考虑该变量的影响,包括只读(RO)和读写(RW)事务。以下列表显示了该变量的可能值,按递增的事务一致性保证顺序排列:

    • EVENTUAL

      RO 和 RW 事务都不等待前一个事务被应用后执行。这是 Group Replication 在添加该变量之前的行为。RW 事务不等待其他成员应用事务。这意味着在一个成员上可能会在其他成员之前外部化事务。这也意味着,在主节点故障转移时,新的主节点可以在前一个主节点事务都被应用之前接受新的事务。RO 事务可能会返回 outdated 值,RW 事务可能会由于冲突而回滚。

    • BEFORE_ON_PRIMARY_FAILOVER

      新选举的主节点正在应用老主节点 backlog 的 RO 或 RW 事务将被保留(不被应用)直到 backlog 完全被应用。这确保了在主节点故障转移时,客户端总是可以看到最新值。这样保证了一致性,但意味着客户端必须能够处理延迟,以便在 backlog 正在被应用时。通常,这个延迟应该很小,但取决于 backlog 的大小。

    • BEFORE

      RW事务等待所有前置事务完成后才被应用。RO事务等待所有前置事务完成后才被执行。这确保了该事务只读取最新值,而不是影响事务的延迟。这减少了每个RW事务上的同步开销,只在RO事务上使用同步。这一致性级别还包括BEFORE_ON_PRIMARY_FAILOVER提供的一致性保证。

    • AFTER

      RW事务等待其更改被应用到所有其他成员上。这对RO事务没有影响。这一模式确保了当在本地成员上提交事务时,任何后续事务都可以读取写入值或更 recent 值于任何组成员上。使用该模式与用于主要 RO 操作的组来确保已提交 RW 事务被应用到所有地方。这可以由您的应用程序使用,以确保后续读取 fetch 最新数据,包括最新写入。这减少了每个RO事务上的同步开销,只在RW事务上使用同步。这一致性级别还包括BEFORE_ON_PRIMARY_FAILOVER提供的一致性保证。

    • BEFORE_AND_AFTER

      RW事务等待所有前置事务完成后才被应用,并且等待其更改被应用到其他成员上。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

    这个系统变量是一个组-wide 配置设置,需要整个复制组的重启才能生效。

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

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

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

    这个系统变量是组-wide 配置设置。它必须在所有组成员上具有相同值,不允许在 Group Replication 运行时更改,并且需要对整个组进行完整的重启(使用服务器上的group_ replication_bootstrap_group=ON)以使值更改生效。有关安全地在事务已经执行和证实的情况下重启组的指南,请参阅第20.5.2节,“ Restarting a Group”

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

    使用group_ replication_switch_to_single_primary_mode()group_ replication_switch_to_multi_primary_mode()函数来在组仍然运行时更改这个系统变量的值。更多信息,请参阅第20.5.1.2节,“ Changing the Group Mode”

  • 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 OFFLINE_ MODE
    Valid Values

    ABORT_SERVER

    OFFLINE_MODE

    READ_ONLY

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

    group_ replication_exit_state_action 配置 Group Replication 在意外离开组中的行为,例如在遇到应用程序错误、失去多数或其他组成员因怀疑超时而驱逐它的情况下。失去多数的超时期由 group_ replication_unreachable_majority_timeout 系统变量设置,而怀疑超时期由 group_ replication_member_expel_timeout 系统变量设置。请注意,驱逐的组成员直到重新连接组时才知道自己被驱逐,因此指定的操作仅在成员成功重新连接或成员对自己raise怀疑并驱逐自己时执行。

    当组成员因怀疑超时或失去多数而被驱逐,如果该成员设置了 group_ replication_autorejoin_tries 系统变量指定自动重新连接尝试次数,它首先在超级只读模式下进行指定次数的尝试,然后执行由 group_ replication_exit_state_action 指定的操作。自动重新连接尝试不在应用程序错误情况下进行,因为这些错误不可恢复。

    group_replication_exit_state_action设置为READ_ONLY,如果成员意外退出组或耗尽自动重新加入尝试,实例将切换到超级只读模式(通过将系统变量super_read_only设置为ON)。

    group_replication_exit_state_action设置为OFFLINE_MODE,如果成员意外退出组或耗尽自动重新加入尝试,实例将切换到离线模式(通过将系统变量offline_mode设置为ON)。在这个模式下,已连接的客户端用户将在他们的下一个请求中断开,并且不再接受新的连接,除非是拥有CONNECTION_ADMIN特权(或弃用的SUPER特权)的客户端用户。Group Replication还将系统变量super_read_only设置为ONCONNECTION_ADMINSUPER特权,也不能执行任何更新操作。

    group_replication_exit_state_action设置为ABORT_SERVER时,如果成员意外退出组或耗尽自动重新加入尝试,实例将关闭 MySQL。

    Important

    如果在成员成功加入组之前出现故障,指定的退出动作不会被执行。这可能是由于本地配置检查失败或加入成员的配置与组的配置不匹配的情况。在这些情况下,super_read_only系统变量将保留其原始值,连接继续被接受,服务器不会关闭 MySQL。因此,我们建议在启动服务器时将super_read_only=ON设置在配置文件中,这样 Group Replication 在成功启动后将其更改为OFF在主成员上。这一安全措施尤其重要,当服务器被配置以在引导时启动 Group Replication (group_replication_start_on_boot=ON),但也对手动使用START GROUP_REPLICATION命令启动 Group Replication 时非常有用。

    关于使用该选项的更多信息和退出操作在何种情况下被采取,请见第20.7.7.4节,“Exit Action”

  • 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_flow_control_certifier_threshold 指定了证书队列中等待事务的数量,触发流量控制。

  • 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_flow_control_hold_percent 定义了群组下流量控制情况下,允许集群追赶工作 backlog 的未使用百分比。值为 0 表示不保留任何quota用于追赶工作 backlog。

  • group_replication_flow_control_max_quota

    Command-Line Format --group-replication-flow-control-max-quota=#
    System Variable group_replication_flow_control_max_quota
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 2147483647

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

    group_replication_flow_control_max_quota 定义了群组的最大流量控制配额或在流量控制启用时任何时间段中的可用配额。值为 0 表示没有设置最大配额。该系统变量的值不能小于group_replication_flow_control_min_quotagroup_replication_flow_control_min_recovery_quota

  • group_replication_flow_control_member_quota_percent

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

    该系统变量的值可以在群组复制运行时更改,并且更改立即生效。

    group_replication_flow_control_member_quota_percent 定义了成员在计算配额时应该假设自己可用的配额百分比。值为 0 表示在最后一个时间段中写入的成员应该等比例分配配额。

  • group_replication_flow_control_min_quota

    Command-Line Format --group-replication-flow-control-min-quota=#
    System Variable group_replication_flow_control_min_quota
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 2147483647

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

    group_replication_flow_control_min_quota 控制了成员可以分配的最低流量控制配额,独立于最后一个时间段中计算的最小配额。值为 0 表示没有最小配额。这系统变量的值不能大于group_replication_flow_control_max_quota

  • group_replication_flow_control_min_recovery_quota

    Command-Line Format --group-replication-flow-control-min-recovery-quota=#
    System Variable group_replication_flow_control_min_recovery_quota
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 0
    Minimum Value 0
    Maximum Value 2147483647

    这个系统变量的值可以在群组复制运行时更改,并且立即生效。

    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_□

    Command-Line Format --_group-_replication-_flow-_control-release-□=#
    System Variable group__replication__flow__control_\_;release_□
    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指定的是一个逗号分隔的-peer 地址列表,例如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 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

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

    组播复制组名称 指定了该服务器实例所属的组名,该组名必须是有效的UUID。这个UUID是写入二进制日志中的GTIDs的一部分,当客户端将事务发送给组成员时,以及组成员内部生成的视图变化事件时。

    Important

    必须使用唯一的UUID。

  • 组播复制组种子

    Command-Line Format --组播复制组种子=值
    System Variable 组播复制组种子
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    在组播复制运行时,可以更改该系统变量的值,但更改只在您停止和重新启动组成员后生效。

    group_ replication_group_seeds 是一个包含加入成员可以连接以获取当前组成员详细信息的组成员列表。加入成员使用这些详细信息选择并连接到组成员以获取同步数据所需的数据。该列表由每个包含种子成员的单个内部网络地址或主机名组成,如种子成员在其group_ replication_local_address系统变量中配置的那样(而不是种子成员的SQL客户端连接,指定了MySQL Server的hostnameport系统变量)。种子成员的地址以逗号分隔列表形式指定,如host1:port1,host2:port2。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语句并且Group Communication System(GCS)可用时才被验证。

    通常,这个列表包含组中的所有成员,但您可以选择组成员的子集作为种子。该列表必须至少包含一个有效的成员地址。当启动 Group Replication 时,每个地址都会被验证。如果列表中没有任何有效的成员地址,执行START GROUP_REPLICATION将失败。

    当服务器加入复制组时,它尝试连接到其group_replication_group_seeds系统变量中列出的第一个种子成员。如果连接被拒绝,加入的成员将尝试连接到列表中的其他种子成员,以顺序方式。如果加入的成员连接到种子成员,但不能作为结果添加到复制组(例如,因为种子成员不包含加入成员的地址在其allowlist中并关闭连接),加入的成员将继续尝试剩余的种子成员,以顺序方式。

    加入成员必须使用seed成员在group_replication_group_seeds选项中广告的同一协议(IPv4或IPv6)与seed成员通信。对于Group Replication的IP地址权限,seed成员的allowlist必须包含加入成员在seed成员提供的协议下面的IP地址或主机名,该主机名可以解析为该协议下的地址。此外,如果加入成员的group_ replication_local_address不匹配seed成员广告的协议,则需要在seed成员的allowlist中添加该地址或主机名。如果加入成员没有适当协议的允许地址,连接尝试将被拒绝。更多信息,请见第20.6.4节,“Group Replication IP Address Permissions”

  • group_replication_gtid_assignment_block_size

    Command-Line Format --group-replication-gtid-assignment-block-size=#
    System Variable group_replication_gtid_assignment_block_size
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 1000000
    Minimum Value 1
    Maximum Value (64-bit platforms) 9223372036854775807
    Maximum Value (32-bit platforms) 4294967295
    Note

    该系统变量是群组级别的配置设置,需要整个复制组重新启动才能生效。

    group_ replication_gtid_assignment_block_size 指定了每个群组成员保留的连续GTID数量。每个成员消费自己的块并在需要时预留更多。

    该系统变量是群组级别的配置设置。它必须在所有群组成员上具有相同值,不能在Group Replication正在运行时更改,并且需要整个组重新启动(由一个支持group_ replication_bootstrap_group=ON的服务器)才能生效。有关安全地在事务已经执行和认证的情况下重启组的指南,请参阅第20.5.2节,“ Restarting a Group”

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

  • group_ replication_ip_allowlist

    Command-Line Format --group-replication-ip-allowlist=值
    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第20.6.4节,“Group Replication IP Address Permissions”。

    自动允许私有地址不能用于来自外部私有网络的连接。对于在不同机器上的Group Replication服务器实例之间建立连接,您必须提供公共IP地址并指定这些作为明确的allowlist。如果您指定了allowlist中的任何条目,私有地址将不会被自动添加,因此如果您使用其中的一些,您必须指定它们。localhost IP地址将被自动添加。

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

    • IPv4地址(例如:198.51.100.44)

    • 使用CIDR记法的IPv4地址(例如:192.0.2.21/24)

    • IPv6地址(例如:2001:db8:85a3:8d3:1319:8a2e:370:7348)

    • 使用CIDR记法的IPv6地址(例如:2001:db8:85a3:8d3::/64)

    • 主机名称(例如,example.org

    • 使用CIDR notation的主机名称(例如,www.example.com/24

    主机名称可以解析为IPv4地址、IPv6地址或两者。如果一个主机名称解析为同时包含IPv4和IPv6地址,那么在Group Replication连接中总是使用IPv4地址。你可以将CIDR notation与主机名称或IP地址结合使用,以允许特定的网络前缀下的IP地址块,但请确保指定子网中的所有IP地址都在你的控制下。

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

    "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地址,而加入成员的IPv4group_replication_local_address,或者反之,你必须为加入成员设置和允许该协议提供的alternative地址(或一个解析为该协议地址的主机名称)。更多信息请见第20.6.4节,“Group Replication IP Address Permissions”

    可以根据安全要求在不同的组成员上配置不同的allowlist,例如,以保持不同的子网隔离。但是,这可能会在组重新配置时出现问题。如果您没有特殊的安全要求,建议在所有组成员上使用相同的allowlist。更多信息,请见第20.6.4节,“Group Replication IP Address Permissions”

    对于主机名,名称解析仅在另一个服务器连接请求时进行。无法解析的主机名不被视为allowlist验证对象,并将写入错误日志。对解析后的主机名执行了前向确认反向DNS(FCrDNS)验证。

    Warning

    主机名在allowlist中相比IP地址更不安全。FCrDNS验证提供了良好的保护,但可以被某些类型的攻击所 compromisse。仅在严格必要时在allowlist中指定主机名,并确保所有用于名称解析的组件,例如DNS服务器,都在您的控制下。你也可以使用hosts文件实现本地名称解析,以避免使用外部组件。

  • group_replication_local_address

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

    在 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 中一个群组成员的唯一标识符。您可以为所有 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文件或其他名称解析过程可解析。IPv6 地址必须在方括号中指定,以区分端口号,例如:

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

    如果将 Group Replication 本地地址指定为服务器实例的主机名,并且该主机名解析到 IPv4 和 IPv6 地址,Group Replication 连接总是使用 IPv4 地址。关于 IPv6 网络对 Group Replication 的支持,以及混杂 IPv4 和 IPv6 成员的复制组,请参阅第20.5.5节,“IPv6 和混杂 IPv6 和 IPv4 组织的支持”

    如果您使用XCom通信栈来在成员之间建立群组通信连接(group_ replication_communication_stack = XCOM),那么在每个群组成员中指定的地址(group_ replication_local_address)必须添加到其他服务器中的group_ replication_ip_allowlist系统变量中。使用XCom通信栈时,allowlist用于控制对群组的访问。当使用MySQL通信栈时,用户身份验证用于控制对群组的访问,并且allowlist不被使用且被忽略。如果seed成员中的任何一个在group_ replication_group_seeds选项中指定了IPv6地址,而这个成员的group_ replication_local_address是IPv4的,或者反之,您必须设置和允许该成员的替代地址以满足所需协议(或解析为该协议的主机名)。更多信息,请见第20.6.4节,“Group Replication IP Address Permissions”

  • group_replication_member_expel_timeout

    Command-Line Format --group-replication-member-expel-timeout=#
    System Variable group_replication_member_expel_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 5
    Minimum Value 0
    Maximum Value 3600
    Unit

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

    group_replication_member_expel_timeout 指定 Group Replication 群组成员在创建怀疑后等待的秒数,以便将怀疑的成员从群组中驱逐。初始 5 秒的检测期限不计入该时间。group_replication_member_expel_timeout 的默认值为 5,意味着怀疑的成员在检测期限后 5 秒内将被驱逐。

    group_replication_member_expel_timeout的值更改在该组成员上立即生效,对于现有和未来的怀疑都有效。因此,您可以使用这个方法强制怀疑超时并驱逐怀疑的成员,从而允许对组配置的更改。更多信息,请见第20.7.7.1节,“Expel Timeout”

    group_replication_member_expel_timeout的值增加可以帮助避免在较慢或不稳定的网络上或在预期的瞬态网络中断或机器减速的情况下进行不必要的驱逐。如果怀疑成员再次变得活动前超时,剩余组成员将应用缓冲区中的所有消息,并进入ONLINE状态,不需要操作员干预。您可以指定超时值,最大值为3600秒(1小时)。重要的是确保XCom的消息缓存大小足够容纳您的指定时间期限内的消息体积,以及初始5秒检测期限,以免成员无法重新连接。您可以使用group_replication_message_cache_size系统变量调整缓存大小限制。更多信息,请见第20.7.6节,“XCom Cache Management”

    如果超时时间到期,疑似成员将立即被驱逐。如果成员能够恢复通信,并收到 expulsion 的视图,而该成员已经设置了group_replication_autorejoin_tries系统变量指定的自动重新加入尝试次数,它将在超级只读模式下进行指定次数的重新加入尝试。如果成员没有指定自动重新加入尝试次数,或者已经耗尽指定次数,它将遵循由group_replication_exit_state_action系统变量指定的操作。

    有关使用group_replication_member_expel_timeout设置的更多信息,请参阅第20.7.7.1节,“Expel Timeout”。对于在该系统变量不可用时避免不必要驱逐的替代mitigation策略,请参阅第20.3.2节,“Group Replication Limitations”

  • group_replication_member_weight

    Command-Line Format --group-replication-member-weight=#
    System Variable group_Replication_member_weight
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 50
    Minimum Value 0
    Maximum Value 100
    Unit 百分比

    在Group Replication运行时,可以更改该系统变量的值,变化立即生效。在failover情况下,系统变量当前值将被读取。

    group_Replication_member_weight指定了成员的百分比权重,可以影响成员在failover事件中被选为主节点的可能性,例如,当现有主节点离开单主节点组时。将数字权重分配给成员,以确保特定成员被选举,例如,在计划维护主节点或确保某些硬件在failover事件中优先级高的情况下。

    对于具有以下成员配置的组:

    • member-1:group_Replication_member_weight=30,server_uuid=aaaa

    • member-2:group_Replication_member_weight=40,server_uuid=bbbb

    • member-3:group_Replication_member_weight=40,server_uuid=cccc

    • member-4:group_Replication_member_weight=40,server_uuid=dddd

    在选举新的主服务器时,这些成员将被排序为member-2member-3member-4member-1。这将导致在failover事件中,选择member-2作为新的主服务器。更多信息,请见第20.1.3.1节,“单主模式”

  • group_replication_message_cache_size

    Command-Line Format --group-replication-message-cache-size=#
    System Variable group_replication_message_cache_size
    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 字节

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

    group_ replication_message_cache_size 设置了 Group Replication(XCom)中消息缓存的最大内存量。XCom 消息缓存保存了在集团成员之间作为一部分的一致性协议中交换的消息(及其元数据)。除了其他功能外,消息缓存还用于恢复成员连接到集团后错过的消息。这些成员在无法与其他集团成员通信时断开连接,并重新连接到集团。

    group_ replication_member_expel_timeout 系统变量确定了在检测到成员返回集团之前允许的等待时间(最长为 1 小时)。XCom 消息缓存的大小应该根据预期的消息体积设置,以容纳在这个时间段内错过的所有消息,使成员能够成功返回。默认情况下,等待时间是 5 秒钟,总时间段为 10 秒钟。

    确保您的系统中有足够的内存来满足您选择的缓存大小限制,考虑 MySQL 服务器其他缓存和对象池的大小。默认设置为1073741824字节(1 GB)。最小设置为134217728字节(128 MB),这使得在具有受限可用内存的主机上部署,可以通过良好的网络连接来减少组成员之间的暂时连接中断的频率和持续时间。请注意,使用group_replication_message_cache_size设置的限制仅适用于缓存中的数据,而不是缓存结构本身需要额外的50 MB内存。

    缓存大小限制可以在运行时动态地增加或减少。如果您减少缓存大小限制,XCom 将删除最旧的已决议和交付的条目,直到当前大小低于限制。Group Replication 的 Group Communication System(GCS)将在移除可能用于恢复的成员当前不可达的消息时向您发出警告信息。有关调整消息缓存大小的更多信息,请见第20.7.6节,“XCom 缓存管理”

  • group_replication_paxos_single_leader

    Command-Line Format --group-replication-paxos-single-leader[={OFF|ON}]
    System Variable group_replication_paxos_single_leader
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF
    Note

    这个系统变量是一个群组级别的配置设置,需要整个复制组重新启动才能生效。

    group_ replication_paxos_single_leader 在群组在单主模式下启用了群组通信引擎使用单个共识领导人。默认设置为OFF,这将禁用该行为,每个群组成员都将被用作领导人,这是之前版本的行为。当系统变量设置为ON时,群组通信引擎可以使用单个领导人来驱动共识。使用单个共识领导人在单主模式下改善了性能和可靠性,特别是在一些群组次要成员当前不可达的情况下。更多信息,请见第20.7.3节,“单个共识领导人”

    为了让组通信引擎使用单个共识领导人,组的通信协议版本必须是 MySQL 8.0.27 或更高。可以使用group_ replication_get_communication_protocol()函数查看组的通信协议版本。如果使用的是较低版本,组不能使用该行为。可以使用group_ replication_set_communication_protocol()函数将组的通信协议设置为更高版本,如果所有组成员支持它。更多信息,请见第20.5.1.4节,“设置组的通信协议版本”

    这个系统变量是一个组级配置设置。它必须在所有组成员上具有相同值,不能在Group Replication正在运行时更改,并且需要对整个组进行完整重启(由一个服务器执行group_ replication_bootstrap_group=ON)以便将值更改的效果生效。关于安全地在事务已经被执行和认证的情况下重启组的指南,请见第20.5.2节,“重启组”

    如果组有为该系统变量设置的值,并且要加入的成员对该系统变量设置了不同的值,那么要加入的成员不能直到将值更改以匹配后才能加入。如果组成员对该系统变量设置了值,而要加入的成员不支持该系统变量,那么它不能加入组。

    replication_ group_communication_ information中的WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE字段显示了组是否支持使用单个领导,即使group_ replication_paxos_single_leader当前设置为OFF在查询成员上。该字段如果组启动时group_ replication_paxos_single_leader设置为ON,并且通信协议版本是MySQL 8.0.27或更高,则将其设置为1。

  • group_ replication_poll_spin_loops

    Command-Line Format --group-replication-poll-spin-loops=#
    System Variable group_ replication_poll_spin_loops
    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

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

    group_ replication_poll_spin_loops 指定了组通信线程等待通信引擎锁释放的次数,直到线程等待更多 incoming 网络消息。

  • group_ replication_recovery_compression_algorithms

    Command-Line Format --group-replication-recovery-compression-algorithms=value
    System Variable group_ replication_recovery_compression_algorithms
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Set
    Default Value uncompressed
    Valid Values

    zlib

    zstd

    uncompressed

    在 Group Replication 运行时,可以更改这个系统变量的值,但是更改只会在你停止并重新启动 Group Replication 在组成员上生效。

    group_replication_recovery_compression_algorithms 指定了 Group Replication 分布式恢复连接的状态传输从捐赠者的二进制日志中使用的压缩算法。可用的算法与protocol_compression_algorithms 系统变量相同。更多信息,请见第6.2.8节,“连接压缩控制”

    这个设置不适用于服务器已经被设置为支持克隆(见第20.5.4.2节,“分布式恢复的克隆”)并且在分布式恢复中使用远程克隆操作。在这种状态传输方法中,克隆插件的clone_enable_compression 设置生效。

  • group_replication_recovery_get_public_key

    Command-Line Format --group-replication-recovery-get-public-key[={OFF|ON}]
    System Variable group_replication_recovery_get_public_key
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

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

    group_ replication_recovery_get_public_key 指定是否从源服务器请求用于RSA密钥对密码交换的公共密钥。如果group_ replication_recovery_public_key_path设置为有效的公共密钥文件,它将优先于group_ replication_recovery_get_public_key。该变量适用于您不使用SSL在group_ replication_recovery通道上分布式恢复(group_ replication_recovery_use_ssl=ON),并且Group Replication身份验证使用caching_sha2_password插件(默认)。更多详细信息,请见第20.6.3.1.1节,“Replication User With The Caching SHA-2 Authentication Plugin”

  • group_ replication_recovery_public_key_path

    Command-Line Format --group-replication-recovery-public-key-path=file_name
    System Variable group_复制恢复公共密钥路径
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名称
    Default Value 空字符串

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

    group_replication_恢复公共密钥路径 指定了包含源服务器所需的 RSA 密钥对密码交换公钥副本的文件路径名。该文件必须以 PEM 格式保存。如果将group_replication_恢复公共密钥路径 设置为有效的公钥文件,它将优先于group_replication_恢复获取公共密钥。该变量适用于您不使用 SSL 通过group_replication_恢复渠道进行分布式恢复(因此group_replication_恢复使用SSL 设置为OFF),并且 Group Replication 认证用户帐户使用caching_sha2_password插件(默认)或sha256_password插件 authenticates。 (对于sha256_password,设置group_replication_恢复公共密钥路径 只适用于使用 OpenSSL 构建的 MySQL 实例。) 详细信息请见第20.6.3.1.1节,“使用 Caching SHA-2 认证插件的复制用户”

  • group_replication_recovery_reconnect_interval

    Command-Line Format --group-replication-recovery-reconnect-interval=#
    System Variable group_replication_recovery_reconnect_interval
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 60
    Minimum Value 0
    Maximum Value 31536000
    Unit

    这个系统变量的值可以在 Group Replication 运行时更改,但是更改只会在您停止并重新启动 Group Replication 在组成员上生效。

    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 运行时,可以更改该系统变量的值,但更改只在您停止并重新启动 Group Replication 在组成员上生效。

    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 运行时,可以更改该系统变量的值,但更改只在您停止并重新启动 Group Replication 在组成员上生效。

    group_replication_recovery_ssl_ca 指定了用于分布式恢复连接的可信 SSL 证书权威列表文件路径。请参阅第20.6.2节,“使用 Secure Socket Layer (SSL) 保护群组通信连接”,了解如何为分布式恢复配置 SSL。

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

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

  • group_replication_恢复ssl_ca_path

    Command-Line Format --group-replication-恢复ssl-ca-path=value
    System Variable group_replication_恢复ssl_ca_path
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    这个系统变量的值可以在 Group Replication 运行时更改,但是更改只会在您停止并重新启动 Group Replication 在群组成员上生效。

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

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

  • group_replication_recovery_ssl_cert

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

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

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

    如果服务器已经设置了支持克隆(见第20.5.4.2节,“分布式恢复中的克隆”),并且您将group_replication_recovery_use_ssl设置为ON, Group Replication 将自动配置克隆 SSL 选项clone_ssl_cert以匹配您的group_replication_recovery_ssl_cert设置。

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

  • group_replication_recovery_ssl_cipher

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

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

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

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

  • group_replication_recovery_ssl_crl

    Command-Line Format --group-replication-recovery-ssl-crl=value
    System Variable group_replication_recovery_ssl_crl
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名

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

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

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

  • group_replication_recovery_ssl_crlpath

    Command-Line Format --group-replication-recovery-ssl-crlpath=value
    System Variable group_replication_recovery_ssl_crlpath
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名称

    这个系统变量的值可以在 Group Replication 运行时更改,但是更改只在您停止和重新启动 Group Replication 在群组成员上生效。

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

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

  • group_replication_recovery_ssl_key

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

    这个系统变量的值可以在 Group Replication 运行时更改,但是更改只会在您停止并重新启动 Group Replication 在群组成员上生效。

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

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

    当 MySQL 通信栈用于群组 (group_replication_通信栈 = 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 指定了分布式恢复连接是否应该检查捐赠服务器的证书中的 Common Name 值。请参阅第20.6.2节,“使用 Secure Socket Layer (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_recovery_tls_ciphersuites 指定了 TLSv1.3 连接加密时,分布式恢复连接的允许密码套件列表,当前服务器实例是分布式恢复连接中的客户端,即加入成员。如果该系统变量设置为 NULL 时,使用 TLSv1.3(默认情况下,如果不设置系统变量),则启用默认允许的密码套件,如第8.3.2节,“加密连接 TLS 协议和密码”中所列。如果该系统变量设置为空字符串,则不允许任何密码套件,故 TLSv1.3 不被使用。请参阅第20.6.2节,“使用 Secure Socket Layer (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 协议版本列表。参与每个分布式恢复连接的组成员作为客户端(加入成员)和服务器(捐赠者)之间将选择支持的最高协议版本。

    在 MySQL 通信栈用于组(group_Replication_Communication_Stack = MYSQL)时,这个设置将用于组通信连接和分布式恢复连接的 TLS/SSL 配置。

    默认值为““TLSv1.2, TLSv1.3””。确保指定的协议版本是连续的,没有版本号从中间跳过。

    Important

    详见第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 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value OFF

    在组播复制运行时,可以更改该系统变量的值,但更改只在您停止和重新启动组播成员后生效。

    group_replication_recovery_use_ssl 指定了是否在组播成员之间使用 SSL 进行分布式恢复连接。请参阅第20.6.2节,“使用Secure Socket Layer (SSL) 安全组播通信连接”以获取关于配置 SSL 的分布式恢复的信息。

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

  • group_replication_recovery_zstd_compression_level

    Command-Line Format --group-replication-recovery-zstd-压缩级别=#
    System Variable group_replication_recovery_zstd_压缩级别
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 3
    Minimum Value 1
    Maximum Value 22

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

    group_replication_recovery_zstd_压缩级别 指定了使用 zstd 压缩算法的 Group Replication 分布式恢复连接的压缩级别。允许的级别从 1 到 22,较大的值表示更高的压缩级别。默认的 zstd 压缩级别是 3。对于不使用 zstd 压缩算法的分布式恢复连接,这个变量无效。

    更多信息,请见第 6.2.8 节,“Connection Compression Control”

  • group_replication_single_primary_mode

    Command-Line Format --group-replication-single-primary-mode[={OFF|ON}]
    System Variable group_美流亚微信须
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔值
    Default Value ON
    Note

    这个系统变量是一个群组级别的配置设置,需要对复制组进行全局重新启动才能生效。

    group_美流亚微信须 告诉群组自动选择一个服务器来处理读写工作负载。这台服务器是主服务器,其他所有服务器都是从服务器。

    这个系统变量是一个群组级别的配置设置。它必须在所有群组成员上具有相同的值,不允许在 Group Replication 运行时更改,并且需要对复制组进行全局重新启动(由一个支持 group_美流亚微信须 的服务器执行 bootstrap)才能生效。有关安全地在事务已经被执行和认证的情况下重启群组的指南,请参阅 第20.5.2节,“ Restarting a Group”

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

    设置该变量ON将忽略group_replication_auto_increment_increment的任何设置。

    使用group_replication_switch_to_single_primary_mode()group_replication_switch_to_multi_primary_mode()函数在组仍在运行时更改该系统变量的值。更多信息,请见第20.5.1.2节,“Changing the Group Mode”

  • group_replication_ssl_mode

    Command-Line Format --group-replication-ssl-mode=value
    System Variable group_replication_ssl_mode
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 枚举
    Default Value DISABLED
    Valid Values

    DISABLED

    REQUIRED

    VERIFY_CA

    VERIFY_IDENTITY

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

    group_replication_ssl_mode 设置 Group Replication 成员之间的组通信连接的安全状态。可能的值如下:

    DISABLED

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

    REQUIRED

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

    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 --_roup-\replication-\tls-source=■
    System Variable group__replication_\tls_source
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Enumeration
    Default Value mysql__main
    Valid Values

    mysql__main

    mysql__admin

    group__replication_\tls_source 的值可以在Group Replication运行时更改,但是更改只在您停止并重新启动Group Replication成员后生效。

    group__replication_\tls_source指定Group Replication的TLS材料来源。

  • group__replication_transaction_size_limit

    Command-Line Format --_roup-\replication-transaction-size-limit=#
    System Variable group__replication_transaction_size_limit
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 150000000
    Minimum Value 0
    Maximum Value 2147483647
    Unit 字节

    这个系统变量在所有组成员上应该具有相同的值。该系统变量的值可以在 Group Replication 运行时更改。更改将立即生效于组成员,并且从该成员开始的下一个事务中生效。在这个过程中,系统变量的值允许在组成员之间不同,但某些事务可能会被拒绝。

    group_ replication_transaction_size_limit 配置了复制组接受的最大事务大小(以字节为单位)。大于这个大小的事务将在接收成员中回滚,并且不会广播到组。较大的事务可以对复制组造成问题,例如可能会导致内存分配问题,从而使系统变慢,也可能会导致网络带宽消耗问题,使得某个成员被认为已经失败,因为它正在处理大事务。

    当这个系统变量设置为0时,组不对交易大小施加限制。该系统变量的默认值是150000000字节(约143MB)。根据您需要组 tolerate 的最大消息大小调整该系统变量的值,同时考虑处理事务的时间是与其大小成比例的。所有组成员上都应该设置group_replication_transaction_size_limit的值相同。关于大事务的mitigation策略,见第20.3.2节,“组复制限制”

  • group_replication_unreachable_majority_timeout

    Command-Line Format --group-replication-unreachable-majority-timeout=#
    System Variable group_replication_unreachable_majority_timeout
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 0
    Minimum Value 0
    Maximum Value 31536000
    Unit

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

    group_replication_unreachable_majority_timeout 指定了成员在网络分区中无法连接到大多数时等待的秒数。在一个由5个服务器组成的群体(S1、S2、S3、S4、S5)中,如果出现(S1、S2)和(S3、S4、S5)的断开连接,那么就出现了网络分区。现在,第一个群体(S1、S2)处于少数状态,因为它无法与群体的多数部分保持联系。在大多数群体(S3、S4、S5)继续运行的情况下,少数群体等待指定时间以便网络重新连接。关于这个场景的详细描述,请见第20.7.8节,“处理网络分区和多数丢失”

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

    Warning

    在具有对称组的场景中,例如只有两个成员(S0、S2),如果出现网络分区且没有多数成员,超时到期后所有成员将转换到ERROR状态。

    有关使用该选项的更多信息,请见第20.7.7.2节,“无法到达多数超时”

  • group_replication_view_change_uuid

    Command-Line Format --group-replication-view-change-uuid=值
    Deprecated
    System Variable group_ replication_view_change_uuid
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value AUTOMATIC
    Note

    这个系统变量是一个群组级别的配置设置,需要对整个复制组进行完整的重启才能生效。

    group_ replication_view_change_uuid指定了在生成由群组生成的视图更改事件时使用的备用UUID的一部分。备用UUID使得这些内部生成的事务易于区分来自客户端的事务。这可以在您的设置允许群组之间的故障转移,并且您需要识别并丢弃特定于备份群组的事务时非常有用。这个系统变量的默认值是AUTOMATIC,这意味着视图更改事件的GTIDs使用group_ replication_group_name系统变量指定的群组名称,就像来自客户端的事务一样。没有这个系统变量的群组成员将被视为具有AUTOMATIC值。

    备用UUID必须不同于由group_replication_group_name系统变量指定的组名,并且不能与任何组成员的服务器UUID相同。它还不能与在该拓扑结构中的任何复制通道上应用的GTIDs中使用的UUID相同,使用CHANGE REPLICATION SOURCE TO语句中的ASSIGN_ GTIDS_TO_ANONYMOUS_TRANSACTIONS选项。

    这个系统变量是一个组级配置设置。它必须在所有组成员上具有相同的值,不能在Group Replication正在运行时更改,并且需要对整个组进行完整重启(由一个具有group_ replication_bootstrap_group=ON的服务器执行bootstrap操作),以便更改值生效。要安全地在事务已经被执行和认证的情况下重启组,请见第20.5.2节,“ Restarting a Group”

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

    视图变化事件的日志记录被替换为恢复元数据共享;因此,这个变量已弃用,并且将在未来MySQL版本中删除。