本节列出了组复制插件特有的系统变量。
每个组复制系统变量的名称都以 group_replication_
为前缀。
InnoDB 集群使用组复制,但组复制系统变量的默认值可能与此处记录的默认值不同。例如,在 InnoDB 集群中,group_replication_communication_stack
的默认值为 MYSQL
,而不是默认组复制实现中的 XCOM
。
有关更多信息,请参阅 MySQL InnoDB 集群。
组复制组成员上的某些系统变量(包括某些组复制特定的系统变量和一些常规系统变量)是组范围的配置设置。这些系统变量在所有组成员上必须具有相同的值,并且需要完全重启组(由具有 group_replication_bootstrap_group=ON
的服务器引导)才能使值更改生效。有关重启已停止所有成员的组的说明,请参阅 第 20.5.2 节,“重启组”。
如果正在运行的组为组范围的配置设置设置了值,而加入的成员为该系统变量设置了不同的值,则加入的成员将无法加入该组,直到该值更改为匹配为止。如果该组为其中一个系统变量设置了值,而加入的成员不支持该系统变量,则它无法加入该组。
以下系统变量是组范围的配置设置
group_replication_communication_stack
(组复制自身的检查未对其进行策略控制的特殊情况;有关详细信息,请参阅系统变量描述)
组复制运行时,无法通过常用方法更改组范围的配置设置,但可以使用 group_replication_switch_to_single_primary_mode()
和 group_replication_switch_to_multi_primary_mode()
函数在组仍在运行时更改 group_replication_single_primary_mode
和 group_replication_enforce_update_everywhere_checks
的值。有关更多信息,请参阅 第 20.5.1.2 节,“更改组模式”。
组复制的大多数系统变量在不同的组成员上可以具有不同的值。对于以下系统变量,建议在组的所有成员上设置相同的值,以避免不必要地回滚事务、消息传递失败或消息恢复失败
group_replication_preemptive_garbage_collection
的值在所有组成员上必须相同。
组复制的大多数系统变量被描述为动态的,并且可以在服务器运行时更改其值。但是,在大多数情况下,只有在使用 STOP GROUP_REPLICATION
语句后跟 START GROUP_REPLICATION
语句停止并重启组成员上的组复制后,更改才会生效。对以下系统变量的更改将立即生效,而无需停止并重启组复制
更改任何组复制系统变量的值时,请记住,如果在某个时间点,所有成员上的组复制都通过 STOP GROUP_REPLICATION
语句或系统关闭而同时停止,则必须像第一次启动一样通过引导来重启组。有关安全执行此操作的说明,请参阅 第 20.5.2 节,“重启组”。对于组范围的配置设置,这是必需的,但如果要更改其他设置,请尽量确保始终至少有一个成员在运行。
如果在服务器启动期间将多个组复制系统变量作为命令行参数传递给服务器,则不会完全验证这些变量。这些系统变量包括
group_replication_group_name
、group_replication_single_primary_mode
、group_replication_force_members
、SSL 变量和流控制系统变量。仅在服务器启动后才会对其进行完全验证。指定组成员的 IP 地址或主机名的组复制系统变量要到发出
START GROUP_REPLICATION
语句后才会进行验证。在此之前,组复制的组通信系统 (GCS) 无法验证这些值。
此处列出了组复制插件特有的服务器系统变量,以及对其功能或用途的说明:已列出
group_replication_advertise_recovery_endpoints
命令行格式 --group-replication-advertise-recovery-endpoints=值
系统变量 group_replication_advertise_recovery_endpoints
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 默认值 DEFAULT
可以在组复制运行时更改此系统变量的值。更改将立即在成员上生效。但是,已收到系统变量先前值的加入成员将继续使用该值。只有在值更改后加入的成员才会收到新值。
group_replication_advertise_recovery_endpoints
指定加入成员如何建立与现有成员的连接,以便为分布式恢复进行状态转移。该连接用于远程克隆操作和从捐赠者二进制日志进行状态转移。值为
DEFAULT
(默认设置)表示加入成员使用现有成员的标准 SQL 客户端连接,如 MySQL 服务器的hostname
和port
系统变量所指定。如果report_port
系统变量指定了备用端口号,则使用该端口号。Performance Schema 表replication_group_members
在MEMBER_HOST
和MEMBER_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 服务器配置,但必须分配给服务器。
必须使用
port
、report_port
或admin_port
系统变量为 MySQL 服务器配置端口。如果使用
admin_port
,则需要为复制用户授予分布式恢复的相应权限。不需要将 IP 地址添加到
group_replication_ip_allowlist
系统变量指定的组复制允许列表中。连接的 SSL 要求由
group_replication_recovery_ssl_*
选项指定。
group_replication_allow_local_lower_version_join
命令行格式 --group-replication-allow-local-lower-version-join[={OFF|ON}]
已弃用 是 系统变量 group_replication_allow_local_lower_version_join
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_allow_local_lower_version_join
允许当前服务器加入组,即使它运行的 MySQL 服务器版本低于组版本。使用默认设置OFF
时,如果服务器运行的版本低于现有组成员,则不允许其加入复制组。此标准策略可确保组的所有成员都能够交换消息和应用事务。请注意,运行 MySQL 8.0.17 或更高版本的成员在检查其兼容性时会考虑版本的补丁版本。运行 MySQL 8.0.16 或更早版本的成员只考虑主版本。仅在以下情况下才将
group_replication_allow_local_lower_version_join
设置为ON
必须紧急情况下将服务器添加到组中以提高组的容错能力,并且只有旧版本可用。
您希望回滚一个或多个复制组成员的升级,而无需关闭整个组并重新引导它。
警告将此选项设置为
ON
不会使新成员与组兼容,并允许它在没有任何针对现有成员不兼容行为的保障措施的情况下加入组。要确保新成员的正常运行,请采取以下 两项 预防措施在运行较低版本的服务器加入组之前,停止该服务器上的所有写入操作。
从运行较低版本的服务器加入组的那一刻起,停止组中其他服务器上的所有写入操作。
如果不采取这些预防措施,运行较低版本的服务器可能会遇到困难并因错误而终止。
group_replication_auto_increment_increment
命令行格式 --group-replication-auto-increment-increment=#
系统变量 group_replication_auto_increment_increment
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 7
最小值 1
最大值 65535
此系统变量在所有组成员上应具有相同的值。组复制运行时,不能更改此系统变量的值。您必须在每个组成员上停止组复制,更改系统变量的值,然后重新启动组复制。在此过程中,允许系统变量的值在组成员之间有所不同,但组成员上的一些事务可能会回滚。
group_replication_auto_increment_increment
确定在此服务器实例上执行的事务的自增列的连续值之间的间隔。添加间隔可以避免为组成员上的写入选择重复的自增值,这会导致事务回滚。默认值 7 表示可用值的数量与允许的复制组最大大小(9 个成员)之间的平衡。如果您的组成员数量更多或更少,则可以在启动组复制之前设置此系统变量以匹配预期的组成员数量。重要当
group_replication_single_primary_mode
为ON
时,设置group_replication_auto_increment_increment
无效。在服务器实例上启动组复制时,服务器系统变量
auto_increment_increment
的值将更改为此值,服务器系统变量auto_increment_offset
的值将更改为服务器 ID。停止组复制时,更改将恢复。仅当auto_increment_increment
和auto_increment_offset
的默认值均为 1 时,才会进行和恢复这些更改。如果它们的值已从默认值修改,则组复制不会更改它们。当组复制处于单主模式(其中只有一个服务器写入)时,也不会修改系统变量。group_replication_autorejoin_tries
命令行格式 --group-replication-autorejoin-tries=#
系统变量 group_replication_autorejoin_tries
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 3
最小值 0
最大值 2016
可以在组复制运行时更改此系统变量的值,并且更改会立即生效。当出现需要该行为的问题时,将读取系统变量的当前值。
group_replication_autorejoin_tries
指定如果成员被驱逐,或者在达到group_replication_unreachable_majority_timeout
设置之前无法联系到组的大多数成员,则该成员尝试自动重新加入组的次数。当达到成员的驱逐或无法访问多数超时时,它会尝试重新加入(使用当前的插件选项值),然后继续进行进一步的自动重新加入尝试,直至达到指定的尝试次数。在自动重新加入尝试失败后,该成员会在下次尝试之前等待 5 分钟。如果在成员重新加入或停止之前已用尽指定的尝试次数,则该成员将继续执行group_replication_exit_state_action
系统变量指定的操作。在自动重新加入尝试期间和两次尝试之间,成员保持超级只读模式,并且不接受写入,但仍然可以在成员上进行读取,但随着时间的推移,过时读取的可能性会增加。如果您不能容忍任何时间段的过时读取,请将
group_replication_autorejoin_tries
设置为 0。有关自动重新加入功能以及为该选项选择值时的注意事项的详细信息,请参阅 第 20.7.7.3 节“自动重新加入”。group_replication_bootstrap_group
命令行格式 --group-replication-bootstrap-group[={OFF|ON}]
系统变量 group_replication_bootstrap_group
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
group_replication_bootstrap_group
将此服务器配置为引导组。此系统变量必须仅在一台服务器上设置,并且仅在首次启动组或重新启动整个组时设置。引导组后,请将此选项设置为OFF
。它应该在动态和配置文件中都设置为OFF
。在组运行时启动两台服务器或重新启动一台设置了此选项的服务器可能会导致人为的脑裂情况,即引导两个同名的独立组。有关首次引导组的说明,请参阅第 20.2.1.5 节“引导组”。有关安全引导已执行和认证事务的组的说明,请参阅第 20.5.2 节“重新启动组”。
group_replication_clone_threshold
命令行格式 --group-replication-clone-threshold=#
系统变量 group_replication_clone_threshold
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 9223372036854775807
最小值 1
最大值 9223372036854775807
单位 事务 可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_clone_threshold
指定事务差距(以事务数量表示),即在分布式恢复过程中触发使用远程克隆操作将状态传输到加入成员期间,现有成员(捐赠者)和加入成员(接收者)之间的事务差距。如果加入成员和合适的捐赠者之间的事务差距超过阈值,则组复制将使用远程克隆操作开始分布式恢复。如果事务差距低于阈值,或者如果远程克隆操作在技术上不可行,则组复制将直接从捐赠者的二进制日志进行状态传输。警告不要在活动组中对
group_replication_clone_threshold
使用低设置。如果在远程克隆操作正在进行时,组中发生的事务数量超过阈值,则加入成员会在重新启动后再次触发远程克隆操作,并且可能会无限期地继续此操作。为避免这种情况,请确保将阈值设置为高于您希望在远程克隆操作期间在组中发生的事务数量。要使用此功能,必须事先设置捐赠者和加入成员以支持克隆。有关说明,请参阅第 20.5.4.2 节“用于分布式恢复的克隆”。执行远程克隆操作时,组复制会为您管理它,包括所需的服务器重新启动,前提是设置了
group_replication_start_on_boot=ON
。否则,您必须手动重新启动服务器。远程克隆操作会替换加入成员上的现有数据字典,但如果加入成员有其他组成员上不存在的额外事务,则组复制会进行检查并且不会继续进行,因为这些事务将被克隆操作擦除。默认设置(这是 GTID 中事务允许的最大序列号)意味着实际上总是尝试从捐赠者的二进制日志进行状态传输,而不是克隆。但是,请注意,如果无法从捐赠者的二进制日志进行状态传输(例如,因为加入成员所需的事务在任何现有组成员的二进制日志中都不可用),则组复制始终会尝试执行克隆操作,而不管您的阈值如何。如果您根本不想在复制组中使用克隆,请不要在成员上安装克隆插件。
group_replication_communication_debug_options
命令行格式 --group-replication-communication-debug-options=value
系统变量 group_replication_communication_debug_options
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 默认值 GCS_DEBUG_NONE
有效值 GCS_DEBUG_NONE
GCS_DEBUG_BASIC
GCS_DEBUG_TRACE
XCOM_DEBUG_BASIC
XCOM_DEBUG_TRACE
GCS_DEBUG_ALL
可以在组复制运行时更改此系统变量的值,并且更改会立即生效。
group_replication_communication_debug_options
配置要为不同的组复制组件(例如组通信系统 (GCS) 和组通信引擎(XCom,Paxos 变体))提供的调试消息级别。调试信息存储在数据目录中的GCS_DEBUG_TRACE
文件中。可以组合指定为字符串的可用选项集。以下选项可用
GCS_DEBUG_NONE
禁用 GCS 和 XCom 的所有调试级别。GCS_DEBUG_BASIC
在 GCS 中启用基本调试信息。GCS_DEBUG_TRACE
在 GCS 中启用跟踪信息。XCOM_DEBUG_BASIC
在 XCom 中启用基本调试信息。XCOM_DEBUG_TRACE
在 XCom 中启用跟踪信息。GCS_DEBUG_ALL
启用 GCS 和 XCom 的所有调试级别。
仅当在不提供任何其他选项的情况下提供时,将调试级别设置为
GCS_DEBUG_NONE
才有效。将调试级别设置为GCS_DEBUG_ALL
会覆盖所有其他选项。group_replication_communication_max_message_size
命令行格式 --group-replication-communication-max-message-size=#
系统变量 group_replication_communication_max_message_size
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 10485760
最小值 0
最大值 1073741824
单位 字节 此系统变量在所有组成员上应具有相同的值。组复制运行时,不能更改此系统变量的值。您必须在每个组成员上停止组复制,更改系统变量的值,然后重新启动组复制。在此过程中,允许系统变量的值在组成员之间有所不同,但组成员上的一些事务可能会回滚。
group_replication_communication_max_message_size
指定组复制通信的最大消息大小。大于此大小的消息会自动拆分为片段,这些片段会被单独发送并由接收者重新组装。有关更多信息,请参阅第 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
系统变量 group_replication_communication_stack
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 默认值 XCOM
有效值 XCOM
MYSQL
注意此系统变量实际上是一个组范围的配置设置;尽管可以在运行时设置它,但任何更改都需要完全重新启动复制组才能生效。
group_replication_communication_stack
指定是使用 XCom 通信堆栈还是 MySQL 通信堆栈在成员之间建立组通信连接。XCom 通信堆栈是组复制自己的实现,不支持身份验证或网络命名空间。MySQL 通信堆栈是 MySQL 服务器的原生实现,支持身份验证和网络命名空间,并在发布后立即访问新的安全功能。一个组的所有成员必须使用相同的通信堆栈。当您使用 MySQL 通信堆栈代替 XCom 时,MySQL 服务器使用其自己的身份验证和加密协议建立组成员之间的每个连接。
注意如果您使用的是 InnoDB 集群,则
group_replication_communication_stack
的默认值为MYSQL
。有关更多信息,请参阅 MySQL InnoDB 集群。
当您设置组以使用 MySQL 的通信堆栈时,需要进行额外的配置;请参阅第 20.6.1 节“用于连接安全管理的通信堆栈”。
group_replication_communication_stack
实际上是一个组范围的配置设置,并且该设置在所有组成员上必须相同。但是,组复制本身对组范围配置设置的检查并不会强制执行此操作。具有与组中其他成员不同值的成员根本无法与其他成员通信,因为通信协议不兼容,因此它无法交换有关其配置设置的信息。这意味着,尽管可以在组复制运行时更改系统变量的值,并在您在组成员上重新启动组复制后生效,但该成员仍然无法重新加入组,直到在所有成员上更改了该设置。因此,您必须停止所有成员上的组复制并在所有成员上更改系统变量的值,然后才能重新启动组。由于所有成员都已停止,因此需要完全重新启动组(由具有
group_replication_bootstrap_group=ON
的服务器引导)才能使值更改生效。有关从一个通信堆栈迁移到另一个通信堆栈的说明,请参阅第 20.6.1 节“用于连接安全管理的通信堆栈”。group_replication_components_stop_timeout
命令行格式 --group-replication-components-stop-timeout=#
系统变量 group_replication_components_stop_timeout
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 300
最小值 2
最大值 31536000
单位 秒 可以在组复制运行时更改此系统变量的值,但该更改仅在您停止并在组成员上重新启动组复制后才会生效。
group_replication_components_stop_timeout
指定组复制在关闭时等待其每个模块完成正在进行的进程的时间(以秒为单位)。组件超时在发出STOP GROUP_REPLICATION
语句后应用,该语句在服务器重新启动或自动重新加入期间自动发生。超时用于解决无法正常停止组复制组件的情况,如果在成员处于错误状态时或在诸如 MySQL Enterprise Backup 之类的进程持有成员上表的全局锁时将其从组中驱逐,则可能会发生这种情况。在这种情况下,成员无法停止应用线程或完成分布式恢复过程以重新加入。
STOP GROUP_REPLICATION
直到情况得到解决(例如,通过释放锁)或组件超时到期并且无论模块的状态如何都将其关闭才会完成。默认值为 300 秒,因此如果在此时间之前未解决问题,则组复制组件将在 5 分钟后停止,从而允许成员重新启动并重新加入。
group_replication_compression_threshold
命令行格式 --group-replication-compression-threshold=#
系统变量 group_replication_compression_threshold
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 1000000
最小值 0
最大值 4294967295
单位 字节 超过此阈值(以字节为单位)后,将对组成员之间发送的消息应用压缩。如果此系统变量设置为零,则禁用压缩。
group_replication_compression_threshold
的值在所有组成员上应相同。组复制使用 LZ4 压缩算法来压缩组中发送的消息。请注意,LZ4 压缩算法支持的最大输入大小为 2113929216 字节。此限制低于
group_replication_compression_threshold
系统变量的最大可能值,该值与 XCom 接受的最大消息大小相匹配。使用 LZ4 压缩算法时,请勿为group_replication_compression_threshold
设置大于 2113929216 字节的值,因为启用消息压缩后,将无法提交大于此大小的事务。有关更多信息,请参阅第 20.7.4 节“消息压缩”。
-
命令行格式 --group-replication-consistency=值
系统变量 group_replication_consistency
作用域 全局,会话 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 BEFORE_ON_PRIMARY_FAILOVER
有效值 EVENTUAL
BEFORE_ON_PRIMARY_FAILOVER
BEFORE
AFTER
BEFORE_AND_AFTER
此系统变量的值可以在组复制运行时更改。
group_replication_consistency
是服务器系统变量,而不是组复制插件特定的变量,因此更改生效不需要重新启动组复制。更改系统变量的会话值会立即生效,而更改全局值将在更改后启动的新会话中生效。更改此系统变量的全局设置需要GROUP_REPLICATION_ADMIN
权限。group_replication_consistency
控制组提供的数据库事务一致性保证。您可以全局或按事务配置一致性。group_replication_consistency
还配置单主组中新选举的主节点使用的隔离机制。必须同时针对只读 (RO) 和读写 (RW) 事务考虑变量的影响。以下列表按事务一致性保证的顺序显示了此变量的可能值EVENTUAL
RO 和 RW 事务在执行之前都不会等待先前的事务应用。这是添加此变量之前组复制的行为。RW 事务不会等待其他成员应用事务。这意味着事务可以在其他成员之前在一个成员上外部化。这也意味着,如果主节点发生故障转移,则新主节点可以在应用先前的主节点事务之前接受新的 RO 和 RW 事务。RO 事务可能会导致值过时,而 RW 事务可能会由于冲突而导致回滚。
BEFORE_ON_PRIMARY_FAILOVER
新选举的主节点正在应用来自旧主节点的积压工作,该主节点上的新 RO 或 RW 事务将被保留(不应用),直到应用了任何积压工作。这确保了当主节点发生故障转移(有意或无意)时,客户端始终会在主节点上看到最新值。这保证了一致性,但意味着客户端必须能够处理应用积压工作时的延迟。通常,此延迟应该很小,但取决于积压工作的大小。
BEFORE
RW 事务在应用之前会等待所有先前的事务完成。RO 事务在执行之前会等待所有先前的事务完成。这确保了此事务通过仅影响事务的延迟来读取最新值。这减少了每个 RW 事务上的同步开销,因为它确保仅在 RO 事务上使用同步。此一致性级别还包括
BEFORE_ON_PRIMARY_FAILOVER
提供的一致性保证。AFTER
RW 事务会等到其更改应用于所有其他成员。此值对 RO 事务没有影响。此模式确保当在本地成员上提交事务时,任何后续事务都将在任何组成员上读取写入的值或更新的值。将此模式与主要用于 RO 操作的组一起使用,以确保应用的 RW 事务在提交后应用于所有位置。您的应用程序可以使用此模式来确保后续读取获取最新的数据,其中包括最新的写入。这减少了每个 RO 事务上的同步开销,因为它确保仅在 RW 事务上使用同步。此一致性级别还包括
BEFORE_ON_PRIMARY_FAILOVER
提供的一致性保证。BEFORE_AND_AFTER
RW 事务在应用之前会等待所有先前的事务完成,并等到其更改应用于其他成员。RO 事务在执行之前会等待所有先前的事务完成。此一致性级别还包括
BEFORE_ON_PRIMARY_FAILOVER
提供的一致性保证。
有关更多信息,请参阅第 20.5.3 节“事务一致性保证”。
group_replication_enforce_update_everywhere_checks
命令行格式 --group-replication-enforce-update_everywhere_checks[={OFF|ON}]
系统变量 group_replication_enforce_update_everywhere_checks
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
注意此系统变量是组范围的配置设置,更改生效需要完全重新启动复制组。
group_replication_enforce_update_everywhere_checks
启用或禁用对多主节点更新无处不在的严格一致性检查。默认情况下,检查处于禁用状态。在单主模式下,必须在所有组成员上禁用此选项。在多主模式下,启用此选项后,将按如下方式检查语句以确保它们与多主模式兼容如果在
SERIALIZABLE
隔离级别下执行事务,则在与组同步时,其提交将失败。如果事务针对具有级联约束外键的表执行,则在与组同步时,该事务将无法提交。
此系统变量是组范围的配置设置。它在所有组成员上必须具有相同的值,不能在组复制运行时更改,并且需要完全重新启动组(由具有
group_replication_bootstrap_group=ON
的服务器进行引导)才能使值更改生效。有关安全引导已执行和认证事务的组的说明,请参阅第 20.5.2 节“重新启动组”。如果组为此系统变量设置了值,而加入成员为此系统变量设置了不同的值,则加入成员将无法加入组,直到更改该值以匹配为止。如果组成员为此系统变量设置了值,而加入成员不支持该系统变量,则它无法加入组。
使用
group_replication_switch_to_single_primary_mode()
和group_replication_switch_to_multi_primary_mode()
函数可以在组仍在运行时更改此系统变量的值。有关更多信息,请参阅第 20.5.1.2 节“更改组模式”。group_replication_exit_state_action
命令行格式 --group-replication-exit-state-action=值
系统变量 group_replication_exit_state_action
作用域 全局 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 OFFLINE_MODE
有效值 ABORT_SERVER
OFFLINE_MODE
READ_ONLY
可以在组复制运行时更改此系统变量的值,并且更改会立即生效。当出现需要该行为的问题时,将读取系统变量的当前值。
group_replication_exit_state_action
配置当此服务器实例无意中离开组时(例如,在遇到应用程序错误后,或者在失去多数的情况下,或者当组的其他成员由于怀疑超时而将其驱逐时)组复制的行为方式。在失去多数的情况下,成员离开组的超时时间由group_replication_unreachable_majority_timeout
系统变量设置,而怀疑的超时时间由group_replication_member_expel_timeout
系统变量设置。请注意,被驱逐的组成员在重新连接到该组之前并不知道它已被驱逐,因此,仅当该成员设法重新连接或对自身提出怀疑并驱逐自身时,才会采取指定的操作。当组成员由于怀疑超时或失去多数而被驱逐时,如果该成员的
group_replication_autorejoin_tries
系统变量设置为指定自动重新加入尝试次数,则它首先在超级只读模式下进行指定次数的尝试,然后执行group_replication_exit_state_action
指定的操作。在应用程序错误的情况下,不会进行自动重新加入尝试,因为这些错误是不可恢复的。当
group_replication_exit_state_action
设置为READ_ONLY
时,如果成员无意中退出组或自动重新加入尝试失败,则实例会将 MySQL 切换到超级只读模式(通过将系统变量super_read_only
设置为ON
)。当
group_replication_exit_state_action
设置为OFFLINE_MODE
时,如果成员无意中退出组或自动重新加入尝试失败,则实例会将 MySQL 切换到离线模式(通过将系统变量offline_mode
设置为ON
)。在此模式下,连接的客户端用户将在其下一个请求时断开连接,并且不再接受连接,但具有CONNECTION_ADMIN
权限(或已弃用的SUPER
权限)的客户端用户除外。组复制还会将系统变量super_read_only
设置为ON
,因此即使客户端使用CONNECTION_ADMIN
或SUPER
权限连接,也无法进行任何更新。当
group_replication_exit_state_action
设置为ABORT_SERVER
时,如果成员无意中退出组或自动重新加入尝试失败,则实例会关闭 MySQL。重要如果在成员成功加入组之前发生故障,则不会执行指定的退出操作。如果在本地配置检查期间发生故障,或者加入成员的配置与组的配置不匹配,则会出现这种情况。在这些情况下,
super_read_only
系统变量将保留其原始值,服务器将继续接受连接,并且不会关闭 MySQL。为了确保在组复制未启动时服务器不能接受更新,我们建议在服务器启动时在其配置文件中设置super_read_only=ON
,组复制会在成功启动后将其在主成员上更改为OFF
。当服务器配置为在服务器启动时启动组复制(group_replication_start_on_boot=ON
)时,此安全措施尤为重要,但当使用START GROUP_REPLICATION
命令手动启动组复制时,它也很有用。有关使用此选项的更多信息,以及执行退出操作的所有情况的完整列表,请参见第 20.7.7.4 节“退出操作”。
group_replication_flow_control_applier_threshold
命令行格式 --group-replication-flow-control-applier-threshold=#
系统变量 group_replication_flow_control_applier_threshold
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 25000
最小值 0
最大值 2147483647
单位 事务 可以在组复制运行时更改此系统变量的值,并且更改会立即生效。
group_replication_flow_control_applier_threshold
指定应用程序队列中触发流控制的等待事务数。group_replication_flow_control_certifier_threshold
命令行格式 --group-replication-flow-control-certifier-threshold=#
系统变量 group_replication_flow_control_certifier_threshold
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 25000
最小值 0
最大值 2147483647
单位 事务 可以在组复制运行时更改此系统变量的值,并且更改会立即生效。
group_replication_flow_control_certifier_threshold
指定认证程序队列中触发流控制的等待事务数。group_replication_flow_control_hold_percent
命令行格式 --group-replication-flow-control-hold-percent=#
系统变量 group_replication_flow_control_hold_percent
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 10
最小值 0
最大值 100
单位 百分比 可以在组复制运行时更改此系统变量的值,并且更改会立即生效。
group_replication_flow_control_hold_percent
定义组配额中未使用的百分比,以允许处于流控制下的集群赶上积压的工作。值为 0 表示没有为赶上工作积压预留配额。group_replication_flow_control_max_quota
命令行格式 --group-replication-flow-control-max-quota=#
系统变量 group_replication_flow_control_max_quota
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值 2147483647
可以在组复制运行时更改此系统变量的值,并且更改会立即生效。
group_replication_flow_control_max_quota
定义组的最大流控制配额,或启用流控制时任何期间的最大可用配额。值为 0 表示没有设置最大配额。此系统变量的值不能小于group_replication_flow_control_min_quota
和group_replication_flow_control_min_recovery_quota
。group_replication_flow_control_member_quota_percent
命令行格式 --group-replication-flow-control-member-quota-percent=#
系统变量 group_replication_flow_control_member_quota_percent
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值 100
单位 百分比 可以在组复制运行时更改此系统变量的值,并且更改会立即生效。
group_replication_flow_control_member_quota_percent
定义在计算配额时,成员应假设自身可用的配额百分比。值为 0 表示应在上一期间是写入器的成员之间平均分配配额。group_replication_flow_control_min_quota
命令行格式 --group-replication-flow-control-min-quota=#
系统变量 group_replication_flow_control_min_quota
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值 2147483647
可以在组复制运行时更改此系统变量的值,并且更改会立即生效。
group_replication_flow_control_min_quota
控制可以分配给成员的最低流控制配额,独立于上一期间执行的计算出的最低配额。值为 0 表示没有最低配额。此系统变量的值不能大于group_replication_flow_control_max_quota
。group_replication_flow_control_min_recovery_quota
命令行格式 --group-replication-flow-control-min-recovery-quota=#
系统变量 group_replication_flow_control_min_recovery_quota
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值 2147483647
可以在组复制运行时更改此系统变量的值,并且更改会立即生效。
group_replication_flow_control_min_recovery_quota
控制由于组中另一个正在恢复的成员而可以分配给成员的最低配额,独立于上一期间执行的计算出的最低配额。值为 0 表示没有最低配额。此系统变量的值不能大于group_replication_flow_control_max_quota
。group_replication_flow_control_mode
命令行格式 --group-replication-flow-control-mode=值
系统变量 group_replication_flow_control_mode
作用域 全局 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 QUOTA
有效值 DISABLED
QUOTA
可以在组复制运行时更改此系统变量的值,并且更改会立即生效。
group_replication_flow_control_mode
指定用于流控制的模式。group_replication_flow_control_period
命令行格式 --group-replication-flow-control-period=#
系统变量 group_replication_flow_control_period
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 1
最小值 1
最大值 60
单位 秒 可以在组复制运行时更改此系统变量的值,并且更改会立即生效。
group_replication_flow_control_period
定义在流控制迭代之间等待的秒数,在流控制迭代中,将发送流控制消息并运行流控制管理任务。group_replication_flow_control_release_percent
命令行格式 --group-replication-flow-control-release-percent=#
系统变量 group_replication_flow_control_release_percent
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 50
最小值 0
最大值 1000
单位 百分比 可以在组复制运行时更改此系统变量的值,并且更改会立即生效。
group_replication_flow_control_release_percent
定义当流控制不再需要限制写入器成员时,应如何释放组配额,此百分比是每个流控制期间的配额增加量。值为 0 表示一旦流控制阈值在限制范围内,配额将在单个流控制迭代中释放。该范围允许配额最多释放到当前配额的 10 倍,因为这允许更大程度的适应,主要是在流控制期间很大且配额非常小的情况下。group_replication_force_members
命令行格式 --group-replication-force-members=值
系统变量 group_replication_force_members
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 此系统变量用于强制执行新的组成员资格。此系统变量的值可以在组复制运行时更改,并且更改会立即生效。您只需要在要保留在组中的一个组成员上设置系统变量的值。有关您可能需要强制执行新的组成员资格的情况的详细信息,以及使用此系统变量时要遵循的过程,请参见第 20.7.8 节“处理网络分区和仲裁丢失”。
group_replication_force_members
指定对等地址列表,以逗号分隔,例如host1:port1
、host2:port2
。未包含在列表中的任何现有成员都不会收到组的新视图,并且会被阻止。对于要继续作为成员的每个现有成员,您必须包括 IP 地址或主机名以及端口,如它们在每个成员的group_replication_local_address
系统变量中给出的那样(不是种子成员的 SQL 客户端连接,如 MySQL Server 的hostname
和port
系统变量所指定)。IPv6 地址必须在方括号中指定。例如"198.51.100.44:33061,[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061,example.org:33061"
组复制 (XCom) 的组通信引擎会检查提供的 IP 地址是否采用有效格式,并检查您是否包含了当前无法访问的任何组成员。否则,不会验证新配置,因此您必须小心,仅包含作为组的可访问成员的联机服务器。列表中的任何错误值或无效主机名都可能导致组因配置无效而被阻止。
在强制执行新的成员资格配置之前,务必确保要排除的服务器已关闭。如果它们尚未关闭,请先关闭它们,然后再继续。仍然在线的组成员可以自动形成新的配置,如果这已经发生,则强制执行另一个新的配置可能会为组创建一个人为的脑裂情况。
在您使用
group_replication_force_members
系统变量成功强制执行新的组成员资格并解除对组的阻止后,请确保清除该系统变量。group_replication_force_members
必须为空才能发出START GROUP_REPLICATION
语句。-
命令行格式 --group-replication-group-name=值
系统变量 group_replication_group_name
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 此系统变量的值在组复制运行时无法更改。
group_replication_group_name
指定此服务器实例所属的组的名称,该名称必须是有效的 UUID。此 UUID 构成 GTID 的一部分,当组成员从客户端收到的和由组成员在内部生成的视图更改事件被写入二进制日志时,将使用这些 GTID。重要必须使用唯一的 UUID。
-
命令行格式 --group-replication-group-seeds=值
系统变量 group_replication_group_seeds
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_group_seeds
是加入成员可以连接以获取所有当前组成员的详细信息的组成员列表。加入成员使用这些详细信息选择并连接到一个组成员,以获取与组同步所需的数据。该列表包含每个包含的种子成员的一个内部网络地址或主机名,如种子成员的group_replication_local_address
系统变量中配置的那样(不是种子成员的 SQL 客户端连接,如 MySQL Server 的hostname
和port
系统变量所指定)。种子成员的地址指定为以逗号分隔的列表,例如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
语句并且组通信系统 (GCS) 可用之前不会被验证。通常,此列表包含组的所有成员,但您可以选择组成员的子集作为种子。该列表必须至少包含一个有效的成员地址。每个地址在启动组复制时都会进行验证。如果该列表不包含任何有效的成员地址,则发出
START GROUP_REPLICATION
将失败。当服务器加入复制组时,它会尝试连接到其
group_replication_group_seeds
系统变量中列出的第一个种子成员。如果连接被拒绝,则加入成员会尝试按顺序连接到列表中的其他每个种子成员。如果加入成员连接到种子成员,但结果是没有被添加到复制组中(例如,因为种子成员的允许列表中没有加入成员的地址并关闭了连接),则加入成员会继续尝试按顺序连接列表中剩余的种子成员。加入成员必须使用种子成员在
group_replication_group_seeds
选项中公布的相同协议(IPv4 或 IPv6)与种子成员进行通信。出于组复制的 IP 地址权限的目的,种子成员上的允许列表必须包含加入成员的 IP 地址(用于种子成员提供的协议)或解析为该协议地址的主机名。除了加入成员的group_replication_local_address
之外,还必须设置并允许此地址或主机名,前提是该地址的协议与种子成员公布的协议不匹配。如果加入成员没有相应协议的允许地址,则其连接尝试将被拒绝。有关更多信息,请参阅 第 20.6.4 节“组复制 IP 地址权限”。 group_replication_gtid_assignment_block_size
命令行格式 --group-replication-gtid-assignment-block-size=#
系统变量 group_replication_gtid_assignment_block_size
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 1000000
最小值 1
最大值(64 位平台) 9223372036854775807
最大值(32 位平台) 4294967295
注意此系统变量是组范围的配置设置,更改生效需要完全重新启动复制组。
group_replication_gtid_assignment_block_size
指定为每个组成员保留的连续 GTID 数量。每个成员消耗自己的块并在需要时保留更多块。此系统变量是组范围的配置设置。它在所有组成员上必须具有相同的值,不能在组复制运行时更改,并且需要完全重新启动组(由具有
group_replication_bootstrap_group=ON
的服务器进行引导)才能使值更改生效。有关安全引导已执行和认证事务的组的说明,请参阅第 20.5.2 节“重新启动组”。如果组为此系统变量设置了值,而加入成员为此系统变量设置了不同的值,则加入成员将无法加入组,直到更改该值以匹配为止。如果组成员为此系统变量设置了值,而加入成员不支持该系统变量,则它无法加入组。
group_replication_ip_allowlist
命令行格式 --group-replication-ip-allowlist=value
系统变量 group_replication_ip_allowlist
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 默认值 AUTOMATIC
group_replication_ip_allowlist
指定允许哪些主机连接到该组。当组使用 XCom 通信堆栈时(group_replication_communication_stack=XCOM
),允许列表用于控制对该组的访问。当组使用 MySQL 通信堆栈时(group_replication_communication_stack=MYSQL
),则使用用户身份验证来控制对该组的访问,并且不使用允许列表,如果设置了,则会被忽略。您在
group_replication_local_address
中为每个组成员指定的地址必须在复制组中的其他服务器上获得允许。请注意,在发出START GROUP_REPLICATION
语句并且组通信系统 (GCS) 可用之前,不会验证您为此变量指定的值。默认情况下,此系统变量设置为
AUTOMATIC
,它允许来自主机上活动的专用子网的连接。组复制的组通信引擎 (XCom) 会自动扫描主机上的活动接口,并识别那些地址位于专用子网上的接口。这些地址和 IPv4 和 IPv6 的localhost
IP 地址用于创建组复制允许列表。有关自动允许地址范围的列表,请参阅 第 20.6.4 节“组复制 IP 地址权限”。专用地址的自动允许列表不能用于来自专用网络外部服务器的连接。对于位于不同计算机上的服务器实例之间的组复制连接,您必须提供公共 IP 地址并将它们指定为显式允许列表。如果您为允许列表指定了任何条目,则不会自动添加专用地址,因此如果您使用其中任何一个,则必须明确指定它们。
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 表示法的地址(例如,
www.example.com/24
)
主机名可以解析为 IPv4 地址、IPv6 地址或两者兼而有之。如果主机名同时解析为 IPv4 和 IPv6 地址,则始终将 IPv4 地址用于组复制连接。您可以将 CIDR 表示法与主机名或 IP 地址结合使用,以允许使用特定网络前缀的 IP 地址块,但请确保指定子网中的所有 IP 地址都在您的控制之下。
逗号必须分隔允许列表中的每个条目。例如
"192.0.2.21/24,198.51.100.44,203.0.113.0/24,2001:db8:85a3:8d3:1319:8a2e:370:7348,example.org,www.example.com/24"
如果在加入成员具有 IPv4
group_replication_local_address
时,group_replication_group_seeds
选项中列出了任何具有 IPv6 地址的组种子成员,反之亦然,则您还必须为加入成员设置并允许用于种子成员提供的协议的备用地址(或解析为该协议地址的主机名)。有关更多信息,请参阅 第 20.6.4 节“组复制 IP 地址权限”。可以根据您的安全要求在不同的组成员上配置不同的允许列表,例如,为了将不同的子网分开。但是,当重新配置组时,这可能会导致问题。如果您没有特定的安全要求,请在组的所有成员上使用相同的允许列表。有关更多详细信息,请参阅 第 20.6.4 节“组复制 IP 地址权限”。
对于主机名,仅当另一台服务器发出连接请求时才会进行名称解析。无法解析的主机名不会被考虑用于允许列表验证,并且会将警告消息写入错误日志。对已解析的主机名执行前向确认的反向 DNS (FCrDNS) 验证。
警告在允许列表中,主机名本质上不如 IP 地址安全。FCrDNS 验证提供了良好的保护级别,但可能会被某些类型的攻击所破坏。仅在绝对必要时才在允许列表中指定主机名,并确保用于名称解析的所有组件(例如 DNS 服务器)都在您的控制之下维护。您还可以使用 hosts 文件在本地实现名称解析,以避免使用外部组件。
group_replication_local_address
命令行格式 --group-replication-local-address=value
系统变量 group_replication_local_address
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_local_address
设置成员为来自其他成员的连接提供的网络地址,指定为host:port
格式的字符串。此地址必须可由组的所有成员访问,因为它由组复制的组通信引擎(XCom,Paxos 变体)用于远程 XCom 实例之间的 TCP 通信。如果您使用 MySQL 通信堆栈在成员之间建立组通信连接(group_replication_communication_stack
= MYSQL),则该地址必须是 MySQL Server 正在侦听的 IP 地址和端口之一,如服务器的bind_address
系统变量所指定。警告不要使用此地址来查询或管理成员上的数据库。这不是 SQL 客户端连接主机和端口。
您在
group_replication_local_address
中指定的地址或主机名由组复制用作复制组中组成员的唯一标识符。只要主机名或 IP 地址都不同,您就可以对复制组的所有成员使用相同的端口,并且只要端口都不同,您就可以对所有成员使用相同的主机名或 IP 地址。group_replication_local_address
的推荐端口是 33061。请注意,在发出START GROUP_REPLICATION
语句并且组通信系统 (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"
如果指定为服务器实例的组复制本地地址的主机名同时解析为 IPv4 和 IPv6 地址,则始终将 IPv4 地址用于组复制连接。有关组复制对 IPv6 网络的支持以及对成员使用 IPv4 和成员使用 IPv6 的混合复制组的更多信息,请参阅 第 20.5.5 节“对 IPv6 以及混合 IPv6 和 IPv4 组的支持”。
如果您使用 XCom 通信堆栈在成员之间建立组通信连接(
group_replication_communication_stack = XCOM
),则您在group_replication_local_address
中为每个组成员指定的地址必须添加到复制组中其他服务器上的group_replication_ip_allowlist
系统变量的列表中。当组使用 XCom 通信堆栈时,允许列表用于控制对该组的访问。当组使用 MySQL 通信堆栈时,使用用户身份验证来控制对该组的访问,并且不使用允许列表,如果设置了,则会被忽略。请注意,如果在该成员具有 IPv4group_replication_local_address
时,group_replication_group_seeds
选项中列出了任何具有 IPv6 地址的组种子成员,反之亦然,则您还必须为此成员设置并允许用于所需协议的备用地址(或解析为该协议地址的主机名)。有关更多信息,请参阅 第 20.6.4 节“组复制 IP 地址权限”。group_replication_member_expel_timeout
命令行格式 --group-replication-member-expel-timeout=#
系统变量 group_replication_member_expel_timeout
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 5
最小值 0
最大值 3600
单位 秒 此系统变量的值可以在组复制运行时更改,并且更改会立即生效。 每当组复制检查超时时,都会读取系统变量的当前值。 组中的所有成员不一定要具有相同的设置,但建议这样做以避免意外驱逐。
group_replication_member_expel_timeout
指定组复制组成员在创建怀疑后等待的时间段(以秒为单位),然后再从组中驱逐怀疑已失败的成员。 创建怀疑之前的初始 5 秒检测期不计入这段时间。group_replication_member_expel_timeout
的值默认为 5,这意味着可疑成员在 5 秒检测期后 5 秒内有被驱逐的责任。更改组成员上的
group_replication_member_expel_timeout
的值会立即对该组成员上现有和未来的怀疑生效。 因此,您可以使用此方法强制怀疑超时并驱逐可疑成员,从而允许更改组配置。 有关详细信息,请参阅 第 20.7.7.1 节,“驱逐超时”。增加
group_replication_member_expel_timeout
的值有助于避免在较慢或不太稳定的网络上,或者在预期出现瞬时网络中断或机器速度变慢的情况下不必要的驱逐。 如果可疑成员在怀疑超时之前再次变为活动状态,它会应用由其余组成员缓冲的所有消息并进入ONLINE
状态,而无需操作员干预。 您可以指定最长 3600 秒(1 小时)的超时值。 务必确保 XCom 的消息缓存足够大,以包含指定时间段内的预期消息量以及初始 5 秒检测期,否则成员将无法重新连接。 您可以使用group_replication_message_cache_size
系统变量调整缓存大小限制。 有关详细信息,请参阅 第 20.7.6 节,“XCom 缓存管理”。如果超过超时时间,可疑成员将在怀疑超时后立即被驱逐。 如果成员能够恢复通信并接收到它被驱逐的视图,并且该成员的
group_replication_autorejoin_tries
系统变量设置为指定自动重新加入尝试次数,它将继续在超级只读模式下进行指定次数的尝试以重新加入组。 如果该成员没有指定任何自动重新加入尝试,或者如果它已经用尽了指定的尝试次数,它将遵循系统变量group_replication_exit_state_action
指定的操作。有关使用
group_replication_member_expel_timeout
设置的详细信息,请参阅 第 20.7.7.1 节,“驱逐超时”。 有关在该系统变量不可用时避免不必要驱逐的替代缓解策略,请参阅 第 20.3.2 节,“组复制限制”。group_replication_member_weight
命令行格式 --group-replication-member-weight=#
系统变量 group_replication_member_weight
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 50
最小值 0
最大值 100
单位 百分比 此系统变量的值可以在组复制运行时更改,并且更改会立即生效。 发生故障转移情况时,将读取系统变量的当前值。
group_replication_member_weight
指定可以分配给成员的百分比权重,以影响该成员在故障转移事件中被选为主节点的可能性,例如,当现有主节点离开单主节点组时。 为成员分配数字权重以确保选择特定成员,例如,在主节点的计划维护期间,或者确保在发生故障转移时优先考虑某些硬件。对于配置如下成员的组
member-1
:group_replication_member_weight=30,server_uuid=aaaamember-2
:group_replication_member_weight=40,server_uuid=bbbbmember-3
:group_replication_member_weight=40,server_uuid=ccccmember-4
:group_replication_member_weight=40,server_uuid=dddd
在新主节点的选举期间,上述成员将按
member-2
、member-3
、member-4
和member-1
的顺序排序。 这导致在发生故障转移时选择member
-2 作为新的主节点。 有关详细信息,请参阅 第 20.1.3.1 节,“单主模式”。group_replication_message_cache_size
命令行格式 --group-replication-message-cache-size=#
系统变量 group_replication_message_cache_size
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 1073741824 (1 GB)
最小值 134217728 (128 MB)
最大值(64 位平台) 18446744073709551615 (16 EiB)
最大值(32 位平台) 315360004294967295 (4 GB)
单位 字节 此系统变量在所有组成员上应具有相同的值。 此系统变量的值可以在组复制运行时更改。 在您停止并重新启动成员上的组复制后,更改将在每个组成员上生效。 在此过程中,允许系统变量的值在组成员之间有所不同,但在断开连接的情况下,成员可能无法重新连接。
group_replication_message_cache_size
设置组复制 (XCom) 的组通信引擎中可用于消息缓存的最大内存量。 XCom 消息缓存保存作为共识协议的一部分在组成员之间交换的消息(及其元数据)。 除其他功能外,消息缓存还用于在成员在一段时间内无法与其他组成员通信后重新连接到组时恢复丢失的消息。group_replication_member_expel_timeout
系统变量确定除了初始 5 秒检测期之外允许成员返回组而不是被驱逐的等待时间(最长一小时)。 XCom 消息缓存的大小应参考此时间段内的预期消息量进行设置,以便它包含成员成功返回所需的所有丢失消息。 默认设置是在 5 秒检测期后等待 5 秒,总计 10 秒。考虑到 MySQL Server 的其他缓存和对象池的大小,请确保您的系统上有足够的可用内存用于您选择的缓存大小限制。 默认设置为 1073741824 字节(1 GB)。 最小设置 134217728 字节(128 MB)允许在可用内存量受限的主机上进行部署,并具有良好的网络连接性,以最大程度地减少组成员瞬时连接丢失的频率和持续时间。 请注意,使用
group_replication_message_cache_size
设置的限制仅适用于存储在缓存中的数据,缓存结构需要额外的 50 MB 内存。缓存大小限制可以在运行时动态增加或减少。 如果您减少缓存大小限制,XCom 将删除已决定和传递的最旧条目,直到当前大小低于限制。 当可能需要当前无法访问的成员进行恢复的消息从消息缓存中删除时,组复制的组通信系统 (GCS) 会通过警告消息向您发出警报。 有关调整消息缓存大小的详细信息,请参阅 第 20.7.6 节,“XCom 缓存管理”。
group_replication_paxos_single_leader
命令行格式 --group-replication-paxos-single-leader[={OFF|ON}]
系统变量 group_replication_paxos_single_leader
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
注意此系统变量是组范围的配置设置,更改生效需要完全重新启动复制组。
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_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
命令行格式 --group-replication-poll-spin-loops=#
系统变量 group_replication_poll_spin_loops
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值(64 位平台) 18446744073709551615
最大值(32 位平台) 4294967295
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_poll_spin_loops
指定在组通信线程等待更多传入网络消息之前,它等待通信引擎互斥锁释放的次数。group_replication_preemptive_garbage_collection
命令行格式 --group-replication-preemptive-garbage-collection[=ON|OFF]
系统变量 group_replication_preemptive_garbage_collection
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
在单主模式下(仅限)启用抢占式垃圾回收,仅保留那些尚未在数据库中提交的事务的写入集。
仅当组复制未运行时才能更改此系统变量的值,并且对以多主模式运行的组无效。要从多主模式更改为单主模式,请使用
group_replication_switch_to_single_primary_mode()
函数;有关更多信息,请参阅第 20.5.1.2 节“更改组模式”。group_replication_preemptive_garbage_collection
必须在所有组成员上设置为相同的值。新加入者的group_replication_preemptive_garbage_collection
值必须与所有组当前成员的值相同,否则它将无法加入。运行低于 8.4.0 版本的 MySQL 的组成员不发送
group_replication_preemptive_garbage_collection
值;在这种情况下,该值被视为OFF
。group_replication_preemptive_garbage_collection_rows_threshold
命令行格式 --group_replication-preemptive-garbage-collection-rows-threshold=#
系统变量 group_replication_preemptive_garbage_collection_rows_threshold
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 100000
最小值 10000
最大值 100000000
当启用单主模式下的抢占式垃圾回收时(
group_replication_preemptive_garbage_collection
为ON
),这是触发其使用所需的认证信息行数。此变量对以多主模式运行的组无效。
group_replication_recovery_compression_algorithms
命令行格式 --group-replication-recovery-compression-algorithms=值
系统变量 group_replication_recovery_compression_algorithms
作用域 全局 动态 是 SET_VAR
提示适用否 类型 设置 默认值 未压缩
有效值 zlib
zstd
未压缩
group_replication_recovery_compression_algorithms
指定组复制分布式恢复连接允许的压缩算法,用于从捐赠者的二进制日志传输状态。可用算法与protocol_compression_algorithms
系统变量相同。有关更多信息,请参阅第 6.2.8 节“连接压缩控制”。可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
如果服务器已设置为支持克隆(请参阅第 20.5.4.2 节“用于分布式恢复的克隆”),并且在分布式恢复期间使用远程克隆操作,则此设置不适用。对于这种状态传输方法,将应用克隆插件的
clone_enable_compression
设置。group_replication_recovery_get_public_key
命令行格式 --group-replication-recovery-get-public-key[={OFF|ON}]
系统变量 group_replication_recovery_get_public_key
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_get_public_key
指定是否从源请求基于 RSA 密钥对的密码交换所需的公钥。如果group_replication_recovery_public_key_path
设置为有效的公钥文件,则它优先于group_replication_recovery_get_public_key
。如果您没有对通过group_replication_recovery
通道的分布式恢复使用 SSL(group_replication_recovery_use_ssl=ON
),并且组复制的复制用户帐户使用caching_sha2_password
插件(默认)进行身份验证,则此变量适用。有关更多详细信息,请参阅第 20.6.3.1.1 节“具有缓存 SHA-2 身份验证插件的复制用户”。group_replication_recovery_public_key_path
命令行格式 --group-replication-recovery-public-key-path=文件名
系统变量 group_replication_recovery_public_key_path
作用域 全局 动态 是 SET_VAR
提示适用否 类型 文件名 默认值 空字符串
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_public_key_path
指定包含源所需的用于基于 RSA 密钥对的密码交换的公钥副本的文件的路径名。该文件必须为 PEM 格式。如果group_replication_recovery_public_key_path
设置为有效的公钥文件,则它优先于group_replication_recovery_get_public_key
。如果您没有对通过group_replication_recovery
通道的分布式恢复使用 SSL(因此group_replication_recovery_use_ssl
设置为OFF
),并且组复制的复制用户帐户使用caching_sha2_password
插件(默认)或sha256_password
插件(已弃用)进行身份验证,则此变量适用。(对于sha256_password
,仅当使用 OpenSSL 构建 MySQL 时,设置group_replication_recovery_public_key_path
才适用。)有关更多详细信息,请参阅第 20.6.3.1.1 节“具有缓存 SHA-2 身份验证插件的复制用户”。group_replication_recovery_reconnect_interval
命令行格式 --group-replication-recovery-reconnect-interval=#
系统变量 group_replication_recovery_reconnect_interval
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 60
最小值 0
最大值 31536000
单位 秒 可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_reconnect_interval
指定在组中找不到合适的捐赠者进行分布式恢复时,重新连接尝试之间的休眠时间(以秒为单位)。group_replication_recovery_retry_count
命令行格式 --group-replication-recovery-retry-count=#
系统变量 group_replication_recovery_retry_count
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 10
最小值 0
最大值 31536000
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_retry_count
指定正在加入的成员尝试连接到可用的捐赠者进行分布式恢复的次数,之后才会放弃。group_replication_recovery_ssl_ca
命令行格式 --group-replication-recovery-ssl-ca=值
系统变量 group_replication_recovery_ssl_ca
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_ssl_ca
指定包含用于分布式恢复连接的可信任 SSL 证书颁发机构列表的文件的路径。有关为分布式恢复配置 SSL 的信息,请参阅第 20.6.2 节“使用安全套接字层 (SSL) 保护组通信连接”。如果此服务器已设置为支持克隆(请参阅第 20.5.4.2 节“用于分布式恢复的克隆”),并且您已将
group_replication_recovery_use_ssl
设置为ON
,则组复制会自动将克隆 SSL 选项clone_ssl_ca
的设置配置为与group_replication_recovery_ssl_ca
的设置匹配。当 MySQL 通信堆栈用于组时(
group_replication_communication_stack = MYSQL
),此设置用于组通信连接以及分布式恢复连接的 TLS/SSL 配置。group_replication_recovery_ssl_capath
命令行格式 --group-replication-recovery-ssl-capath=值
系统变量 group_replication_recovery_ssl_capath
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_ssl_capath
指定包含用于分布式恢复连接的可信任 SSL 证书颁发机构证书的目录的路径。有关为分布式恢复配置 SSL 的信息,请参阅第 20.6.2 节“使用安全套接字层 (SSL) 保护组通信连接”。当 MySQL 通信堆栈用于组时(
group_replication_communication_stack = MYSQL
),此设置用于组通信连接以及分布式恢复连接的 TLS/SSL 配置。group_replication_recovery_ssl_cert
命令行格式 --group-replication-recovery-ssl-cert=值
系统变量 group_replication_recovery_ssl_cert
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_ssl_cert
指定用于建立安全连接以进行分布式恢复的 SSL 证书文件的名称。有关为分布式恢复配置 SSL 的信息,请参阅第 20.6.2 节“使用安全套接字层 (SSL) 保护组通信连接”。如果此服务器已设置为支持克隆(请参阅第 20.5.4.2 节“用于分布式恢复的克隆”),并且您已将
group_replication_recovery_use_ssl
设置为ON
,则组复制会自动将克隆 SSL 选项clone_ssl_cert
的设置配置为与group_replication_recovery_ssl_cert
的设置匹配。当 MySQL 通信堆栈用于组时(
group_replication_communication_stack = MYSQL
),此设置用于组通信连接以及分布式恢复连接的 TLS/SSL 配置。group_replication_recovery_ssl_cipher
命令行格式 --group-replication-recovery-ssl-cipher=值
系统变量 group_replication_recovery_ssl_cipher
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_ssl_cipher
指定 SSL 加密允许的密码列表。有关为分布式恢复配置 SSL 的信息,请参阅第 20.6.2 节“使用安全套接字层 (SSL) 保护组通信连接”。当 MySQL 通信堆栈用于组时(
group_replication_communication_stack = MYSQL
),此设置用于组通信连接以及分布式恢复连接的 TLS/SSL 配置。group_replication_recovery_ssl_crl
命令行格式 --group-replication-recovery-ssl-crl=值
系统变量 group_replication_recovery_ssl_crl
作用域 全局 动态 是 SET_VAR
提示适用否 类型 文件名 可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_ssl_crl
指定包含证书吊销列表文件的目录的路径。有关为分布式恢复配置 SSL 的信息,请参阅第 20.6.2 节“使用安全套接字层 (SSL) 保护组通信连接”。当 MySQL 通信堆栈用于组时(
group_replication_communication_stack = MYSQL
),此设置用于组通信连接以及分布式恢复连接的 TLS/SSL 配置。group_replication_recovery_ssl_crlpath
命令行格式 --group-replication-recovery-ssl-crlpath=值
系统变量 group_replication_recovery_ssl_crlpath
作用域 全局 动态 是 SET_VAR
提示适用否 类型 目录名 可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_ssl_crlpath
指定包含证书吊销列表文件的目录的路径。有关为分布式恢复配置 SSL 的信息,请参阅第 20.6.2 节“使用安全套接字层 (SSL) 保护组通信连接”。当 MySQL 通信堆栈用于组时(
group_replication_communication_stack = MYSQL
),此设置用于组通信连接以及分布式恢复连接的 TLS/SSL 配置。group_replication_recovery_ssl_key
命令行格式 --group-replication-recovery-ssl-key=值
系统变量 group_replication_recovery_ssl_key
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_ssl_key
指定用于建立安全连接的 SSL 密钥文件的名称。有关为分布式恢复配置 SSL 的信息,请参阅 第 20.6.2 节,“使用安全套接字层 (SSL) 保护组通信连接”。如果已将此服务器设置为支持克隆(请参阅 第 20.5.4.2 节,“用于分布式恢复的克隆”),并且您已将
group_replication_recovery_use_ssl
设置为ON
,则组复制会自动配置克隆 SSL 选项clone_ssl_key
的设置,使其与group_replication_recovery_ssl_key
的设置相匹配。当 MySQL 通信堆栈用于组时(
group_replication_communication_stack = MYSQL
),此设置用于组通信连接以及分布式恢复连接的 TLS/SSL 配置。group_replication_recovery_ssl_verify_server_cert
命令行格式 --group-replication-recovery-ssl-verify-server-cert[={OFF|ON}]
系统变量 group_replication_recovery_ssl_verify_server_cert
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_ssl_verify_server_cert
指定分布式恢复连接是否应检查捐赠者发送的证书中的服务器通用名称值。有关为分布式恢复配置 SSL 的信息,请参阅 第 20.6.2 节,“使用安全套接字层 (SSL) 保护组通信连接”。当 MySQL 通信堆栈用于组时(
group_replication_communication_stack = MYSQL
),此设置用于组通信连接以及分布式恢复连接的 TLS/SSL 配置。group_replication_recovery_tls_ciphersuites
命令行格式 --group-replication-recovery-tls-ciphersuites=值
系统变量 group_replication_recovery_tls_ciphersuites
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 默认值 NULL
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
当对分布式恢复连接使用 TLSv1.3 进行连接加密,并且此服务器实例是分布式恢复连接中的客户端(即加入成员)时,
group_replication_recovery_tls_ciphersuites
指定一个或多个允许的密码套件的冒号分隔列表。如果在使用 TLSv1.3 时(如果您未设置系统变量,则为默认设置)将此系统变量设置为NULL
,则允许使用默认启用的密码套件,如 第 8.3.2 节,“加密连接 TLS 协议和密码” 中所列。如果将此系统变量设置为空字符串,则不允许使用任何密码套件,因此不使用 TLSv1.3。有关为分布式恢复配置 SSL 的信息,请参阅 第 20.6.2 节,“使用安全套接字层 (SSL) 保护组通信连接”。当 MySQL 通信堆栈用于组时(
group_replication_communication_stack = MYSQL
),此设置用于组通信连接以及分布式恢复连接的 TLS/SSL 配置。group_replication_recovery_tls_version
命令行格式 --group-replication-recovery-tls-version=值
系统变量 group_replication_recovery_tls_version
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 默认值 TLSv1.2,TLSv1.3
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
当此服务器实例是分布式恢复连接中的客户端(即加入成员)时,
group_replication_recovery_tls_version
指定一个或多个允许的 TLS 协议的逗号分隔列表,用于连接加密。作为客户端(加入成员)和服务器(捐赠者)参与每个分布式恢复连接的组成员协商它们都设置为支持的最高协议版本。当 MySQL 通信堆栈用于组时(
group_replication_communication_stack = MYSQL
),此设置用于组通信连接以及分布式恢复连接的 TLS/SSL 配置。默认值为 “
TLSv1.2,TLSv1.3
”。确保指定的协议版本是连续的,序列中间没有跳过的版本号。重要MySQL Server 8.0 中已弃用并随后删除了对 TLSv1 和 TLSv1.1 连接协议的支持。有关更多信息,请参阅 移除对 TLSv1 和 TLSv1.1 协议的支持。
如果 MySQL Server 是使用 OpenSSL 1.1.1 编译的,则 MySQL 8.4 中支持 TLSv1.3 协议。服务器在启动时检查 OpenSSL 的版本,如果低于 1.1.1,则从系统变量的默认值中移除 TLSv1.3。在这种情况下,默认值为 “
TLSv1.2
”。组复制支持 TLSv1.3,并支持密码套件选择。有关更多信息,请参阅 第 20.6.2 节,“使用安全套接字层 (SSL) 保护组通信连接”。
有关为分布式恢复配置 SSL 的信息,请参阅 第 20.6.2 节,“使用安全套接字层 (SSL) 保护组通信连接”。
group_replication_recovery_use_ssl
命令行格式 --group-replication-recovery-use-ssl[={OFF|ON}]
系统变量 group_replication_recovery_use_ssl
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_use_ssl
指定组复制在组成员之间的分布式恢复连接是否应使用 SSL。有关为分布式恢复配置 SSL 的信息,请参阅 第 20.6.2 节,“使用安全套接字层 (SSL) 保护组通信连接”。如果已将此服务器设置为支持克隆(请参阅 第 20.5.4.2 节,“用于分布式恢复的克隆”),并且您将此选项设置为
ON
,则组复制会将 SSL 用于远程克隆操作以及从捐赠者的二进制日志进行状态传输。如果您将此选项设置为OFF
,则组复制不会将 SSL 用于远程克隆操作。group_replication_recovery_zstd_compression_level
命令行格式 --group-replication-recovery-zstd-compression-level=#
系统变量 group_replication_recovery_zstd_compression_level
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 3
最小值 1
最大值 22
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_recovery_zstd_compression_level
指定使用zstd
压缩算法的组复制分布式恢复连接要使用的压缩级别。允许的级别为 1 到 22,值越大表示压缩级别越高。默认的zstd
压缩级别为 3。对于不使用zstd
压缩的分布式恢复连接,此变量无效。有关更多信息,请参阅 第 6.2.8 节,“连接压缩控制”。
group_replication_single_primary_mode
命令行格式 --group-replication-single-primary-mode[={OFF|ON}]
系统变量 group_replication_single_primary_mode
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 ON
注意此系统变量是组范围的配置设置,更改生效需要完全重新启动复制组。
group_replication_single_primary_mode
指示组自动选择一台服务器来处理读/写工作负载。此服务器为主服务器,所有其他服务器为辅助服务器。此系统变量是组范围的配置设置。它在所有组成员上必须具有相同的值,不能在组复制运行时更改,并且需要完全重新启动组(由具有
group_replication_bootstrap_group=ON
的服务器进行引导)才能使值更改生效。有关安全引导已执行和认证事务的组的说明,请参阅第 20.5.2 节“重新启动组”。如果组为此系统变量设置了值,而加入成员为此系统变量设置了不同的值,则加入成员将无法加入组,直到更改该值以匹配为止。如果组成员为此系统变量设置了值,而加入成员不支持该系统变量,则它无法加入组。
将此变量设置为
ON
将导致忽略group_replication_auto_increment_increment
的任何设置。使用
group_replication_switch_to_single_primary_mode()
和group_replication_switch_to_multi_primary_mode()
函数可以在组仍在运行时更改此系统变量的值。有关更多信息,请参阅第 20.5.1.2 节“更改组模式”。-
命令行格式 --group-replication-ssl-mode=值
系统变量 group_replication_ssl_mode
作用域 全局 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 DISABLED
有效值 DISABLED
REQUIRED
VERIFY_CA
VERIFY_IDENTITY
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_ssl_mode
设置组复制成员之间组通信连接的安全状态。可能的值如下:- DISABLED
建立未加密的连接(默认)。
- REQUIRED
如果服务器支持安全连接,则建立安全连接。
- VERIFY_CA
与
REQUIRED
类似,但另外还要根据配置的证书颁发机构 (CA) 证书验证服务器 TLS 证书。- VERIFY_IDENTITY
与
VERIFY_CA
类似,但另外还要验证服务器证书是否与尝试连接的主机匹配。
有关为组通信配置 SSL 的信息,请参阅 第 20.6.2 节,“使用安全套接字层 (SSL) 保护组通信连接”。
group_replication_start_on_boot
命令行格式 --group-replication-start-on-boot[={OFF|ON}]
系统变量 group_replication_start_on_boot
作用域 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 ON
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_start_on_boot
指定服务器在服务器启动期间是否应自动启动组复制(ON
)或不启动(OFF
)。当您将此选项设置为ON
时,组复制会在使用远程克隆操作进行分布式恢复后自动重启。要在服务器启动期间自动启动组复制,必须使用
CHANGE REPLICATION SOURCE TO
语句将分布式恢复的用户凭据存储在服务器上的复制元数据存储库中。如果您希望在START GROUP_REPLICATION
语句(仅在内存中存储用户凭据)上指定用户凭据,请确保group_replication_start_on_boot
设置为OFF
。-
命令行格式 --group-replication-tls-source=值
系统变量 group_replication_tls_source
作用域 全局 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 mysql_main
有效值 mysql_main
mysql_admin
可以在组复制运行时更改此系统变量的值,但更改仅在停止并重新启动组成员上的组复制后才会生效。
group_replication_tls_source
指定组复制的 TLS 材料来源。 group_replication_transaction_size_limit
命令行格式 --group-replication-transaction-size-limit=#
系统变量 group_replication_transaction_size_limit
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 150000000
最小值 0
最大值 2147483647
单位 字节 此系统变量在所有组成员上应具有相同的值。可以在组复制运行时更改此系统变量的值。更改将立即对组成员生效,并从该成员上启动的下一个事务开始应用。在此过程中,允许系统变量的值在组成员之间有所不同,但某些事务可能会被拒绝。
group_replication_transaction_size_limit
配置复制组接受的最大事务大小(以字节为单位)。大于此大小的事务将由接收成员回滚,并且不会广播到组。大型事务可能会在内存分配方面给复制组带来问题,从而导致系统速度变慢,或者在网络带宽消耗方面带来问题,从而导致某个成员因为忙于处理大型事务而被怀疑已发生故障。当此系统变量设置为 0 时,组接受的事务大小没有限制。此系统变量的默认设置为 150000000 字节(约 143 MB)。请根据您需要组容忍的最大消息大小调整此系统变量的值,同时请记住,处理事务所需的时间与其大小成正比。
group_replication_transaction_size_limit
的值在所有组成员上都应相同。有关大型事务的进一步缓解策略,请参阅第 20.3.2 节“组复制限制”。group_replication_unreachable_majority_timeout
命令行格式 --group-replication-unreachable-majority-timeout=#
系统变量 group_replication_unreachable_majority_timeout
作用域 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 0
最小值 0
最大值 31536000
单位 秒 可以在组复制运行时更改此系统变量的值,并且更改会立即生效。当发生需要该行为的问题时,将读取系统变量的当前值。
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
指定的操作。警告如果您有一个对称组,例如只有两个成员 (S0、S2),如果存在网络分区并且没有多数,则在配置的超时后,所有成员都将进入
ERROR
状态。有关使用此选项的更多信息,请参阅第 20.7.7.2 节“无法访问多数超时”。
group_replication_view_change_uuid
命令行格式 --group-replication-view-change-uuid=值
已弃用 是 系统变量 group_replication_view_change_uuid
作用域 全局 动态 是 SET_VAR
提示适用否 类型 字符串 默认值 AUTOMATIC
注意此系统变量是组范围的配置设置,更改生效需要完全重新启动复制组。
group_replication_view_change_uuid
指定一个备用 UUID,用作组生成的视图更改事件的 GTID 中标识符的 UUID 部分。备用 UUID 使这些内部生成的事务易于与从客户端接收的组事务区分开来。如果您的设置允许在组之间进行故障转移,并且您需要识别和丢弃特定于备份组的事务,这将非常有用。此系统变量的默认值为AUTOMATIC
,这意味着视图更改事件的 GTID 使用group_replication_group_name
系统变量指定的组名,就像来自客户端的事务一样。没有此系统变量的版本的组成员被视为具有值AUTOMATIC
。备用 UUID 必须与
group_replication_group_name
系统变量指定的组名不同,并且必须与任何组成员的服务器 UUID 不同。它还必须与使用CHANGE REPLICATION SOURCE TO
语句的ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS
选项应用于此拓扑中任何位置的复制通道上的匿名事务的 GTID 中使用的任何 UUID 不同。此系统变量是组范围的配置设置。它在所有组成员上必须具有相同的值,不能在组复制运行时更改,并且需要完全重新启动组(由具有
group_replication_bootstrap_group=ON
的服务器进行引导)才能使值更改生效。有关安全引导已执行和认证事务的组的说明,请参阅第 20.5.2 节“重新启动组”。如果组为此系统变量设置了值,而加入成员为此系统变量设置了不同的值,则加入成员将无法加入组,直到更改该值以匹配为止。如果组成员为此系统变量设置了值,而加入成员不支持该系统变量,则它无法加入组。
视图更改事件的日志记录已被恢复元数据的共享所取代;因此,此变量已被弃用,并将在未来版本的 MySQL 中删除。