17.6 组复制系统变量

本节列出了特定于组复制插件的系统变量。每个配置选项均以“ group_replication”作为前缀。

组复制的大多数系统变量都描述为动态的,并且在服务器运行时可以更改它们的值。但是,在大多数情况下,更改仅在使用STOP GROUP_REPLICATION语句和START GROUP_REPLICATION语句在组成员上停止并重新启动组复制后才生效。对以下系统变量的更改将在不停止和重新启动组复制的情况下生效:

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

组复制组成员上的某些系统变量(包括某些特定于组复制的系统变量和一些常规系统变量)是组范围的配置设置。这些系统变量在所有组成员上必须具有相同的值,并且在运行组复制时不能更改,并且需要完全重新引导组(服务器使用_进行引导)才能使值更改生效。这些条件适用于以下系统变量:

Important

组复制插件特有的系统变量如下:

PropertyValue
Command-Line Format--group-replication-allow-local-disjoint-gtids-join[={OFF|ON}]
Introduced5.7.17
Deprecated5.7.21
System Variablegroup_replication_allow_local_disjoint_gtids_join
ScopeGlobal
DynamicYes
TypeBoolean
Default ValueOFF

在 5.7.21 版中已弃用,并计划在以后的版本中将其删除。允许服务器加入组,即使它具有组中不存在的本地事务也是如此。

Warning

启用此选项时请小心,因为不正确的用法可能导致组冲突和事务回滚。仅应将此选项作为最后一种方法启用,以允许具有本地事务的服务器加入现有组,然后仅在本地事务不影响该组处理的数据的情况下(例如,Management 操作)已写入二进制日志)。不应在所有组成员上都启用该选项。

PropertyValue
Command-Line Format--group-replication-allow-local-lower-version-join[={OFF|ON}]
Introduced5.7.17
System Variablegroup_replication_allow_local_lower_version_join
ScopeGlobal
DynamicYes
TypeBoolean
Default ValueOFF

允许当前服务器加入该组,即使其主版本低于该组。使用默认设置OFF,如果服务器的主要版本低于现有组成员,则不允许它们加入复制组。例如,MySQL 5.7 服务器不能加入由 MySQL 8.0 服务器组成的组。此标准策略确保组中的所有成员都能够交换消息和应用事务。仅在以下情况下将group_replication_allow_local_lower_version_join设置为ON

  • 必须在紧急情况下将服务器添加到组中,以提高组的容错能力,并且仅旧版本可用。

    • 您希望对复制组成员进行降级,而不必关闭整个组并重新引导它。

Warning

将此选项设置为ON不会使新成员与组兼容,并且允许新成员加入该组而没有任何措施防止现有成员的不兼容行为。为确保新成员的正确操作,请同时采取以下两项预防措施:

  • 具有较低主要版本的服务器加入该组之前,请停止该服务器上的所有写操作。

  • 从具有较低主要版本的服务器加入组的位置开始,停止该组中其他服务器上的所有写操作。

如果没有这些预防措施,具有较低主要版本的服务器可能会遇到困难并因错误而终止。

PropertyValue
Command-Line Format--group-replication-auto-increment-increment=#
Introduced5.7.17
System Variablegroup_replication_auto_increment_increment
ScopeGlobal
DynamicYes
TypeInteger
Default Value7
Minimum Value1
Maximum Value65535

确定在此服务器实例上执行的事务的连续列值之间的间隔。该系统变量在所有组成员上应具有相同的值。在服务器上启动组复制时,服务器系统变量auto_increment_increment的值更改为该值,服务器系统变量auto_increment_offset的值更改为服务器 ID。这些设置避免为组成员上的写入选择重复的自动增量值,因为这会导致事务回滚。停止组复制时,将还原更改。仅当auto_increment_incrementauto_increment_offset的默认值均为 1 时,才进行并还原这些更改。如果已将其值从默认值修改,则组复制不会更改它们。从 MySQL 8.0 开始,当组复制处于只有一个服务器写入的单主模式下时,系统变量也不会被修改。

默认值 7table 示可用值数量与复制组允许的最大大小(9 个成员)之间的平衡。如果您的组中有更多或更少的成员,则可以在启动组复制之前设置此系统变量以匹配期望的组成员数。组复制正在运行时,您无法更改设置。

PropertyValue
Command-Line Format--group-replication-bootstrap-group[={OFF|ON}]
Introduced5.7.17
System Variablegroup_replication_bootstrap_group
ScopeGlobal
DynamicYes
TypeBoolean
Default ValueOFF

配置此服务器以引导组。仅在第一次启动组或重新启动整个组时,才必须在一个服务器上设置此选项。自引导组后,将此选项设置为OFF。动态设置和配置文件设置均应将其设置为OFF。在组运行时启动两个服务器或使用此选项集重新启动一台服务器可能会导致人为分裂的情况,其中两个具有相同名称的独立组将被引导。

PropertyValue
Command-Line Format--group-replication-components-stop-timeout=#
Introduced5.7.17
System Variablegroup_replication_components_stop_timeout
ScopeGlobal
DynamicYes
TypeInteger
Default Value31536000
Minimum Value2
Maximum Value31536000

关闭时,组复制 await 每个组件的超时时间(以秒为单位)。

PropertyValue
Command-Line Format--group-replication-compression-threshold=#
Introduced5.7.17
System Variablegroup_replication_compression_threshold
ScopeGlobal
DynamicYes
TypeInteger
Default Value1000000
Minimum Value0
Maximum Value4294967295
  • 阈值(以字节为单位),高于该阈值将压缩应用于组成员之间发送的消息。如果此系统变量设置为零,则禁用压缩。 group_replication_compression_threshold的值在所有组成员上均应相同。

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

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

PropertyValue
Command-Line Format--group-replication-enforce-update-everywhere-checks[={OFF|ON}]
Introduced5.7.17
System Variablegroup_replication_enforce_update_everywhere_checks
ScopeGlobal
DynamicYes
TypeBoolean
Default ValueOFF

对各处的多主更新启用或禁用严格一致性检查。默认设置是禁用检查。在单主要模式下,必须在所有组成员上禁用此选项。在多主要模式下,启用此选项后,将按以下方式检查语句以确保它们与多主要模式兼容:

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

    • 如果事务针对具有具有级联约束的外键的 table 执行,则在将自身与组同步时,事务将无法提交。

此系统变量是组范围的配置设置。它在所有组成员上必须具有相同的值,并且在组复制运行时不能更改,并且需要完全重新引导组(服务器使用group_replication_bootstrap_group=ON进行引导)才能使值更改生效。

PropertyValue
Command-Line Format--group-replication-exit-state-action=value
Introduced5.7.24
System Variablegroup_replication_exit_state_action
ScopeGlobal
DynamicYes
TypeEnumeration
Default ValueREAD_ONLY
Valid ValuesABORT_SERVER

READ_ONLY

配置当服务器实例无意中离开组时(例如,在遇到应用程序错误后,丢失多数数的情况下,或者由于怀疑超时而使该组的另一个成员驱逐它时),组复制的行为方式。在成员丧失多数的情况下,成员离开组的超时时间由group_replication_unreachable_majority_timeout系统变量设置。请注意,被驱逐的组成员直到重新连接到该组才知道被驱逐了,因此仅当该成员设法重新构建连接,或者该成员对自己提出怀疑并驱逐自己时,才执行指定的操作。

group_replication_exit_state_action设置为READ_ONLY时,如果成员无意退出该组,则实例将 MySQL 切换为超级只读模式(通过将系统变量super_read_only设置为ON)。该设置是 MySQL 5.7 中的默认设置。

Important

如果在成员成功加入组之前发生故障,则不会执行指定的退出操作*。如果在本地配置检查期间失败,或者加入成员的配置和组的配置不匹配,就是这种情况。在这种情况下,super_read_only系统变量将保留其原始值,并且服务器不会关闭 MySQL。为确保当组复制未启动时服务器无法接受更新,因此我们建议在启动时在服务器的配置文件中设置super_read_only=ON,在成功启动后,该组复制将在主要成员上更改为OFF。当服务器配置为在服务器启动时启动组复制(group_replication_start_on_boot=ON)时,此保护措施尤其重要,但是在使用START GROUP_REPLICATION命令手动启动组复制时,此保护措施也很有用。

如果在成员成功加入组后发生失败,则将执行指定的退出操作。如果存在申请者错误,成员被驱逐出该组或者在多数成员无法达到时将成员设置为超时,就属于这种情况。在这些情况下,如果READ_ONLY是退出动作,则super_read_only系统变量设置为ON,或者如果ABORT_SERVER是退出动作,则服务器将关闭 MySQL。

table17.4 组复制失败情况下的退出操作

Failure situation组复制以START GROUP_REPLICATION开头组复制以group_replication_start_on_boot =ON开头
成员未通过本地配置检查

OR
加入成员和组配置不匹配
super_read_only不变
MySQLcontinue 运行
在启动时设置super_read_only=ON以防止更新
super_read_only不变
MySQLcontinue 运行
在启动时设置super_read_only=ON以防止更新(重要)
成员的申请者错误
OR
成员被开除
OR
多数人无法逾时
super_read_only设为ON
OR
MySQL 关闭
super_read_only设为ON
OR
MySQL 关闭

PropertyValue
Command-Line Format--group-replication-flow-control-applier-threshold=#
Introduced5.7.17
System Variablegroup_replication_flow_control_applier_threshold
ScopeGlobal
DynamicYes
TypeInteger
Default Value25000
Minimum Value0
Maximum Value2147483647

指定在应用程序队列中触发流控制的 await 事务数。可以在不重置组复制的情况下更改此变量。

PropertyValue
Command-Line Format--group-replication-flow-control-certifier-threshold=#
Introduced5.7.17
System Variablegroup_replication_flow_control_certifier_threshold
ScopeGlobal
DynamicYes
TypeInteger
Default Value25000
Minimum Value0
Maximum Value2147483647

指定验证者队列中触发流控制的 await 事务数。可以在不重置组复制的情况下更改此变量。

PropertyValue
Command-Line Format--group-replication-flow-control-hold-percent=#
System Variablegroup_replication_flow_control_hold_percent
ScopeGlobal
DynamicYes
TypeInteger
Default Value10
Minimum Value0
Maximum Value100

定义组配额中未使用的百分比,以使处于流控制下的群集能够赶上积压。值为 0table 示没有保留任何配额以追上工作积压。

PropertyValue
Command-Line Format--group-replication-flow-control-max-commit-quota=#
System Variablegroup_replication_flow_control_max_commit_quota
ScopeGlobal
DynamicYes
TypeInteger
Default Value0
Minimum Value0
Maximum Value2147483647

定义组的最大流量控制配额,或在启用流量控制的任何时间段内的最大可用配额。值为 0table 示没有设置最大配额。不能小于group_replication_flow_control_min_quotagroup_replication_flow_control_min_recovery_quota

PropertyValue
Command-Line Format--group-replication-flow-control-member-quota-percent=#
System Variablegroup_replication_flow_control_member_quota_percent
ScopeGlobal
DynamicYes
TypeInteger
Default Value0
Minimum Value0
Maximum Value100

定义成员在计算配额时应假定可用于自己的配额百分比。值为 0table 示配额应在上一时期的 Writer 之间平均分配。

PropertyValue
Command-Line Format--group-replication-flow-control-min-quota=#
System Variablegroup_replication_flow_control_min_quota
ScopeGlobal
DynamicYes
TypeInteger
Default Value0
Minimum Value0
Maximum Value2147483647

控制可以分配给成员的最低流量控制配额,而与上一个期间执行的计算出的最小配额无关。值为 0table 示没有最小配额。不能大于group_replication_flow_control_max_commit_quota

PropertyValue
Command-Line Format--group-replication-flow-control-min-recovery-quota=#
System Variablegroup_replication_flow_control_min_recovery_quota
ScopeGlobal
DynamicYes
TypeInteger
Default Value0
Minimum Value0
Maximum Value2147483647

控制由于组中另一个正在恢复的成员而可以分配给成员的最低配额,而与在上一个期间执行的计算出的最小配额无关。值为 0table 示没有最小配额。不能大于group_replication_flow_control_max_commit_quota

PropertyValue
Command-Line Format--group-replication-flow-control-mode=value
Introduced5.7.17
System Variablegroup_replication_flow_control_mode
ScopeGlobal
DynamicYes
TypeEnumeration
Default ValueQUOTA
Valid ValuesDISABLED

QUOTA

指定用于流控制的模式。可以在不重置组复制的情况下更改此变量。

PropertyValue
Command-Line Format--group-replication-force-members=value
Introduced5.7.17
System Variablegroup_replication_force_members
ScopeGlobal
DynamicYes
TypeString

对等地址列 table,以逗号分隔的列 table,例如host1:port1host2:port2。此选项用于强制新的组成员身份,其中排除的成员不会收到新的视图并被阻止。 (您需要手动杀死排除的服务器.)列 table 中任何无效的主机名都可能导致此操作失败,因为它们可能阻止组成员身份。有关后续步骤的说明,请参见第 17.4.3 节“网络分区”

您必须指定group_replication_local_address选项中为每个成员指定的地址或主机名和端口。例如:

"198.51.100.44:33061,example.org:33061"

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

PropertyValue
Command-Line Format--group-replication-group-name=value
Introduced5.7.17
System Variablegroup_replication_group_name
ScopeGlobal
DynamicYes
TypeString

该服务器实例所属的组的名称。必须是有效的 UUID。在二进制日志中为组复制事件设置 GTID 时在内部使用此 UUID。

Important

必须使用唯一的 UUID。

PropertyValue
Command-Line Format--group-replication-group-seeds=value
Introduced5.7.17
System Variablegroup_replication_group_seeds
ScopeGlobal
DynamicYes
TypeString

加入成员可以连接到的组成员列 table,以获取所有当前组成员的详细信息。加入成员使用这些详细信息来选择并连接到组成员,以获得与组同步所需的数据。该列 table 由指定为逗号分隔列 table 的种子成员的网络地址组成,例如host1:port1host2:port2

Important

这些地址不能是成员的 SQL 主机名和端口。

请注意,在发出START GROUP_REPLICATION语句并且组通信系统(GCS)可用之前,不会验证您为此变量指定的值。

通常,此列 table 由组的所有成员组成,但是您可以选择组成员的子集作为种子。该列 table 必须至少包含一个有效的成员地址。启动组复制时,将验证每个地址。如果列 table 不包含任何有效的主机名,则发出START GROUP_REPLICATION失败。

PropertyValue
Command-Line Format--group-replication-gtid-assignment-block-size=#
Introduced5.7.17
System Variablegroup_replication_gtid_assignment_block_size
ScopeGlobal
DynamicYes
TypeInteger
Default Value1000000
Minimum Value1
最大值(64 位平台)9223372036854775807
最大值(32 位平台)4294967295

为每个成员保留的连续 GTID 的数量。每个成员消耗其块,并在需要时保留更多。

此系统变量是组范围的配置设置。它在所有组成员上必须具有相同的值,并且在组复制运行时不能更改,并且需要完全重新引导组(服务器使用group_replication_bootstrap_group=ON进行引导)才能使值更改生效。

PropertyValue
Command-Line Format--group-replication-ip-whitelist=value
Introduced5.7.17
System Variablegroup_replication_ip_whitelist
ScopeGlobal
DynamicYes
TypeString
Default ValueAUTOMATIC

指定允许连接到该组的主机的允许列 table。您必须在复制组中的其他服务器上列出在group_replication_local_address中为每个组成员指定的地址。请注意,在发出START GROUP_REPLICATION语句并且组通信系统(GCS)可用之前,不会验证为此变量指定的值。

默认情况下,此系统变量设置为AUTOMATIC,该值允许来自主机上活动的专用子网的连接。组通信引擎(XCom)会自动扫描主机上的活动接口,并使用专用子网中的地址来标识那些活动接口。这些地址和 IPv4 的localhost IP 地址用于创建组复制允许列 table。有关自动允许列出地址范围的列 table,请参见第 17.5.1 节“组复制 IP 地址允许列 table”

专用地址自动允许列 table 不能用于来自专用网络外部服务器的连接。对于位于不同计算机上的服务器实例之间的组复制连接,必须提供公用 IP 地址并将其指定为显式允许列 table。如果为允许列 table 指定任何条目,则不会自动添加专用和localhost地址,因此,如果使用其中任何一个,则必须明确指定它们。

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

  • IPv4 地址(例如198.51.100.44)

    • 具有 CIDRtable 示法的 IPv4 地址(例如192.0.2.21/24)

    • 主机名,来自 MySQL 5.7.21(例如example.org)

    • 带有 CIDRtable 示法的主机名,来自 MySQL 5.7.21(例如www.example.com/24)

MySQL 5.7 不支持 IPv6 地址和解析为 IPv6 地址的主机名。您可以将 CIDRtable 示法与主机名或 IP 地址结合使用,以允许列出具有特定网络前缀的 IP 地址块,但请确保指定子网中的所有 IP 地址都在您的控制之下。

逗号必须分隔允许列 table 中的每个条目。例如:

192.0.2.22,198.51.100.0/24,example.org,www.example.com/24

例如,可以根据您的安全要求在不同的组成员上配置不同的允许列 table,以使不同的子网分开。但是,这可能会在重新配置组时引起问题。如果您没有特定的安全要求,请在组的所有成员上使用相同的允许列 table。有关更多详细信息,请参见第 17.5.1 节“组复制 IP 地址允许列 table”

对于主机名,仅当另一台服务器发出连接请求时,才进行名称解析。无法解析的主机名不会用于允许列 table 验证,并且警告消息会写入错误日志。对已解析的主机名执行前向确认的反向 DNS(FCrDNS)验证。

Warning

主机名本质上不如允许列 table 中的 IP 地址安全。 FCrDNS 验证提供了良好的保护水平,但可能会受到某些类型的攻击的损害。仅在绝对必要时在允许列 table 中指定主机名,并确保所有用于名称解析的组件(例如 DNS 服务器)都在您的控制下。您也可以使用 hosts 文件在本地实现名称解析,以避免使用外部组件。

PropertyValue
Command-Line Format--group-replication-local-address=value
Introduced5.7.17
System Variablegroup_replication_local_address
ScopeGlobal
DynamicYes
TypeString

成员为其他成员提供的连接所提供的网络地址,以host:port格式的字符串指定。组的所有成员都必须可以访问此地址,因为组通信引擎将其用于组复制(XCom,Paxos 变体),用于远程 XCom 实例之间的 TCP 通信。与本地实例的通信是通过使用共享内存的 Importing 通道进行的。

Warning

请勿使用此地址与会员通信。

其他组复制成员通过此host:port与该成员联系以进行所有内部组通信。这不是 MySQL 服务器 SQL 协议的主机和端口。

组复制将您在group_replication_local_address中指定的地址或主机名用作复制组中组成员的唯一标识符。只要主机名或 IP 地址都不同,就可以对复制组的所有成员使用相同的端口,并且只要端口都不同,就可以对所有成员使用相同的主机名或 IP 地址。 group_replication_local_address的建议端口为 33061.请注意,在发出START GROUP_REPLICATION语句并且组通信系统(GCS)可用之前,不会验证您为此变量指定的值。

PropertyValue
Command-Line Format--group-replication-member-weight=#
Introduced5.7.20
System Variablegroup_replication_member_weight
ScopeGlobal
DynamicYes
TypeInteger
Default Value50
Minimum Value0
Maximum Value100

可以分配给成员的百分比权重,以在发生故障转移时(例如,当现有主要成员离开单个主要成员组时)影响成员被选举为主要成员的机会。为成员分配数字权重,以确保选举特定成员,例如在主要维护的计划维护期间,或者确保在故障转移时确定特定硬件的优先级。

对于成员配置如下的组:

  • 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。这导致在发生故障转移时,将member -2 选择为新的主要数据库。有关更多信息,请参见第 17.4.1.1 节“单主模式”

PropertyValue
Command-Line Format--group-replication-poll-spin-loops=#
Introduced5.7.17
System Variablegroup_replication_poll_spin_loops
ScopeGlobal
DynamicYes
TypeInteger
Default Value0
Minimum Value0
最大值(64 位平台)18446744073709551615
最大值(32 位平台)4294967295

组通信线程在 await 更多传入的网络消息之前,await 通信引擎 Mutex 被释放的次数。

PropertyValue
Command-Line Format--group-replication-recovery-retry-count=#
Introduced5.7.17
System Variablegroup_replication_recovery_retry_count
ScopeGlobal
DynamicYes
TypeInteger
Default Value10
Minimum Value0
Maximum Value31536000

加入的成员在放弃之前尝试连接到可用捐助者的次数。

PropertyValue
Command-Line Format--group-replication-recovery-reconnect-interval=#
Introduced5.7.17
System Variablegroup_replication_recovery_reconnect_interval
ScopeGlobal
DynamicYes
TypeInteger
Default Value60
Minimum Value0
Maximum Value31536000

在组中未找到任何捐助者时,两次重新连接尝试之间的睡眠时间(以秒为单位)。

PropertyValue
Command-Line Format--group-replication-recovery-use-ssl[={OFF|ON}]
Introduced5.7.17
System Variablegroup_replication_recovery_use_ssl
ScopeGlobal
DynamicYes
TypeBoolean
Default ValueOFF

组复制恢复连接是否应使用 SSL。

PropertyValue
Command-Line Format--group-replication-recovery-ssl-ca=value
Introduced5.7.17
System Variablegroup_replication_recovery_ssl_ca
ScopeGlobal
DynamicYes
TypeString

包含受信任的 SSL 证书颁发机构列 table 的文件的路径。

PropertyValue
Command-Line Format--group-replication-recovery-ssl-capath=value
Introduced5.7.17
System Variablegroup_replication_recovery_ssl_capath
ScopeGlobal
DynamicYes
TypeString

包含受信任的 SSL 证书颁发机构证书的目录的路径。

PropertyValue
Command-Line Format--group-replication-recovery-ssl-cert=value
Introduced5.7.17
System Variablegroup_replication_recovery_ssl_cert
ScopeGlobal
DynamicYes
TypeString

用于构建安全连接的 SSL 证书文件的名称。

PropertyValue
Command-Line Format--group-replication-recovery-ssl-key=value
Introduced5.7.17
System Variablegroup_replication_recovery_ssl_key
ScopeGlobal
DynamicYes
TypeString

用于构建安全连接的 SSL 密钥文件的名称。

PropertyValue
Command-Line Format--group-replication-recovery-ssl-cipher=value
Introduced5.7.17
System Variablegroup_replication_recovery_ssl_cipher
ScopeGlobal
DynamicYes
TypeString

SSL 加密的允许密码列 table。

PropertyValue
Command-Line Format--group-replication-recovery-ssl-crl=value
Introduced5.7.17
System Variablegroup_replication_recovery_ssl_crl
ScopeGlobal
DynamicYes
TypeFile name

目录的路径,该目录包含包含证书吊销列 table 的文件。

PropertyValue
Command-Line Format--group-replication-recovery-ssl-crlpath=value
Introduced5.7.17
System Variablegroup_replication_recovery_ssl_crlpath
ScopeGlobal
DynamicYes
TypeDirectory name

目录的路径,该目录包含包含证书吊销列 table 的文件。

PropertyValue
Command-Line Format--group-replication-recovery-ssl-verify-server-cert[={OFF|ON}]
Introduced5.7.17
System Variablegroup_replication_recovery_ssl_verify_server_cert
ScopeGlobal
DynamicYes
TypeBoolean
Default ValueOFF

使恢复过程检查施主发送的证书中服务器的“公用名”值。

PropertyValue
Command-Line Format--group-replication-recovery-complete-at=value
Introduced5.7.17
System Variablegroup_replication_recovery_complete_at
ScopeGlobal
DynamicYes
TypeEnumeration
Default ValueTRANSACTIONS_APPLIED
Valid ValuesTRANSACTIONS_CERTIFIED

TRANSACTIONS_APPLIED

状态转移后处理缓存的事务时的恢复策略。此选项指定成员在加入组之前(TRANSACTIONS_CERTIFIED)已收到错过的所有事务之后,还是在收到并应用它们后(TRANSACTIONS_APPLIED)将成员标记为联机。

PropertyValue
Command-Line Format--group-replication-single-primary-mode[={OFF|ON}]
Introduced5.7.17
System Variablegroup_replication_single_primary_mode
ScopeGlobal
DynamicYes
TypeBoolean
Default ValueON

指示组自动选择一台服务器作为处理读/写工作负载的服务器。该服务器为主要服务器,所有其他服务器均为 SECONDARIES。

此系统变量是组范围的配置设置。它在所有组成员上必须具有相同的值,并且在组复制运行时不能更改,并且需要完全重新引导组(服务器使用group_replication_bootstrap_group=ON进行引导)才能使值更改生效。

PropertyValue
Command-Line Format--group-replication-ssl-mode=value
Introduced5.7.17
System Variablegroup_replication_ssl_mode
ScopeGlobal
DynamicYes
TypeEnumeration
Default ValueDISABLED
Valid ValuesDISABLED

REQUIRED
VERIFY_CA
VERIFY_IDENTITY

指定组复制成员之间的连接的安全状态。

PropertyValue
Command-Line Format--group-replication-start-on-boot[={OFF|ON}]
Introduced5.7.17
System Variablegroup_replication_start_on_boot
ScopeGlobal
DynamicYes
TypeBoolean
Default ValueON

服务器在服务器启动期间是否应启动组复制。

PropertyValue
Command-Line Format--group-replication-transaction-size-limit=#
Introduced5.7.19
System Variablegroup_replication_transaction_size_limit
ScopeGlobal
DynamicYes
TypeInteger
Default Value0
Minimum Value0
Maximum Value2147483647

配置复制组接受的最大事务大小(以字节为单位)。大于此大小的事务将被接收成员回滚,并且不会 Broadcast 到该组。大型事务可能会在内存分配方面导致复制组出现问题,这可能会导致系统变慢,或者在网络带宽消耗方面会导致怀疑成员由于正在忙于处理大型事务而发生故障。Transaction。

当此系统变量设置为 0(这是 MySQL 5.7 中的默认设置)时,该组接受的事务大小没有限制。从 MySQL 8.0 开始,此系统变量的默认设置为 150000000 字节(约 143 MB)。请记住,处理事务所需的时间与其大小成正比,请根据需要该组允许的最大消息大小来调整此系统变量的值。 group_replication_transaction_size_limit的值在所有组成员上均应相同。有关大型 Transaction 的进一步缓解策略,请参阅第 17.7.2 节“组复制限制”

PropertyValue
Command-Line Format--group-replication-unreachable-majority-timeout=#
Introduced5.7.19
System Variablegroup_replication_unreachable_majority_timeout
ScopeGlobal
DynamicYes
TypeInteger
Default Value0
Minimum Value0
Maximum Value31536000

配置遭受网络分区并且无法连接到多数成员的成员在离开组之前要 await 多长时间。

在由 5 个服务器组成的组(S1,S2,S3,S4,S5)中,如果(S1,S2)与(S3,S4,S5)之间存在断开连接,则存在网络分区。第一组(S1,S2)现在占少数,因为它不能联系超过一半的组。当多数组(S3,S4,S5)保持运行时,少数组 await 指定的时间进行网络重新连接。在少数群体成员上使用停止组复制停止组复制之前,将禁止少数群体处理的所有事务。请注意,如果在检测到失去多数之后在少数组中的服务器上设置了group_replication_unreachable_majority_timeout,则没有任何效果。

默认情况下,此系统变量设置为 0,这意味着由于网络分区而处于少数状态的成员将永远 await 离开该组。如果配置为秒数,则成员在与大多数成员失去联系之后要 await 一段时间,然后才能离开该组。经过指定的时间后,少数人处理的所有未决事务都会回滚,并且少数人分区中的服务器将移到ERROR状态。然后,这些服务器执行系统变量group_replication_exit_state_action指定的操作,该操作可以将它们设置为超级只读模式或关闭 MySQL。

Warning

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

组复制状态变量

本节介绍提供有关组复制的信息的状态变量。该变量具有以下含义:

当组以单主要模式运行时,显示主要成员的 UUID。如果组以多主要模式运行,则显示一个空字符串。参见第 17.4.1.3 节“查找主”