17.6 组复制系统变量
本节列出了特定于组复制插件的系统变量。每个配置选项均以“ group_replication
”作为前缀。
组复制的大多数系统变量都描述为动态的,并且在服务器运行时可以更改它们的值。但是,在大多数情况下,更改仅在使用STOP GROUP_REPLICATION语句和START GROUP_REPLICATION语句在组成员上停止并重新启动组复制后才生效。对以下系统变量的更改将在不停止和重新启动组复制的情况下生效:
组复制的大多数系统变量在不同的组成员上可以具有不同的值。对于以下系统变量,建议在组的所有成员上设置相同的值,以避免不必要的事务回滚,消息传递失败或消息恢复失败:
组复制组成员上的某些系统变量(包括某些特定于组复制的系统变量和一些常规系统变量)是组范围的配置设置。这些系统变量在所有组成员上必须具有相同的值,并且在运行组复制时不能更改,并且需要完全重新引导组(服务器使用_进行引导)才能使值更改生效。这些条件适用于以下系统变量:
Important
-
如果将组复制的许多系统变量作为命令行参数传递给服务器,则它们不会在服务器启动期间得到完全验证。这些系统变量包括group_replication_group_name,group_replication_single_primary_mode,group_replication_force_members,SSL 变量和流控制系统变量。仅在服务器启动后才对它们进行完全验证。
-
在发出START GROUP_REPLICATION语句之前,不会验证为组成员指定 IP 地址或主机名的用于组复制的系统变量。在此之前,组复制的组通信系统(GCS)不可用于验证值。
组复制插件特有的系统变量如下:
Property | Value |
---|---|
Command-Line Format | --group-replication-allow-local-disjoint-gtids-join[={OFF|ON}] |
Introduced | 5.7.17 |
Deprecated | 5.7.21 |
System Variable | group_replication_allow_local_disjoint_gtids_join |
Scope | Global |
Dynamic | Yes |
Type | Boolean |
Default Value | OFF |
在 5.7.21 版中已弃用,并计划在以后的版本中将其删除。允许服务器加入组,即使它具有组中不存在的本地事务也是如此。
Warning
启用此选项时请小心,因为不正确的用法可能导致组冲突和事务回滚。仅应将此选项作为最后一种方法启用,以允许具有本地事务的服务器加入现有组,然后仅在本地事务不影响该组处理的数据的情况下(例如,Management 操作)已写入二进制日志)。不应在所有组成员上都启用该选项。
Property | Value |
---|---|
Command-Line Format | --group-replication-allow-local-lower-version-join[={OFF|ON}] |
Introduced | 5.7.17 |
System Variable | group_replication_allow_local_lower_version_join |
Scope | Global |
Dynamic | Yes |
Type | Boolean |
Default Value | OFF |
允许当前服务器加入该组,即使其主版本低于该组。使用默认设置OFF
,如果服务器的主要版本低于现有组成员,则不允许它们加入复制组。例如,MySQL 5.7 服务器不能加入由 MySQL 8.0 服务器组成的组。此标准策略确保组中的所有成员都能够交换消息和应用事务。仅在以下情况下将group_replication_allow_local_lower_version_join设置为ON
:
-
必须在紧急情况下将服务器添加到组中,以提高组的容错能力,并且仅旧版本可用。
- 您希望对复制组成员进行降级,而不必关闭整个组并重新引导它。
Warning
将此选项设置为ON
不会使新成员与组兼容,并且允许新成员加入该组而没有任何措施防止现有成员的不兼容行为。为确保新成员的正确操作,请同时采取以下两项预防措施:
-
具有较低主要版本的服务器加入该组之前,请停止该服务器上的所有写操作。
-
从具有较低主要版本的服务器加入组的位置开始,停止该组中其他服务器上的所有写操作。
如果没有这些预防措施,具有较低主要版本的服务器可能会遇到困难并因错误而终止。
Property | Value |
---|---|
Command-Line Format | --group-replication-auto-increment-increment=# |
Introduced | 5.7.17 |
System Variable | group_replication_auto_increment_increment |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 7 |
Minimum Value | 1 |
Maximum Value | 65535 |
确定在此服务器实例上执行的事务的连续列值之间的间隔。该系统变量在所有组成员上应具有相同的值。在服务器上启动组复制时,服务器系统变量auto_increment_increment的值更改为该值,服务器系统变量auto_increment_offset的值更改为服务器 ID。这些设置避免为组成员上的写入选择重复的自动增量值,因为这会导致事务回滚。停止组复制时,将还原更改。仅当auto_increment_increment和auto_increment_offset的默认值均为 1 时,才进行并还原这些更改。如果已将其值从默认值修改,则组复制不会更改它们。从 MySQL 8.0 开始,当组复制处于只有一个服务器写入的单主模式下时,系统变量也不会被修改。
默认值 7table 示可用值数量与复制组允许的最大大小(9 个成员)之间的平衡。如果您的组中有更多或更少的成员,则可以在启动组复制之前设置此系统变量以匹配期望的组成员数。组复制正在运行时,您无法更改设置。
Property | Value |
---|---|
Command-Line Format | --group-replication-bootstrap-group[={OFF|ON}] |
Introduced | 5.7.17 |
System Variable | group_replication_bootstrap_group |
Scope | Global |
Dynamic | Yes |
Type | Boolean |
Default Value | OFF |
配置此服务器以引导组。仅在第一次启动组或重新启动整个组时,才必须在一个服务器上设置此选项。自引导组后,将此选项设置为OFF
。动态设置和配置文件设置均应将其设置为OFF
。在组运行时启动两个服务器或使用此选项集重新启动一台服务器可能会导致人为分裂的情况,其中两个具有相同名称的独立组将被引导。
Property | Value |
---|---|
Command-Line Format | --group-replication-components-stop-timeout=# |
Introduced | 5.7.17 |
System Variable | group_replication_components_stop_timeout |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 31536000 |
Minimum Value | 2 |
Maximum Value | 31536000 |
关闭时,组复制 await 每个组件的超时时间(以秒为单位)。
Property | Value |
---|---|
Command-Line Format | --group-replication-compression-threshold=# |
Introduced | 5.7.17 |
System Variable | group_replication_compression_threshold |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 1000000 |
Minimum Value | 0 |
Maximum Value | 4294967295 |
- 阈值(以字节为单位),高于该阈值将压缩应用于组成员之间发送的消息。如果此系统变量设置为零,则禁用压缩。 group_replication_compression_threshold的值在所有组成员上均应相同。
组复制使用 LZ4 压缩算法来压缩在组中发送的消息。请注意,LZ4 压缩算法支持的最大 Importing 大小为 2113929216 字节。此限制低于group_replication_compression_threshold系统变量的最大可能值,该值与 XCom 接受的最大消息大小匹配。使用 LZ4 压缩算法时,请不要为group_replication_compression_threshold设置大于 2113929216 字节的值,因为启用消息压缩时无法提交超过此大小的事务。
有关更多信息,请参见第 17.9.7.2 节“消息压缩”。
Property | Value |
---|---|
Command-Line Format | --group-replication-enforce-update-everywhere-checks[={OFF|ON}] |
Introduced | 5.7.17 |
System Variable | group_replication_enforce_update_everywhere_checks |
Scope | Global |
Dynamic | Yes |
Type | Boolean |
Default Value | OFF |
对各处的多主更新启用或禁用严格一致性检查。默认设置是禁用检查。在单主要模式下,必须在所有组成员上禁用此选项。在多主要模式下,启用此选项后,将按以下方式检查语句以确保它们与多主要模式兼容:
-
如果事务是在
SERIALIZABLE
隔离级别下执行的,则在与组同步时,其提交将失败。- 如果事务针对具有具有级联约束的外键的 table 执行,则在将自身与组同步时,事务将无法提交。
此系统变量是组范围的配置设置。它在所有组成员上必须具有相同的值,并且在组复制运行时不能更改,并且需要完全重新引导组(服务器使用group_replication_bootstrap_group=ON进行引导)才能使值更改生效。
Property | Value |
---|---|
Command-Line Format | --group-replication-exit-state-action=value |
Introduced | 5.7.24 |
System Variable | group_replication_exit_state_action |
Scope | Global |
Dynamic | Yes |
Type | Enumeration |
Default Value | READ_ONLY |
Valid Values | ABORT_SERVER |
READ_ONLY |
配置当服务器实例无意中离开组时(例如,在遇到应用程序错误后,丢失多数数的情况下,或者由于怀疑超时而使该组的另一个成员驱逐它时),组复制的行为方式。在成员丧失多数的情况下,成员离开组的超时时间由group_replication_unreachable_majority_timeout系统变量设置。请注意,被驱逐的组成员直到重新连接到该组才知道被驱逐了,因此仅当该成员设法重新构建连接,或者该成员对自己提出怀疑并驱逐自己时,才执行指定的操作。
- 当group_replication_exit_state_action设置为
ABORT_SERVER
时,如果成员无意退出该组,则实例将关闭 MySQL。
当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 关闭 |
Property | Value |
---|---|
Command-Line Format | --group-replication-flow-control-applier-threshold=# |
Introduced | 5.7.17 |
System Variable | group_replication_flow_control_applier_threshold |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 25000 |
Minimum Value | 0 |
Maximum Value | 2147483647 |
指定在应用程序队列中触发流控制的 await 事务数。可以在不重置组复制的情况下更改此变量。
Property | Value |
---|---|
Command-Line Format | --group-replication-flow-control-certifier-threshold=# |
Introduced | 5.7.17 |
System Variable | group_replication_flow_control_certifier_threshold |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 25000 |
Minimum Value | 0 |
Maximum Value | 2147483647 |
指定验证者队列中触发流控制的 await 事务数。可以在不重置组复制的情况下更改此变量。
Property | Value |
---|---|
Command-Line Format | --group-replication-flow-control-hold-percent=# |
System Variable | group_replication_flow_control_hold_percent |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 10 |
Minimum Value | 0 |
Maximum Value | 100 |
定义组配额中未使用的百分比,以使处于流控制下的群集能够赶上积压。值为 0table 示没有保留任何配额以追上工作积压。
Property | Value |
---|---|
Command-Line Format | --group-replication-flow-control-max-commit-quota=# |
System Variable | group_replication_flow_control_max_commit_quota |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 2147483647 |
定义组的最大流量控制配额,或在启用流量控制的任何时间段内的最大可用配额。值为 0table 示没有设置最大配额。不能小于group_replication_flow_control_min_quota和group_replication_flow_control_min_recovery_quota
。
Property | Value |
---|---|
Command-Line Format | --group-replication-flow-control-member-quota-percent=# |
System Variable | group_replication_flow_control_member_quota_percent |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 100 |
定义成员在计算配额时应假定可用于自己的配额百分比。值为 0table 示配额应在上一时期的 Writer 之间平均分配。
Property | Value |
---|---|
Command-Line Format | --group-replication-flow-control-min-quota=# |
System Variable | group_replication_flow_control_min_quota |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 2147483647 |
控制可以分配给成员的最低流量控制配额,而与上一个期间执行的计算出的最小配额无关。值为 0table 示没有最小配额。不能大于group_replication_flow_control_max_commit_quota。
Property | Value |
---|---|
Command-Line Format | --group-replication-flow-control-min-recovery-quota=# |
System Variable | group_replication_flow_control_min_recovery_quota |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 2147483647 |
控制由于组中另一个正在恢复的成员而可以分配给成员的最低配额,而与在上一个期间执行的计算出的最小配额无关。值为 0table 示没有最小配额。不能大于group_replication_flow_control_max_commit_quota
。
Property | Value |
---|---|
Command-Line Format | --group-replication-flow-control-mode=value |
Introduced | 5.7.17 |
System Variable | group_replication_flow_control_mode |
Scope | Global |
Dynamic | Yes |
Type | Enumeration |
Default Value | QUOTA |
Valid Values | DISABLED |
QUOTA |
指定用于流控制的模式。可以在不重置组复制的情况下更改此变量。
Property | Value |
---|---|
Command-Line Format | --group-replication-force-members=value |
Introduced | 5.7.17 |
System Variable | group_replication_force_members |
Scope | Global |
Dynamic | Yes |
Type | String |
对等地址列 table,以逗号分隔的列 table,例如host1:port1
,host2: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语句。
Property | Value |
---|---|
Command-Line Format | --group-replication-group-name=value |
Introduced | 5.7.17 |
System Variable | group_replication_group_name |
Scope | Global |
Dynamic | Yes |
Type | String |
该服务器实例所属的组的名称。必须是有效的 UUID。在二进制日志中为组复制事件设置 GTID 时在内部使用此 UUID。
Important
必须使用唯一的 UUID。
Property | Value |
---|---|
Command-Line Format | --group-replication-group-seeds=value |
Introduced | 5.7.17 |
System Variable | group_replication_group_seeds |
Scope | Global |
Dynamic | Yes |
Type | String |
加入成员可以连接到的组成员列 table,以获取所有当前组成员的详细信息。加入成员使用这些详细信息来选择并连接到组成员,以获得与组同步所需的数据。该列 table 由指定为逗号分隔列 table 的种子成员的网络地址组成,例如host1:port1
,host2:port2
。
Important
这些地址不能是成员的 SQL 主机名和端口。
请注意,在发出START GROUP_REPLICATION语句并且组通信系统(GCS)可用之前,不会验证您为此变量指定的值。
通常,此列 table 由组的所有成员组成,但是您可以选择组成员的子集作为种子。该列 table 必须至少包含一个有效的成员地址。启动组复制时,将验证每个地址。如果列 table 不包含任何有效的主机名,则发出START GROUP_REPLICATION失败。
Property | Value |
---|---|
Command-Line Format | --group-replication-gtid-assignment-block-size=# |
Introduced | 5.7.17 |
System Variable | group_replication_gtid_assignment_block_size |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 1000000 |
Minimum Value | 1 |
最大值(64 位平台) | 9223372036854775807 |
最大值(32 位平台) | 4294967295 |
为每个成员保留的连续 GTID 的数量。每个成员消耗其块,并在需要时保留更多。
此系统变量是组范围的配置设置。它在所有组成员上必须具有相同的值,并且在组复制运行时不能更改,并且需要完全重新引导组(服务器使用group_replication_bootstrap_group=ON进行引导)才能使值更改生效。
Property | Value |
---|---|
Command-Line Format | --group-replication-ip-whitelist=value |
Introduced | 5.7.17 |
System Variable | group_replication_ip_whitelist |
Scope | Global |
Dynamic | Yes |
Type | String |
Default Value | AUTOMATIC |
指定允许连接到该组的主机的允许列 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 文件在本地实现名称解析,以避免使用外部组件。
Property | Value |
---|---|
Command-Line Format | --group-replication-local-address=value |
Introduced | 5.7.17 |
System Variable | group_replication_local_address |
Scope | Global |
Dynamic | Yes |
Type | String |
成员为其他成员提供的连接所提供的网络地址,以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)可用之前,不会验证您为此变量指定的值。
Property | Value |
---|---|
Command-Line Format | --group-replication-member-weight=# |
Introduced | 5.7.20 |
System Variable | group_replication_member_weight |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 50 |
Minimum Value | 0 |
Maximum Value | 100 |
可以分配给成员的百分比权重,以在发生故障转移时(例如,当现有主要成员离开单个主要成员组时)影响成员被选举为主要成员的机会。为成员分配数字权重,以确保选举特定成员,例如在主要维护的计划维护期间,或者确保在故障转移时确定特定硬件的优先级。
对于成员配置如下的组:
-
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-2
,member-3
,member-4
和member-1
。这导致在发生故障转移时,将member
-2 选择为新的主要数据库。有关更多信息,请参见第 17.4.1.1 节“单主模式”。
Property | Value |
---|---|
Command-Line Format | --group-replication-poll-spin-loops=# |
Introduced | 5.7.17 |
System Variable | group_replication_poll_spin_loops |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
最大值(64 位平台) | 18446744073709551615 |
最大值(32 位平台) | 4294967295 |
组通信线程在 await 更多传入的网络消息之前,await 通信引擎 Mutex 被释放的次数。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-retry-count=# |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_retry_count |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 10 |
Minimum Value | 0 |
Maximum Value | 31536000 |
加入的成员在放弃之前尝试连接到可用捐助者的次数。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-reconnect-interval=# |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_reconnect_interval |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 60 |
Minimum Value | 0 |
Maximum Value | 31536000 |
在组中未找到任何捐助者时,两次重新连接尝试之间的睡眠时间(以秒为单位)。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-use-ssl[={OFF|ON}] |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_use_ssl |
Scope | Global |
Dynamic | Yes |
Type | Boolean |
Default Value | OFF |
组复制恢复连接是否应使用 SSL。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-ssl-ca=value |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_ssl_ca |
Scope | Global |
Dynamic | Yes |
Type | String |
包含受信任的 SSL 证书颁发机构列 table 的文件的路径。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-ssl-capath=value |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_ssl_capath |
Scope | Global |
Dynamic | Yes |
Type | String |
包含受信任的 SSL 证书颁发机构证书的目录的路径。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-ssl-cert=value |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_ssl_cert |
Scope | Global |
Dynamic | Yes |
Type | String |
用于构建安全连接的 SSL 证书文件的名称。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-ssl-key=value |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_ssl_key |
Scope | Global |
Dynamic | Yes |
Type | String |
用于构建安全连接的 SSL 密钥文件的名称。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-ssl-cipher=value |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_ssl_cipher |
Scope | Global |
Dynamic | Yes |
Type | String |
SSL 加密的允许密码列 table。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-ssl-crl=value |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_ssl_crl |
Scope | Global |
Dynamic | Yes |
Type | File name |
目录的路径,该目录包含包含证书吊销列 table 的文件。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-ssl-crlpath=value |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_ssl_crlpath |
Scope | Global |
Dynamic | Yes |
Type | Directory name |
目录的路径,该目录包含包含证书吊销列 table 的文件。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-ssl-verify-server-cert[={OFF|ON}] |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_ssl_verify_server_cert |
Scope | Global |
Dynamic | Yes |
Type | Boolean |
Default Value | OFF |
使恢复过程检查施主发送的证书中服务器的“公用名”值。
Property | Value |
---|---|
Command-Line Format | --group-replication-recovery-complete-at=value |
Introduced | 5.7.17 |
System Variable | group_replication_recovery_complete_at |
Scope | Global |
Dynamic | Yes |
Type | Enumeration |
Default Value | TRANSACTIONS_APPLIED |
Valid Values | TRANSACTIONS_CERTIFIED |
TRANSACTIONS_APPLIED |
状态转移后处理缓存的事务时的恢复策略。此选项指定成员在加入组之前(TRANSACTIONS_CERTIFIED
)已收到错过的所有事务之后,还是在收到并应用它们后(TRANSACTIONS_APPLIED
)将成员标记为联机。
Property | Value |
---|---|
Command-Line Format | --group-replication-single-primary-mode[={OFF|ON}] |
Introduced | 5.7.17 |
System Variable | group_replication_single_primary_mode |
Scope | Global |
Dynamic | Yes |
Type | Boolean |
Default Value | ON |
指示组自动选择一台服务器作为处理读/写工作负载的服务器。该服务器为主要服务器,所有其他服务器均为 SECONDARIES。
此系统变量是组范围的配置设置。它在所有组成员上必须具有相同的值,并且在组复制运行时不能更改,并且需要完全重新引导组(服务器使用group_replication_bootstrap_group=ON进行引导)才能使值更改生效。
Property | Value |
---|---|
Command-Line Format | --group-replication-ssl-mode=value |
Introduced | 5.7.17 |
System Variable | group_replication_ssl_mode |
Scope | Global |
Dynamic | Yes |
Type | Enumeration |
Default Value | DISABLED |
Valid Values | DISABLED |
REQUIRED VERIFY_CA VERIFY_IDENTITY |
指定组复制成员之间的连接的安全状态。
Property | Value |
---|---|
Command-Line Format | --group-replication-start-on-boot[={OFF|ON}] |
Introduced | 5.7.17 |
System Variable | group_replication_start_on_boot |
Scope | Global |
Dynamic | Yes |
Type | Boolean |
Default Value | ON |
服务器在服务器启动期间是否应启动组复制。
Property | Value |
---|---|
Command-Line Format | --group-replication-transaction-size-limit=# |
Introduced | 5.7.19 |
System Variable | group_replication_transaction_size_limit |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 2147483647 |
配置复制组接受的最大事务大小(以字节为单位)。大于此大小的事务将被接收成员回滚,并且不会 Broadcast 到该组。大型事务可能会在内存分配方面导致复制组出现问题,这可能会导致系统变慢,或者在网络带宽消耗方面会导致怀疑成员由于正在忙于处理大型事务而发生故障。Transaction。
当此系统变量设置为 0(这是 MySQL 5.7 中的默认设置)时,该组接受的事务大小没有限制。从 MySQL 8.0 开始,此系统变量的默认设置为 150000000 字节(约 143 MB)。请记住,处理事务所需的时间与其大小成正比,请根据需要该组允许的最大消息大小来调整此系统变量的值。 group_replication_transaction_size_limit的值在所有组成员上均应相同。有关大型 Transaction 的进一步缓解策略,请参阅第 17.7.2 节“组复制限制”。
Property | Value |
---|---|
Command-Line Format | --group-replication-unreachable-majority-timeout=# |
Introduced | 5.7.19 |
System Variable | group_replication_unreachable_majority_timeout |
Scope | Global |
Dynamic | Yes |
Type | Integer |
Default Value | 0 |
Minimum Value | 0 |
Maximum Value | 31536000 |
配置遭受网络分区并且无法连接到多数成员的成员在离开组之前要 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 节“查找主”。