# 18.9 组复制系统变量

本节列出了特定于 Group Replication 插件的系统变量。每个配置选项都以“group_replication”。

Group Replication 组成员上的一些系统变量,包括一些 Group Replication 特定的系统变量和一些常规系统变量,是组范围的配置设置。这些系统变量在所有组成员上必须具有相同的值,在组复制运行时不能更改,并且需要完全重新启动组(由服务器启动group_replication_bootstrap_group=ON) 以使值更改生效。如果组为其中一个系统变量设置了值,并且加入成员为该系统变量设置了不同的值,则加入成员无法加入组,直到值更改为匹配。如果组为系统变量之一设置了值,并且加入成员不支持系统变量,则它不能加入组。这些条件适用于以下系统变量:

重要的

  • 如果将组复制的许多系统变量作为命令行参数传递给服务器,则在服务器启动期间不会完全验证它们。这些系统变量包括group_replication_group_name,group_replication_single_primary_mode,group_replication_force_members、SSL 变量和流控制系统变量。它们仅在服务器启动后才被完全验证。

  • 为组成员指定 IP 地址或主机名的组复制系统变量直到开始 GROUP_REPLICATION发表声明。在那之前,Group Replication 的 Group Communication System (GCS) 无法验证这些值。

    Group Replication 插件特有的系统变量如下:

  • group_replication_advertise_recovery_endpoints

    命令行格式 --group-replication-advertise-recovery-endpoints=value
    介绍 8.0.21
    系统变量 [group_replication_advertise_recovery_endpoints](group-replication-options.html#sysvar_group_replication_advertise_recovery_endpoints)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 细绳
    默认值 默认

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

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

    一个值默认,这是默认设置,表示加入成员使用现有成员的标准 SQL 客户端连接,由 MySQL 服务器指定主机名港口系统变量。如果一个备用端口号由报告端口系统变量,而是使用该变量。性能模式表复制组成员显示此连接的地址和端口号会员主机会员端口字段。这是 MySQL 8.0.20 及以下版本中组成员的行为。

    代替默认,您可以指定一个或多个分布式恢复端点,现有成员向加入成员通告以供他们使用。提供分布式恢复端点使管理员可以控制分布式恢复流量,与与组成员的常规 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 地址和端口作为分布式恢复端点以及加入成员如何使用它们的详细信息,请参阅第 18.5.4.1.1 节,“为分布式恢复端点选择地址”.要求摘要如下:

  • group_replication_allow_local_lower_version_join

    命令行格式 --group-replication-allow-local-lower-version-join[={OFF|ON}]
    系统变量 [group_replication_allow_local_lower_version_join](group-replication-options.html#sysvar_group_replication_allow_local_lower_version_join)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 布尔值
    默认值 离开

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

    group_replication_allow_local_lower_version_join允许当前服务器加入组,即使它运行的 MySQL 服务器版本低于组。使用默认设置离开,如果服务器运行的版本低于现有组成员,则不允许服务器加入复制组。此标准策略确保组的所有成员都能够交换消息并应用事务。请注意,运行 MySQL 8.0.17 或更高版本的成员在检查其兼容性时会考虑发行版的补丁版本。运行 MySQL 8.0.16 或更低版本或 MySQL 5.7 的成员仅考虑主要版本。

    group_replication_allow_local_lower_version_join仅在以下情况下:

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

    • 您希望回滚一个或多个复制组成员的升级,而无需关闭整个组并再次引导它。

    警告

    将此选项设置为不会使新成员与群组兼容,并允许其加入群组而无需针对现有成员的不兼容行为采取任何保护措施。为保证新会员的正确操作,请采取两个都以下预防措施:

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

    2. 从运行较低版本的服务器加入组的点开始,停止组中其他服务器上的所有写入。

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

  • group_replication_auto_increment_increment

    命令行格式 --group-replication-auto-increment-increment=#
    系统变量 [group_replication_auto_increment_increment](group-replication-options.html#sysvar_group_replication_auto_increment_increment)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 7.
    最小值 1.
    最大值 65535

    此系统变量在所有组成员上的值应相同。在组复制运行时,不能更改此系统变量的值。必须停止组复制,更改系统变量的值,然后在每个组成员上重新启动组复制。在此过程中,允许系统变量的值在组成员之间存在差异,但组成员上的某些事务可能会回滚。

    组复制自动增量增量确定在此服务器实例上执行的事务的自动递增列的连续值之间的间隔。添加间隔可以避免为组成员上的写入选择重复的自动增量值,这会导致事务回滚。默认值7表示可用值的数量与复制组(9个成员)允许的最大大小之间的平衡。如果您的组有更多或更少的成员,则可以在开始组复制之前将此系统变量设置为与预期的组成员数相匹配。

    在服务器实例上启动组复制时,服务器系统变量的值自动增量将更改为该值,并更改服务器系统变量的值自动增量偏移更改为服务器ID。当组复制停止时,这些更改将恢复。这些更改仅在以下情况下进行和恢复:自动增量自动增量偏移每个都有默认值1。如果它们的值已从默认值修改,则组复制不会更改它们。在MySQL 8.0中,当组复制处于单主模式时,系统变量也不会被修改,其中只有一台服务器写入。

  • 组\u复制\u自动连接\u尝试

    命令行格式 --组复制自动连接尝试=#
    介绍 8.0.16
    系统变量 [group_replication_autorejoin_trytes](group replication options.html#sysvar_group_replication_autorejoin_trytes)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值(≥ 8.0.21) 3.
    默认值(≤ 8.0.20) 0
    最小值 0
    最大值 2016

    此系统变量的值可以在组复制运行时更改,并且更改会立即生效。当问题发生时,系统变量的当前值将被读取,这意味着需要该行为。

    组\u复制\u自动连接\u尝试指定成员在被驱逐或无法在被驱逐前联系到该组多数成员时自动重新加入该组的尝试次数组\复制\无法访问\多数\超时已达到设定值。当达到成员的驱逐或无法达到多数超时时,它会尝试重新加入(使用当前插件选项值),然后继续进行进一步的自动重新加入尝试,直到达到指定的尝试次数。自动重新加入尝试失败后,成员将等待5分钟,然后再进行下一次尝试。如果指定的尝试次数已用尽,而成员未重新加入或停止,则该成员将继续执行组\复制\退出\状态\操作系统变量。

    在MySQL 8.0.20之前,默认设置为0,这意味着成员不会尝试自动重新加入。在MySQL 8.0.21中,默认设置为3,这意味着成员会自动尝试3次重新加入组,每次尝试之间间隔5分钟。您最多可以指定2016次尝试。

    在自动重新加入尝试期间和之间,成员仍处于超级只读模式,不接受写入,但仍可以对成员进行读取,随着时间的推移,过时读取的可能性越来越大。如果您不能容忍任何时间段出现陈旧读取的可能性,请设置组\u复制\u自动连接\u尝试到0。有关自动重新联接功能的详细信息,以及为该选项选择值时的注意事项,请参阅第18.7.7.3节“自动重新连接”.

  • 组_复制_引导_组

    命令行格式 --组复制引导组[={OFF | ON}]
    系统变量 [group_replication_bootstrap_group](group replication options.html#sysvar_group_replication_bootstrap_group)
    范围 全球的
    动态
    集_VAR提示适用
    类型 布尔值
    默认值

    组_复制_引导_组将此服务器配置为引导组。此系统变量必须只有在一台服务器上设置,并且只有首次启动组或重新启动整个组时。启动组后,将此选项设置为.应该设置为动态和在配置文件中。在组运行时启动两台服务器或使用此选项重新启动一台服务器可能会导致人工分裂大脑的情况,即启动两个同名的独立组。

  • 组\u复制\u克隆\u阈值

    命令行格式 --组复制克隆阈值=#
    介绍 8.0.17
    系统变量 [group_replication_clone_threshold](group replication options.html#sysvar_group_replication_clone_threshold)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 9223372036854775807
    最小值 1.
    最大值 9223372036854775807
    单元 交易

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

    组\u复制\u克隆\u阈值指定现有成员(捐赠者)和加入成员(接受者)之间的事务间隔(以事务数表示),该事务间隔触发在分布式恢复过程中使用远程克隆操作将状态转移到加入成员。如果加入成员和合适的施主之间的事务间隔超过阈值,则组复制将通过远程克隆操作开始分布式恢复。如果事务间隔低于阈值,或者远程克隆操作在技术上不可行,则组复制将直接从施主的二进制日志进行状态传输。

    警告

    不要使用较低的设置组\u复制\u克隆\u阈值在一个活跃的群体中。如果在远程克隆操作进行期间,组中发生了多个超过阈值的事务,则加入成员将在重新启动后再次触发远程克隆操作,并且可以无限期地继续此操作。要避免这种情况,请确保将阈值设置为高于远程克隆操作所用时间内组中预期发生的事务数。

    要使用此功能,供体和加入成员必须事先设置以支持克隆。有关说明,请参阅第18.5.4.2节,“用于分布式恢复的克隆”。执行远程克隆操作时,组复制会为您管理该操作,包括所需的服务器重启,前提是:组_复制_启动_启动=on一切就绪。如果没有,则必须手动重新启动服务器。远程克隆操作将替换加入成员上的现有数据字典,但如果加入成员具有其他组成员上不存在的其他事务,则组复制将进行检查,并且不会继续,因为这些事务将被克隆操作擦除。

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

  • 组\复制\通信\调试\选项

    命令行格式 --组复制通信调试选项=值
    系统变量 [group_replication_communication_debug_options](group replication options.html#sysvar_group_replication_communication_debug_options)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串
    默认值 GCS_调试_无
    有效值 GCS_调试_无

    GCS_调试_基础

    GCS_调试_跟踪

    XCOM_DEBUG_BASIC

    XCOM_调试_跟踪

    GCS_调试_全部

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

    组\复制\通信\调试\选项配置调试消息的级别,以提供不同的组复制组件,例如组通信系统(GCS)和组通信引擎(XCom,Paxos变体)。调试信息存储在GCS_调试_跟踪数据目录中的文件。

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

    • GCS_调试_无禁用GCS和XCom的所有调试级别。

    • GCS_调试_基础在GCS中启用基本调试信息。

    • GCS_调试_跟踪在地面军事系统中启用跟踪信息。

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

    • XCOM_调试_跟踪在XCom中启用跟踪信息。

    • GCS_调试_全部为GCS和XCom启用所有调试级别。

      将调试级别设置为GCS_调试_无只有在不提供任何其他选项的情况下才有效。将调试级别设置为GCS_调试_全部覆盖所有其他选项。

  • 组\复制\通信\最大\消息\大小

    命令行格式 --组复制通信最大消息大小=#
    介绍 8.0.16
    系统变量 [group_replication_communication_max_message_size](group replication options.html#sysvar_group_replication_communication_max_message_size)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 10485760
    最小值 0
    最大值 1073741824
    单元 字节

    此系统变量在所有组成员上的值应相同。在组复制运行时,不能更改此系统变量的值。必须停止组复制,更改系统变量的值,然后在每个组成员上重新启动组复制。在此过程中,允许系统变量的值在组成员之间存在差异,但组成员上的某些事务可能会回滚。

    组\复制\通信\最大\消息\大小指定组复制通信的最大消息大小。大于此大小的邮件会自动拆分为单独发送的片段,并由收件人重新组装。有关更多信息,请参阅第18.7.5节,“消息碎片”.

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

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

  • 组\复制\通信\堆栈

    介绍 8.0.27
    系统变量 [group_replication_communication_stack](group replication options.html#sysvar_group_replication_communication_stack)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串
    默认值 XCOM
    有效值 XCOM

    MYSQL

    此系统变量的值可以在组复制运行时更改,但更改仅在您在组成员上重新启动组复制后生效。

    所有组成员的设置必须相同。如果加入成员的值与组中其他成员的值不同,则该成员无法加入,但这不受组复制自身对组范围配置设置的检查的控制。由于通信协议不兼容,加入成员的尝试完全失败。

    组\复制\通信\堆栈指定是使用XCom通信堆栈还是MySQL通信堆栈在成员之间建立组通信连接。XCom通信堆栈是组复制自己的实现,在MySQL 8.0.27之前的版本中一直使用,不支持身份验证或网络名称空间。MySQL通信堆栈是MySQL服务器的本机实现,支持身份验证和网络名称空间,并在发布时立即访问新的安全功能。组中的所有成员必须使用相同的通信堆栈。

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

    当您设置一个组来使用MySQL的通信堆栈时,需要额外的配置;看见将组配置为使用MySQL通信堆栈.

  • 组\u复制\u组件\u停止\u超时

    命令行格式 --组复制组件停止超时=#
    系统变量 [group_replication_components_stop_timeout](group replication options.html#sysvar_group_replication_components_stop_timeout)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值(≥ 8.0.27) 300
    默认值(≤ 8.0.26) 31536000
    最小值 2.
    最大值 31536000
    单元

    此系统变量的值可以在组复制运行时更改,但只有在停止并重新启动组成员上的组复制后,更改才会生效。

    组\u复制\u组件\u停止\u超时指定组复制在关闭时等待其每个模块完成正在进行的进程的时间(以秒为单位)。组件超时将在停止组复制语句,这会在服务器重新启动或自动重新加入期间自动发生。

    超时用于解决无法正常停止组复制组件的情况,如果成员处于错误状态时被从组中驱逐,或者当MySQL Enterprise Backup等进程对成员上的表持有全局锁时,可能会发生这种情况。在这种情况下,成员无法停止applier线程或完成分布式恢复过程以重新加入。停止组复制直到情况得到解决(例如,通过释放锁),或者组件超时过期且模块关闭(无论其状态如何),才完成。

    在MySQL 8.0.27之前,默认组件超时为31536000秒,即365天。使用此设置时,组件超时在上述情况下没有帮助,因此建议使用较低的设置。从MySQL 8.0.27开始,默认值为300秒,因此,如果在此之前未解决问题,组复制组件将在5分钟后停止,从而允许重新启动成员并重新加入。

  • 组\u复制\u压缩\u阈值

    命令行格式 --组复制压缩阈值=#
    系统变量 [group_replication_compression_threshold](group replication options.html#sysvar_group_replication_compression_threshold)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 1000000
    最小值 0
    最大值 4294967295
    单元 字节

    此系统变量在所有组成员上的值应相同。此系统变量的值可以在组复制运行时更改。停止并重新启动成员上的组复制后,更改将对每个组成员生效。在此过程中,允许系统变量的值在组成员之间有所不同,但并非所有成员的消息传递效率都相同。

    组\u复制\u压缩\u阈值指定对组成员之间发送的消息应用压缩的阈值(以字节为单位)。如果此系统变量设置为零,则禁用压缩。

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

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

  • 组\复制\一致性

    命令行格式 --组复制一致性=值
    介绍 8.0.14
    系统变量 [group_replication_consistency](group replication options.html#sysvar_group_replication_consistency)
    范围 全球会议
    动态
    集_VAR提示适用
    类型 列举
    默认值 最后的
    有效值 最后的

    在主故障切换之前

    之前

    之后

    前后

    此系统变量的值可以在组复制运行时更改。组\复制\一致性是一个服务器系统变量,而不是特定于组复制插件的变量,因此无需重新启动组复制即可使更改生效。更改系统变量的会话值会立即生效,更改全局值会对更改后开始的新会话生效。这个组\复制\管理员更改此系统变量的全局设置需要特权。

    组\复制\一致性控制组提供的事务一致性保证。您可以全局或每个事务配置一致性。组\u复制\u一致性还配置了新当选初选在单一初级群体中使用的围栏机制。必须考虑变量的影响,以同时考虑只读(RO)和读写(RW)事务。以下列表显示了此变量的可能值,以增加事务一致性保证:

    • 最终的

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

    • 在\u主故障切换之前

      新的RO或RW事务,新当选的主事务(从旧主程序应用积压)将被保留(未应用),直到应用任何积压。这确保当主故障转移发生时,无论是否有意,客户端总是在主故障转移上看到最新值。这保证了一致性,但意味着客户机必须能够在应用积压时处理延迟。通常这种延迟应该是最小的,但确实取决于积压的大小。

    • 以前

      RW事务在应用之前等待所有前面的事务完成。RO事务在执行之前等待所有前面的事务完成。这确保此事务只影响事务的延迟,从而读取最新值。这通过确保同步仅用于RO事务,从而减少了每个RW事务上的同步开销。此一致性级别还包括由在\u主故障切换之前.

    • 之后

      RW事务等待其更改应用于所有其他成员。此值对RO事务没有影响。此模式确保当在本地成员上提交事务时,任何后续事务都会读取任何组成员的写入值或更新值。使用此模式时,使用该组主要用于RO操作,以确保应用的RW事务在提交后应用于所有地方。应用程序可以使用此选项来确保后续读取获取包括最新写入的最新数据。这通过确保同步仅用于RW事务,从而减少了每个RO事务上的同步开销。此一致性级别还包括由在\u主故障切换之前.

    • 在您和您之后

      RW事务等待1)所有之前的事务在应用之前完成,2)直到其更改应用于其他成员。RO事务在执行之前等待所有之前的事务完成。该一致性级别还包括在主故障切换之前.

      有关更多信息,请参阅第18.5.3节“交易一致性保证”.

  • 组\u复制\u执行\u更新\u无处不在\u检查

    命令行格式 --组复制强制到处更新检查[={OFF | ON}]
    系统变量 [group_replication_exforce_update_everywhere_checks](group replication options.html#sysvar_group_replication_exforce_update_everywhere_checks)
    范围 全球的
    动态
    集_VAR提示适用
    类型 布尔值
    默认值

    此系统变量是集团范围内的配置设置。它在所有组成员上必须具有相同的值,在组复制运行时不能更改,并且需要完全重新启动组(由具有组\u复制\u引导\u组=打开)以使值更改生效。如果该组为此系统变量设置了一个值,并且加入成员为该系统变量设置了不同的值,则在将该值更改为匹配之前,加入成员无法加入该组。如果组成员为此系统变量设置了值,且加入成员不支持该系统变量,则无法加入该组。

    在MySQL 8.0.16中,您可以使用组复制切换到单一主模式()组复制切换到多主模式()函数在组仍在运行时更改此系统变量的值。有关更多信息,请参阅第18.5.1.2节,“改变团队模式”.

    组\u复制\u执行\u更新\u无处不在\u检查启用或禁用多主更新的严格一致性检查。默认情况下,将禁用检查。在单一主模式下,必须在所有组成员上禁用此选项。在多主模式下,启用此选项后,将按如下方式检查语句,以确保它们与多主模式兼容:

    • 如果交易是在可序列化隔离级别,则其提交在与组同步时失败。

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

  • 组\复制\退出\状态\操作

    命令行格式 --组复制退出状态操作=值
    介绍 8.0.12
    系统变量 [group_replication_exit_state_action](group replication options.html#sysvar_group_replication_exit_state_action)
    范围 全球的
    动态
    集_VAR提示适用
    类型 列举
    默认值(≥ 8.0.16) 只读
    默认值(≥ 8.0.12, ≤ 8.0.15) 中止服务器
    有效值(≥ 8.0.18) 中止服务器

    离线模式

    只读
    有效值(≥ 8.0.12, ≤ 8.0.17) 中止服务器

    只读

    此系统变量的值可以在组复制运行时更改,并且更改会立即生效。当问题发生时,系统变量的当前值将被读取,这意味着需要该行为。

    组\复制\退出\状态\操作配置当此服务器实例意外离开组时(例如,在遇到应用程序错误后,或在失去多数票的情况下,或当组的另一个成员由于怀疑超时而将其驱逐时),组复制的行为。在失去多数票的情况下,成员离开小组的超时时间由组\复制\无法访问\多数\超时系统变量,并且怀疑的超时时间由组\复制\成员\驱逐\超时系统变量。请注意,被驱逐的组成员在重新连接到组之前不知道自己被驱逐,因此只有在该成员设法重新连接,或者该成员对自己产生怀疑并驱逐自己时,才会采取指定的操作。

    因怀疑超时或失去多数而被开除的团体成员,如果该成员拥有组\u复制\u自动连接\u尝试系统变量设置为指定自动重新加入尝试次数,它首先在超级只读模式下进行指定次数的尝试,然后执行组\复制\退出\状态\操作.自动重新加入尝试不会在应用程序错误的情况下进行,因为这些尝试不可恢复。

    什么时候组\复制\退出\状态\操作即将只读,如果成员无意中退出组或耗尽其自动重新加入尝试,则实例会将MySQL切换到超级只读模式(通过设置系统变量)超级只读在…上).这个只读退出操作是MySQL 8.0版本在引入系统变量之前的行为,并从MySQL 8.0.16再次成为默认操作。

    什么时候组\复制\退出\状态\操作即将离线模式,如果成员无意中退出组或耗尽其自动重新加入尝试,则实例会将MySQL切换到脱机模式(通过设置系统变量)离线模式在…上)。在此模式下,已连接的客户端用户在下一个请求时会断开连接,并且不再接受连接,但具有连接管理特权(或不推荐的超级的特权)。组复制还设置系统变量超级只读在…上,因此客户端无法进行任何更新,即使它们已连接到连接管理超级的特权这个离线模式退出操作可从MySQL 8.0.18获得。

    什么时候组\复制\退出\状态\操作即将中止服务器,如果该成员无意中退出组或耗尽其自动重新加入尝试,则该实例将关闭MySQL。该设置是MySQL 8.0.12(添加系统变量时)到MySQL 8.0.15(含)的默认设置。

    重要的

    如果在成员成功加入组之前发生故障,则指定的退出操作没有被带走。如果在本地配置检查期间出现故障,或加入成员的配置与组的配置不匹配,则会出现这种情况。在这些情况下超级只读系统变量保留其原始值,继续接受连接,并且服务器不会关闭MySQL。为了确保在组复制未启动时服务器无法接受更新,我们建议超级只读=打开在启动时在服务器的配置文件中设置,组复制将更改为在主成员上成功启动后。当服务器配置为在服务器启动时启动组复制时,此保护措施尤为重要(组_复制_启动_启动=on),但当使用启动组复制命令

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

  • 组\u复制\u流\u控制\u应用程序\u阈值

    命令行格式 --组复制流控制应用程序阈值=#
    系统变量 [group_replication_flow_control_applier_threshold](group replication options.html#sysvar_group_replication_flow_control_applier_threshold)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 25000
    最小值 0
    最大值 2147483647
    单元 交易

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

    组\u复制\u流\u控制\u应用程序\u阈值指定应用程序队列中触发流控制的等待事务数。

  • 组\复制\流\控制\认证者\阈值

    命令行格式 --组复制流控制验证程序阈值=#
    系统变量 [group_replication_flow_control_certifier_threshold](group replication options.html#sysvar_group_replication_flow_control_certifier_threshold)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 25000
    最小值 0
    最大值 2147483647
    单元 交易

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

    组\复制\流\控制\认证者\阈值指定证书颁发者队列中触发流控制的等待事务数。

  • 组\复制\流\控制\持有\百分比

    命令行格式 --组复制流控制保留百分比=#
    系统变量 [group_replication_flow_control_hold_percent](group replication options.html#sysvar_group_replication_flow_control_hold_percent)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 10
    最小值 0
    最大值 100
    单元 百分率

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

    组\复制\流\控制\持有\百分比定义未使用的组配额百分比,以允许受流控制的集群赶上积压工作。值为0意味着配额的任何部分都不会被保留,以弥补工作积压。

  • 组\复制\流\控制\最大\提交\配额

    命令行格式 --组复制流控制最大提交配额=#
    系统变量 [group_replication_flow_control_max_commit_quota](group replication options.html#sysvar_group_replication_flow_control_max_commit_quota)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 0
    最小值 0
    最大值 2147483647

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

    组\复制\流\控制\最大\提交\配额定义组的最大流量控制配额,或启用流量控制时任何时段的最大可用配额。值为0表示没有设置最大配额。此系统变量的值不能小于组\复制\流\控制\最小\配额组\复制\流\控制\最小\恢复\配额.

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

    命令行格式 --组复制流控制成员配额百分比=#
    系统变量 [group_replication_flow_control_member_quota_percent](group replication options.html#sysvar_group_replication_flow_control_member_quota_percent)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 整数
    默认值 0
    最小值 0
    最大值 100
    单元 百分比

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

    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](group-replication-options.html#sysvar_group_replication_flow_control_min_quota)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 整数
    默认值 0
    最小值 0
    最大值 2147483647

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

    group_replication_flow_control_min_quota控制可以分配给成员的最低流量控制配额,与上一周期执行的计算的最小配额无关。值 0 表示没有最小配额。此系统变量的值不能大于group_replication_flow_control_max_commit_quota.

  • group_replication_flow_control_min_recovery_quota

    命令行格式 --group-replication-flow-control-min-recovery-quota=#
    系统变量 [group_replication_flow_control_min_recovery_quota](group-replication-options.html#sysvar_group_replication_flow_control_min_recovery_quota)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 整数
    默认值 0
    最小值 0
    最大值 2147483647

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

    group_replication_flow_control_min_recovery_quota控制由于组中另一个恢复成员而可以分配给成员的最低配额,与上一期间执行的计算的最小配额无关。值 0 表示没有最小配额。此系统变量的值不能大于group_replication_flow_control_max_commit_quota.

  • group_replication_flow_control_mode

    命令行格式 --group-replication-flow-control-mode=值
    系统变量 [group_replication_flow_control_mode](group-replication-options.html#sysvar_group_replication_flow_control_mode)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 枚举
    默认值 配额
    有效值 已禁用

    配额

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

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

  • group_replication_flow_control_period

    命令行格式 --group-replication-flow-control-period=#
    系统变量 [group_replication_flow_control_period](group-replication-options.html#sysvar_group_replication_flow_control_period)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 整数
    默认值 1
    最小值 1
    最大值 60
    单元

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

    group_replication_flow_control_period定义流控制迭代之间等待多少秒,其中发送流控制消息并运行流控制管理任务。

  • group_replication_flow_control_release_percent

    命令行格式 --group-replication-flow-control-release-percent=#
    系统变量 [group_replication_flow_control_release_percent](group-replication-options.html#sysvar_group_replication_flow_control_release_percent)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 整数
    默认值 50
    最小值 0
    最大值 1000
    单元 百分比

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

    group_replication_flow_control_release_percent定义当流控制不再需要限制写入器成员时应该如何释放组配额,这个百分比是每个流控制周期的配额增加。值 0 意味着一旦流量控制阈值在限制范围内,就会在单个流量控制迭代中释放配额。该范围允许配额最多以当前配额的 10 倍释放,因为这允许更大程度的适应,主要是在流量控制周期大而配额非常小时。

  • group_replication_force_members

    命令行格式 --group-replication-force-members=值
    系统变量 [group_replication_force_members](group-replication-options.html#sysvar_group_replication_force_members)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 细绳

    此系统变量用于强制新的组成员身份。该系统变量的值可以在 Group Replication 运行时更改,并且更改立即生效。您只需在要保留在组中的组成员之一上设置系统变量的值。有关您可能需要强制新组成员身份的情况的详细信息,以及使用此系统变量时要遵循的过程,请参阅第 18.7.8 节,“处理网络分区和仲裁丢失”.

    group_replication_force_members将对等地址列表指定为逗号分隔列表,例如主机 1:端口 1,主机 2:端口 2.未包含在列表中的任何现有成员都不会收到该组的新视图并被阻止。对于要继续作为成员的每个现有成员,您必须包括 IP 地址或主机名和端口,因为它们在group_replication_local_address每个成员的系统变量。必须在方括号中指定 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必须为空才能发出开始 GROUP_REPLICATION陈述。

  • group_replication_group_name

    命令行格式 --group-replication-group-name=值
    系统变量 [group_replication_group_name](group-replication-options.html#sysvar_group_replication_group_name)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 细绳

    组复制运行时,无法更改此系统变量的值。

    group_replication_group_name指定此服务器实例所属的组的名称,它必须是有效的 UUID。此 UUID 构成 GTID 的一部分,当组成员从客户端接收到的事务以及组成员内部生成的视图更改事件被写入二进制日志时,这些 GTID 会被使用。

    重要的

    必须使用唯一的 UUID。

  • group_replication_group_seeds

    命令行格式 --group-replication-group-seeds=值
    系统变量 [group_replication_group_seeds](group-replication-options.html#sysvar_group_replication_group_seeds)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 细绳

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

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

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

    请注意,您为此变量指定的值在启动组复制声明发布,集团通讯系统(GCS)可用。

    通常,此列表由组的所有成员组成,但您可以选择组成员的子集作为种子。列表必须至少包含一个有效的成员地址。启动组复制时验证每个地址。如果列表中不包含任何有效的成员地址,则启动组复制失败。

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

    加入成员必须使用种子成员在网络中宣传的相同协议(IPv4或IPv6)与种子成员通信组复制组种子选项为了获得组复制的IP地址权限,种子成员上的allowlist必须包含种子成员提供的协议的加入成员的IP地址,或解析为该协议地址的主机名。除了加入成员的地址外,还必须设置并允许此地址或主机名组\复制\本地\地址如果该地址的协议与种子成员公布的协议不匹配。如果加入成员没有相应协议的允许地址,其连接尝试将被拒绝。有关更多信息,请参阅第18.6.4节,“组复制IP地址权限”.

  • 组复制gtid分配块大小

    命令行格式 --组复制gtid分配块大小=#
    系统变量 [group_replication_gtid_assignment_block_size](group replication options.html#sysvar_group_replication_gtid_assignment_block_size)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 1000000
    最小值 1.
    最大值(64位平台) 9223372036854775807
    最大值(32位平台) 4294967295

    此系统变量是集团范围内的配置设置。它在所有组成员上必须具有相同的值,在组复制运行时不能更改,并且需要完全重新启动组(由具有组\u复制\u引导\u组=打开)以使值更改生效。如果该组为此系统变量设置了一个值,并且加入成员为该系统变量设置了不同的值,则在将该值更改为匹配之前,加入成员无法加入该组。如果组成员为此系统变量设置了值,且加入成员不支持该系统变量,则无法加入该组。

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

  • 组复制ip许可列表

    命令行格式 --组复制ip allowlist=值
    介绍 8.0.22
    系统变量 [group_replication_ip_allowlist](group replication options.html#sysvar_group_replication_ip_allowlist)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串
    默认值 自动的

    组复制ip许可列表可从MySQL 8.0.22获得组\复制\ ip\白名单.从MySQL 8.0.24开始,可以在组复制运行时更改此系统变量的值,并且更改会立即对成员生效。

    组复制ip许可列表指定允许哪些主机连接到组。当XCom通信堆栈用于组时(组\复制\通信\堆栈=XCOM),allowlist用于控制对组的访问。当MySQL通信堆栈用于组时(组\复制\通信\堆栈=MYSQL),用户身份验证用于控制对组的访问,而allowlist不使用,如果设置,则会被忽略。

    为中的每个组成员指定的地址组\复制\本地\地址必须允许在复制组中的其他服务器上使用。请注意,您为此变量指定的值在启动组复制声明发布,集团通讯系统(GCS)可用。

    默认情况下,此系统变量设置为自动的,它允许从主机上活动的专用子网进行连接。用于组复制的组通信引擎(XCom)自动扫描主机上的活动接口,并识别那些在专用子网上有地址的接口。这些地址和本地服务器IPv4和(来自MySQL 8.0.14)IPv6的IP地址用于创建组复制允许列表。有关自动允许的地址范围的列表,请参阅第18.6.4节,“组复制IP地址权限”.

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

    作为组复制ip许可列表选项中,可以指定以下任意组合:

    • IPv4地址(例如,198.51.100.44)

    • 带有CIDR符号的IPv4地址(例如,192.0.2.21/24)

    • IPv6地址,来自MySQL 8.0.14(例如,2001:db8:85a3:8d3:1319:8a2e:370:7348)

    • 带有CIDR符号的IPv6地址,来自MySQL 8.0.14(例如,2001:db8:85a3:8d3::/64)

    • 主机名(例如,实例组织)

    • 带有CIDR符号的主机名(例如,www.example。com/24)

      在MySQL 8.0.14之前,主机名只能解析为IPv4地址。在MySQL 8.0.14中,主机名可以解析为IPv4地址、IPv6地址或两者。如果主机名解析为IPv4和IPv6地址,则IPv4地址始终用于组复制连接。您可以将CIDR表示法与主机名或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"
    

    如果该组的任何种子成员列在组复制组种子当加入成员具有IPv4时,带有IPv6地址的选项组\复制\本地\地址,或相反,您还必须为加入成员设置并允许种子成员提供的协议的替代地址(或解析为该协议地址的主机名)。有关更多信息,请参阅第18.6.4节,“组复制IP地址权限”.

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

    对于主机名,只有当另一台服务器发出连接请求时,才会进行名称解析。无法解析的主机名不会被考虑用于allowlist验证,并将警告消息写入错误日志。对解析的主机名执行正向确认反向DNS(FCrDNS)验证。

    警告

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

  • 组\复制\ ip\白名单

    命令行格式 --组复制ip白名单=值
    反对 8.0.22
    系统变量 [group_replication_ip_whitelist](group replication options.html#sysvar_group_replication_ip_whitelist)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串
    默认值 自动的

    从MySQL 8.0.22开始,组\复制\ ip\白名单已弃用,并且组复制ip许可列表可以替换它。对于这两个系统变量,默认值为自动的.

    在组复制启动时,如果其中一个系统变量已设置为用户定义的值,而另一个未设置,则使用更改后的值。如果两个系统变量都已设置为用户定义的值,则组复制ip许可列表被使用了。

    如果你改变了组\复制\ ip\白名单组复制ip许可列表在MySQL 8.0.24中可以运行组复制时,两个变量都没有优先级。

    新系统变量的工作方式与旧系统变量相同,只是术语发生了变化。给出的行为描述组复制ip许可列表适用于新旧系统变量。

  • 组\复制\本地\地址

    命令行格式 --组复制本地地址=值
    系统变量 [group_replication_local_address](group replication options.html#sysvar_group_replication_local_address)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串

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

    组\复制\本地\地址设置成员为其他成员的连接提供的网络地址,指定为主持人:波特格式化字符串。组的所有成员都必须能够访问该地址,因为组通信引擎使用该地址进行组复制(XCom,一种Paxos变体),用于远程XCom实例之间的TCP通信。如果您使用MySQL通信堆栈在成员之间建立组通信连接(组\复制\通信\堆栈=MYSQL),地址必须是MYSQL服务器正在侦听的IP地址和端口之一,如绑定地址服务器的系统变量。

    警告

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

    在中指定的地址或主机名组\复制\本地\地址由组复制用作复制组中的组成员的唯一标识符。只要主机名或IP地址都不同,就可以对复制组的所有成员使用相同的端口;只要端口都不同,就可以对所有成员使用相同的主机名或IP地址。推荐的组\复制\本地\地址电话是33061。请注意,您为此变量指定的值在启动组复制声明发布,集团通讯系统(GCS)可用。

    由配置的网络地址组\复制\本地\地址必须由所有集团成员解决。例如,如果每个服务器实例位于具有固定网络地址的不同计算机上,则可以使用该计算机的IP地址,例如10.0.0.1。如果使用主机名,则必须使用完全限定的名称,并确保其可通过正确配置的DNS解析/etc/主持人文件或其他名称解析过程。在MySQL 8.0.14中,IPv6地址(或解析为它们的主机名)可以与IPv4地址一起使用。为了区分端口号,必须在方括号中指定IPv6地址,例如:

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

    如果指定为服务器实例的组复制本地地址的主机名解析为IPv4和IPv6地址,则IPv4地址始终用于组复制连接。有关IPv6网络的组复制支持以及混合使用IPv4和IPv6的成员的复制组的更多信息,请参阅第18.5.5节,“对IPv6以及IPv6和IPv4混合组的支持”.

    如果使用XCom通信堆栈在成员之间建立组通信连接(组\复制\通信\堆栈=XCOM),为中的每个组成员指定的地址组\复制\本地\地址必须添加到组复制ip许可列表(来自MySQL 8.0.22)或组\复制\ ip\白名单(对于MySQL 8.0.21及更早版本)复制组中其他服务器上的系统变量。当XCom通信堆栈用于组时,allowlist用于控制对组的访问。当MySQL通信堆栈用于组时,用户身份验证用于控制对组的访问,而allowlist不使用,如果设置了,则会被忽略。请注意,如果该组的任何种子成员列在组复制组种子当此成员具有IPv4时,具有IPv6地址的选项组\复制\本地\地址,或者相反,您还必须为此成员设置并允许所需协议的替代地址(或解析为该协议地址的主机名)。有关更多信息,请参阅第18.6.4节,“组复制IP地址权限”.

  • 组\复制\成员\驱逐\超时

    命令行格式 --组复制成员排除超时=#
    介绍 8.0.13
    系统变量 [group_replication_member_expel_timeout](group replication options.html#sysvar_group_replication_member_expel_timeout)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值(≥ 8.0.21) 5
    默认值 (≤ 8.0.20) 0
    最小值 0
    最大值(≥ 8.0.14) 3600
    最大值(≤ 8.0.13) 31536000
    单元

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

    group_replication_member_expel_timeout指定组复制组成员在创建怀疑后等待的时间段(以秒为单位),然后再将怀疑失败的成员从组中驱逐出去。创建怀疑之前的最初 5 秒检测期不计入此时间的一部分。直到并包括 MySQL 8.0.20,值group_replication_member_expel_timeout默认为0,表示没有等待期,在5秒的检测期结束后,有嫌疑的成员有责任立即开除。从 MySQL 8.0.21 开始,该值默认为 5,这意味着可疑成员在 5 秒检测期后 5 秒有责任驱逐。

    改变价值group_replication_member_expel_timeout对该组成员的现有以及未来对该组成员的怀疑立即生效。因此,您可以将其用作强制怀疑超时并驱逐可疑成员的方法,从而允许更改组配置。有关详细信息,请参阅第 18.7.7.1 节,“驱逐超时”.

    增加价值group_replication_member_expel_timeout可以帮助避免在较慢或不太稳定的网络上发生不必要的驱逐,或者在预期的瞬时网络中断或机器减速的情况下。如果可疑成员在怀疑超时之前再次变为活动状态,它将应用由其余组成员缓冲的所有消息并进入在线的状态,无需操作员干预。您可以指定最长为 3600 秒(1 小时)的超时值。重要的是要确保 XCom 的消息缓存足够大以包含您指定时间段内的预期消息量,加上最初的 5 秒检测周期,否则成员无法重新连接。您可以使用group_replication_message_cache_size系统变量。有关详细信息,请参阅第 18.7.6 节,“XCom 缓存管理”.

    如果超过超时时间,嫌疑人将在嫌疑人超时后立即被开除。如果成员能够恢复通信并收到被驱逐的视图,并且该成员具有group_replication_autorejoin_tries系统变量设置为指定自动重新加入尝试的次数,它会在超级只读模式下继续进行指定次数的重新加入组的尝试。如果该成员没有指定任何自动重新加入尝试,或者如果它已经用尽了指定的尝试次数,它将遵循系统变量指定的操作group_replication_exit_state_action.

    有关使用group_replication_member_expel_timeout设置,见第 18.7.7.1 节,“驱逐超时”.有关在此系统变量不可用时避免不必要的驱逐的替代缓解策略,请参阅第 18.3.2 节,“组复制限制”.

  • group_replication_member_weight

    命令行格式 --group-replication-member-weight=#
    系统变量 [group_replication_member_weight](group-replication-options.html#sysvar_group_replication_member_weight)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 整数
    默认值 50
    最小值 0
    最大值 100
    单元 百分比

    该系统变量的值可以在 Group Replication 运行时更改,并且更改立即生效。发生故障转移情况时会读取系统变量的当前值。

    group_replication_member_weight指定可以分配给成员的百分比权重,以影响在发生故障转移时(例如,当现有主节点离开单主组时)成员被选为主节点的机会。为成员分配数字权重以确保选出特定成员,例如在主节点的计划维护期间或确保在故障转移事件中优先考虑某些硬件。

    对于成员配置如下的组:

    • 成员-1: 团体_复制_成员_重量=30,服务器_uuid=aaaa

    • 成员 2: 团体_复制_成员_重量=40,服务器_uuid=bbbb

    • 成员 3: 团体_复制_成员_重量=40,服务器_uuid=cccc

    • 成员 4: 团体_复制_成员_重量=40,服务器_uuid=dddd

      在选举新的初选期间,上述成员将被排序为成员 2,成员 3,成员 4, 和成员-1.这导致成员-2 在发生故障转移时被选为新的主节点。有关详细信息,请参阅第 18.1.3.1 节,“单主模式”.

  • group_replication_message_cache_size

    命令行格式 --group-replication-message-cache-size=#
    介绍 8.0.16
    系统变量 [group_replication_message_cache_size](group-replication-options.html#sysvar_group_replication_message_cache_size)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 整数
    默认值 1073741824 (1 GB)
    最小值(64 位平台,≥ 8.0.21) 134217728 (128 MB)
    最小值(64 位平台,≤ 8.0.20) 1073741824 (1 GB)
    最小值(32 位平台,≥ 8.0.21) 134217728 (128 MB)
    最小值(32 位平台,≤ 8.0.20) 1073741824 (1 GB)
    最大值(64 位平台) 18446744073709551615(16 EiB)
    最大值(32位平台) 315360004294967295(4 GB)
    单位 字节

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

    组\u复制\u消息\u缓存大小设置组通信引擎中用于组复制(XCom)的消息缓存可用的最大内存量。XCom消息缓存保存作为协商一致协议一部分的组成员之间交换的消息(及其元数据)。除其他功能外,消息缓存用于恢复在无法与其他组成员通信的一段时间后重新连接到组的成员丢失的消息。

    这个组\u复制\u成员\u expl\u超时系统变量确定除了初始5秒检测周期之外,允许成员返回组而不是被开除的等待期(最多一小时)。应参照此时间段内预期的消息量设置XCom消息缓存的大小,以便它包含成员成功返回所需的所有未命中消息。最多可达MySQL 8.0.20,默认仅为5秒检测周期,但从MySQL 8.0.21开始,默认为5秒等待期后5秒的检测周期,总时间段为10秒。

    考虑到MySQL服务器的其他缓存和对象池的大小,确保系统上有足够的内存来满足您所选缓存大小限制。默认设置为1073741824字节(1 GB)。最小设置也是1 GB,最多为MySQL 8.0.20。从MySQL 8.0.21开始,最小设置为134217728字节(128 MB),这使得在可用内存量受限的主机上部署,并且网络连接良好,以最小化组成员的瞬时连接损失的频率和持续时间。注意,使用的限制设置组\u复制\u消息\u缓存大小仅适用于存储在缓存中的数据,并且缓存结构需要额外的50 MB内存。

    缓存大小限制可以在运行时动态地增加或减小。如果减少缓存大小限制,XCom将删除已决定并交付的最旧条目,直到当前大小低于限制。当当前无法访问的成员可能需要恢复的消息从消息缓存中删除时,组复制的组通信系统(GCS)会通过警告消息通知您。有关调整消息缓存大小的详细信息,请参见第18.7.6节,“XCom缓存管理”.

  • 集团复制帕克索斯单一领导者

    命令行格式 --组复制paxos单领导[={OFF | ON}]
    介绍 8.0.27
    系统变量 [group_replication_paxos_single_leader](group replication options.html#sysvar_group_replication_paxos_single_leader)
    范围 全球的
    动态
    集_VAR提示适用
    类型 布尔值
    默认值

    此系统变量是集团范围内的配置设置。它在所有组成员上必须具有相同的值,在组复制运行时不能更改,并且需要完全重新启动组(由具有组\u复制\u引导\u组=打开)以使值更改生效。如果该组为此系统变量设置了一个值,并且加入成员为该系统变量设置了不同的值,则在将该值更改为匹配之前,加入成员无法加入该组。如果组成员为此系统变量设置了值,且加入成员不支持该系统变量,则无法加入该组。

    集团复制帕克索斯单一领导者可从MySQL 8.0.27获得。当团队处于单一主模式时,它使团队通信引擎能够与单一共识领导者一起运行。使用默认设置,此行为将被禁用,组中的每个成员都将用作领导者,这是此系统变量可用之前版本中的行为。当系统变量设置为在…上,团队沟通引擎可以使用单个领导者来推动共识。在单一的主要模式下,与单一的共识领导者合作可以提高绩效和恢复力,尤其是当团队的一些次要成员目前无法联系时。有关更多信息,请参阅第18.7.3节,“单一共识领袖”.

    为了让群组通信引擎使用一个统一的领导者,群组的通信协议版本必须是MySQL 8.0.27或更高版本。使用组\复制\获取\通信\协议()功能查看组的通信协议版本。如果正在使用较低版本,则该组无法使用此行为。你可以使用组\复制\设置\通信\协议()函数可将组的通信协议设置为更高版本(如果所有组成员都支持)。有关更多信息,请参阅第18.5.1.4节,“设置组的通信协议版本”.

  • 组\复制\轮询\旋转\循环

    命令行格式 --组复制轮询自旋循环=#
    系统变量 [group_replication_poll_spin_loops](group replication options.html#sysvar_group_replication_poll_spin_loops)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 0
    最小值 0
    最大值(64位平台) 18446744073709551615
    最大值(32位平台) 4294967295

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

    组\复制\轮询\旋转\循环指定组通信线程在等待更多传入网络消息之前等待通信引擎互斥体释放的次数。

  • 组_复制_恢复_完成

    命令行格式 --组复制恢复在=时完成
    系统变量 [group_replication_recovery_complete_at](group replication options.html#sysvar_group_replication_recovery_complete_at)
    范围 全球的
    动态
    集_VAR提示适用
    类型 列举
    默认值 申请的交易
    有效值 经认证的交易

    申请的交易

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

    组_复制_恢复_完成指定在从现有成员进行状态转移后处理缓存事务时,在分布式恢复过程中应用的策略。您可以选择成员在收到并验证其加入该组之前错过的所有交易后是否在线标记(经认证的交易),或仅在收到、认证并应用这些文件之后(申请的交易).

  • 组复制恢复压缩算法

    命令行格式 --组复制恢复压缩算法=值
    介绍 8.0.18
    系统变量 [group_replication_recovery_compression_algorithms](group replication options.html#sysvar_group_replication_recovery_compression_algorithms)
    范围 全球的
    动态
    集_VAR提示适用
    类型 设置
    默认值 未压缩
    有效值 兹利布

    zstd

    未压缩

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

    组复制恢复压缩算法指定组复制分布式恢复连接允许的压缩算法,以便从施主的二进制日志进行状态传输。可用的算法与协议压缩算法系统变量。有关更多信息,请参阅第4.2.8节,“连接压缩控制”.

    如果服务器已设置为支持克隆,则此设置不适用(请参阅)第18.5.4.2节,“用于分布式恢复的克隆”)在分布式恢复期间使用远程克隆操作。对于这种状态转移方法,克隆插件的克隆\u启用\u压缩设置适用。

  • 组\u复制\u恢复\u获取\u公钥\u

    命令行格式 --组复制恢复获取公钥[={OFF | ON}]
    系统变量 [group_replication_recovery_get_public_key](group replication options.html#sysvar_group_replication_recovery_get_public_key)
    范围 全球的
    动态
    集_VAR提示适用
    类型 布尔值
    默认值

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

    组\u复制\u恢复\u获取\u公钥\u指定是否从源请求基于RSA密钥对的密码交换所需的公钥。如果组\复制\恢复\公共\密钥\路径设置为有效的公钥文件,则优先于组\u复制\u恢复\u获取\u公钥\u。如果您不使用SSL在网络上进行分布式恢复,则此变量适用组_复制_恢复渠道(组_复制_恢复_使用_ssl=ON),并且组复制的复制用户帐户通过缓存_sha2_密码插件(MySQL 8.0中的默认插件)。有关更多详细信息,请参阅第18.6.3.1.1节,“使用缓存SHA-2身份验证插件的复制用户”.

  • 组\复制\恢复\公共\密钥\路径

    命令行格式 --组复制恢复公钥路径=文件名
    系统变量 [group_replication_recovery_public_key_path](group replication options.html#sysvar_group_replication_recovery_public_key_path)
    范围 全球的
    动态
    集_VAR提示适用
    类型 文件名
    默认值 无效的

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

    组\复制\恢复\公共\密钥\路径指定包含源所需公钥的副本端副本的文件的路径名,用于基于RSA密钥对的密码交换。该文件必须为PEM格式。如果组\复制\恢复\公共\密钥\路径设置为有效的公钥文件,则优先于组\u复制\u恢复\u获取\u公钥\u。如果您不使用SSL在网络上进行分布式恢复,则此变量适用组_复制_恢复频道(so)组\u复制\u恢复\u使用\u ssl即将),并且组复制的复制用户帐户通过缓存_sha2_密码插件(MySQL 8.0中的默认插件)或shau密码插件。(用于shau密码背景组\复制\恢复\公共\密钥\路径仅当MySQL使用OpenSSL构建时适用。)有关更多详细信息,请参阅第18.6.3.1.1节,“使用缓存SHA-2身份验证插件的复制用户”.

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

    命令行格式 --组复制恢复重新连接间隔=#
    系统变量 [group_replication_recovery_reconnect_interval](group replication options.html#sysvar_group_replication_recovery_reconnect_interval)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 60
    最小值 0
    最大值 31536000
    单元

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

    组\u复制\u恢复\u重新连接\u间隔指定在组中找不到合适的供者进行分布式恢复时,重新连接尝试之间的睡眠时间(秒)。

  • 组\u复制\u恢复\u重试\u计数

    命令行格式 --组复制恢复重试计数=#
    系统变量 [group_replication_recovery_retry_count](group replication options.html#sysvar_group_replication_recovery_retry_count)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 10
    最小值 0
    最大值 31536000

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

    组\u复制\u恢复\u重试\u计数指定要加入的成员在放弃之前尝试连接到可用的捐赠者以进行分布式恢复的次数。

  • 组\u复制\u恢复\u ssl\u ca

    命令行格式 --组复制恢复ssl ca=值
    系统变量 [group_replication_recovery_ssl_ca](group replication options.html#sysvar_group_replication_recovery_ssl_ca)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串

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

    组\u复制\u恢复\u ssl\u ca指定包含分布式恢复连接的受信任SSL证书颁发机构列表的文件的路径。看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”有关为分布式恢复配置SSL的信息。

    如果此服务器已设置为支持克隆(请参阅第18.5.4.2节,“用于分布式恢复的克隆”),你已经准备好了组\u复制\u恢复\u使用\u ssl在…上,组复制会自动配置克隆SSL选项的设置克隆_ssl _ca与您的设置相匹配组\u复制\u恢复\u ssl\u ca.

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

  • 组\u复制\u恢复\u ssl\u capath

    命令行格式 --组复制恢复ssl capath=value
    系统变量 [group_replication_recovery_ssl_capath](group replication options.html#sysvar_group_replication_recovery_ssl_capath)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串

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

    组\u复制\u恢复\u ssl\u capath指定包含分布式恢复连接的受信任SSL证书颁发机构证书的目录的路径。看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”有关为分布式恢复配置SSL的信息。

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

  • 组\u复制\u恢复\u ssl\u证书

    命令行格式 --组复制恢复ssl证书=值
    系统变量 [group_replication_recovery_ssl_cert](group replication options.html#sysvar_group_replication_recovery_ssl_cert)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串

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

    组\u复制\u恢复\u ssl\u证书指定用于为分布式恢复建立安全连接的SSL证书文件的名称。看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”有关为分布式恢复配置SSL的信息。

    如果此服务器已设置为支持克隆(请参阅第18.5.4.2节,“用于分布式恢复的克隆”),你已经准备好了组\u复制\u恢复\u使用\u ssl在…上,组复制会自动配置克隆SSL选项的设置克隆ssl证书与您的设置相匹配组\u复制\u恢复\u ssl\u证书.

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

  • 组\u复制\u恢复\u ssl\u密码

    命令行格式 --组复制恢复ssl密码=值
    系统变量 [group_replication_recovery_ssl_cipher](group replication options.html#sysvar_group_replication_recovery_ssl_cipher)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串

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

    组\u复制\u恢复\u ssl\u密码指定SSL加密的允许密码列表。看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”有关为分布式恢复配置SSL的信息。

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

  • 组\u复制\u恢复\u ssl\u crl

    命令行格式 --组复制恢复ssl crl=值
    系统变量 [group_replication_recovery_ssl_crl](group replication options.html#sysvar_group_replication_recovery_ssl_crl)
    范围 全球的
    动态
    集_VAR提示适用
    类型 文件名

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

    组\u复制\u恢复\u ssl\u crl指定包含包含证书吊销列表的文件的目录的路径。看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”有关为分布式恢复配置SSL的信息。

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

  • 组\u复制\u恢复\u ssl\u crlpath

    命令行格式 --组复制恢复ssl crlpath=值
    系统变量 [group_replication_recovery_ssl_crlpath](group replication options.html#sysvar_group_replication_recovery_ssl_crlpath)
    范围 全球的
    动态
    集_VAR提示适用
    类型 目录名

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

    组\u复制\u恢复\u ssl\u crlpath指定包含包含证书吊销列表的文件的目录的路径。看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”有关为分布式恢复配置SSL的信息。

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

  • 组\u复制\u恢复\u ssl\u密钥

    命令行格式 --组复制恢复ssl密钥=值
    系统变量 [group_replication_recovery_ssl_key](group replication options.html#sysvar_group_replication_recovery_ssl_key)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串

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

    组\u复制\u恢复\u ssl\u密钥指定用于建立安全连接的SSL密钥文件的名称。看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”有关为分布式恢复配置SSL的信息。

    如果此服务器已设置为支持克隆(请参阅第18.5.4.2节,“用于分布式恢复的克隆”),你已经准备好了组\u复制\u恢复\u使用\u ssl在…上,组复制会自动配置克隆SSL选项的设置克隆ssl密钥与您的设置相匹配组\u复制\u恢复\u ssl\u密钥.

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

  • 组复制恢复ssl验证服务器证书

    命令行格式 --组复制恢复ssl验证服务器证书[={OFF | ON}]
    系统变量 [group_replication_recovery_ssl_verify_server_cert](group replication options.html#sysvar_group_replication_recovery_ssl_verify_server_cert)
    范围 全球的
    动态
    集_VAR提示适用
    类型 布尔值
    默认值

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

    组复制恢复ssl验证服务器证书指定分布式恢复连接是否应检查施主发送的证书中服务器的公用名称值。看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”有关为分布式恢复配置SSL的信息。

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

  • 组\u复制\u恢复\u tls\u密码套件

    命令行格式 --组复制恢复tls CipherSuite=值
    介绍 8.0.19
    系统变量 [group_replication_recovery_tls_ciphersuites](group replication options.html#sysvar_group_replication_recovery_tls_ciphersuites)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串
    默认值 无效的

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

    组\u复制\u恢复\u tls\u密码套件指定TLSv1时一个或多个允许的密码套件的冒号分隔列表。3用于分布式恢复连接的连接加密,此服务器实例是分布式恢复连接中的客户端,即加入成员。如果此系统变量设置为无效的当TLSv1。3(如果未设置系统变量,则为默认值),则允许默认启用的密码套件,如中所列第6.3.2节,“加密连接TLS协议和密码”。如果此系统变量设置为空字符串,则不允许使用密码套件,并且TLSv1。因此,不使用3。该系统变量从MySQL 8.0.19开始提供。看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”,以获取有关为分布式恢复配置SSL的信息。

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

  • 组\u复制\u恢复\u tls\u版本

    命令行格式 --组复制恢复tls版本=值
    介绍 8.0.19
    系统变量 [group_replication_recovery_tls_version](group replication options.html#sysvar_group_replication_recovery_tls_version)
    范围 全球的
    动态
    集_VAR提示适用
    类型 一串
    默认值(≥ 8.0.28) TLSv1。2、TLSv1。3.
    默认值(≥ 8.0.19, ≤ 8.0.27) TLSv1,TLSv1。1,TLSv1。2、TLSv1。3.

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

    组\u复制\u恢复\u tls\u版本当此服务器实例是分布式恢复连接中的客户端(即加入成员)时,指定用于连接加密的一个或多个允许的TLS协议的逗号分隔列表。参与每个分布式恢复连接的组成员作为客户端(加入成员)和服务器(捐赠者)协商他们都要支持的最高协议版本。该系统变量可从MySQL 8.0.19获得。

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

    如果未设置此系统变量,则默认值为“TLSv1,TLSv1。1,TLSv1。2、TLSv1。3.“在MySQL 8.0.27之前使用,包括MySQL 8.0.27,从MySQL 8.0.28开始使用,默认为”TLSv1。2、TLSv1。3.“是用的。确保指定的协议版本是连续的,没有从序列中间跳过版本号。

    重要的

    • 对TLSv1和TLSv1的支持。1从MySQL 8.0.28开始,连接协议从MySQL服务器上删除。这些协议在MySQL 8.0.26中已被弃用,但如果使用弃用的TLS协议版本,MySQL服务器客户端(包括充当客户端的Group Replication Server实例)不会向用户返回警告。看见拆除TLSv1和TLSv1的支架。1.协议了解更多信息。

    • 对TLSv1的支持。3协议从MySQL 8.0.16开始在MySQL服务器中可用,前提是MySQL服务器是使用OpenSSL 1.1.1编译的。服务器在启动时检查OpenSSL的版本,如果低于1.1.1,则检查TLSv1。3从系统变量的默认值中删除。在这种情况下,默认值为“TLSv1,TLSv1。1,TLSv1。2.“MySQL 8.0.27之前及以后,以及”TLSv1。2.“来自MySQL 8.0.28。

    • 组复制支持TLSv1。MySQL 8.0.18中的3,支持MySQL 8.0.19中的密码套件选择。看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”了解更多信息。

      看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”有关为分布式恢复配置SSL的信息。

  • 组\u复制\u恢复\u使用\u ssl

    命令行格式 --组复制恢复使用ssl[={OFF | ON}]
    系统变量 [group_replication_recovery_use_ssl](group replication options.html#sysvar_group_replication_recovery_use_ssl)
    范围 全球的
    动态
    集_VAR提示适用
    类型 布尔值
    默认值

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

    组\u复制\u恢复\u使用\u ssl指定组成员之间的组复制分布式恢复连接是否应使用SSL。看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”有关为分布式恢复配置SSL的信息。

    如果此服务器已设置为支持克隆(请参阅第18.5.4.2节,“用于分布式恢复的克隆”),然后将此选项设置为在…上组复制使用SSL进行远程克隆操作,以及从捐赠者的二进制日志进行状态传输。如果将此选项设置为,组复制不使用SSL进行远程克隆操作。

  • 组复制恢复压缩级别

    命令行格式 --组复制恢复zstd压缩级别=#
    介绍 8.0.18
    系统变量 [group_replication_recovery_zstd_compression_level](group replication options.html#sysvar_group_replication_recovery_zstd_compression_level)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 3.
    最小值 1.
    最大值 22

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

    组复制恢复压缩级别指定要用于组复制分布式恢复连接的压缩级别,该连接使用zstd压缩算法。允许的水平从1到22,较大的值表示压缩水平增加。默认值zstd压缩级别为3。用于不使用zstd压缩,这个变量没有效果。

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

  • 组复制单主模式

    命令行格式 --组复制单一主模式[={OFF | ON}]
    系统变量 [group_replication_single_primary_mode](group replication options.html#sysvar_group_replication_single_primary_mode)
    范围 全球的
    动态
    集_VAR提示适用
    类型 布尔值
    默认值 在…上

    此系统变量是集团范围内的配置设置。它在所有组成员上必须具有相同的值,在组复制运行时不能更改,并且需要完全重新启动组(由具有组\u复制\u引导\u组=打开)以使值更改生效。如果该组为此系统变量设置了一个值,并且加入成员为该系统变量设置了不同的值,则在将该值更改为匹配之前,加入成员无法加入该组。如果组成员为此系统变量设置了值,且加入成员不支持该系统变量,则无法加入该组。

    在MySQL 8.0.16中,您可以使用组复制切换到单一主模式()组复制切换到多主模式()函数在组仍在运行时更改此系统变量的值。有关更多信息,请参阅第18.5.1.2节,“改变团队模式”.

    组复制单主模式指示组自动选择一台服务器作为处理读/写工作负载的服务器。此服务器是主服务器,其他所有服务器都是辅助服务器。

  • 组复制ssl模式

    命令行格式 --组复制ssl模式=值
    系统变量 [group_replication_ssl_mode](group replication options.html#sysvar_group_replication_ssl_mode)
    范围 全球的
    动态
    集_VAR提示适用
    类型 列举
    默认值 残废
    有效值 残废

    必修的

    核实

    验证您的身份

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

    组复制ssl模式设置组复制成员之间的组通信连接的安全状态。可能的值如下所示:

    残废

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

    必修的

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

    验证_加利福尼亚州

    喜欢必修的,但还要根据配置的证书颁发机构(CA)证书验证服务器TLS证书。

    验证_身份

    喜欢核实,但还要验证服务器证书是否与尝试连接的主机匹配。

    看见第18.6.2节,“使用安全套接字层(SSL)保护组通信连接”有关为组通信配置SSL的信息。

  • 组_复制_启动_启动

    命令行格式 --组复制在启动时启动[={OFF | on}]
    系统变量 [group_replication_start_on_boot](group replication options.html#sysvar_group_replication_start_on_boot)
    范围 全球的
    动态
    集_VAR提示适用
    类型 布尔值
    默认值 在…上

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

    组_复制_启动_启动指定服务器是否应自动启动组复制(在…上)还是不行()在服务器启动期间。当您将此选项设置为在…上,组复制在远程克隆操作用于分布式恢复后自动重新启动。

    要在服务器启动期间自动启动组复制,分布式恢复的用户凭据必须使用将复制源更改为 | 将主机更改为陈述如果您希望在上指定用户凭据启动组复制语句只在内存中存储用户凭据,请确保组_复制_启动_启动即将.

  • 组\u复制\u tls\u源

    命令行格式 --组复制tls源=值
    介绍 8.0.21
    系统变量 [group_replication_tls_source](group replication options.html#sysvar_group_replication_tls_source)
    范围 全球的
    动态
    集_VAR提示适用
    类型 列举
    默认值 梅因
    有效值 梅因

    mysql_管理员

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

    组\u复制\u tls\u源指定用于组复制的TLS材质的源。

  • 组\复制\事务\大小\限制

    命令行格式 --组复制事务大小限制=#
    系统变量 [group_replication_transaction_size_limit](group replication options.html#sysvar_group_replication_transaction_size_limit)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 150000000
    最小值 0
    最大值 2147483647
    单元 字节

    此系统变量在所有组成员上的值应相同。此系统变量的值可以在组复制运行时更改。该更改将立即在该组成员上生效,并从该成员上开始的下一个事务开始应用。在此过程中,允许系统变量的值在组成员之间存在差异,但某些事务可能会被拒绝。

    组\复制\事务\大小\限制配置复制组接受的最大事务大小(字节)。大于此大小的事务将由接收成员回滚,并且不会广播给组。大型事务可能会导致复制组在内存分配方面出现问题,这可能会导致系统速度减慢,或者在网络带宽消耗方面出现问题,这可能会导致成员因忙于处理大型事务而被怀疑失败。

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

  • 组\复制\无法访问\多数\超时

    命令行格式 --组复制不可访问多数超时=#
    系统变量 [group_replication_unreachable_majority_timeout](group replication options.html#sysvar_group_replication_unreachable_majority_timeout)
    范围 全球的
    动态
    集_VAR提示适用
    类型 整数
    默认值 0
    最小值 0
    最大值 31536000
    单元

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

    group_replication_unreachable_majority_timeout指定遭受网络分区且无法连接到多数的成员在离开组之前等待的秒数。在一组 5 个服务器(S1,S2,S3,S4,S5)中,如果(S1,S2)和(S3,S4,S5)之间存在断开连接,则存在网络分区。第一组(S1,S2)现在是少数,因为它不能联系超过一​​半的组。当多数组(S3、S4、S5)保持运行时,少数组会等待指定的时间以重新连接网络。有关此方案的详细说明,请参阅第 18.7.8 节,“处理网络分区和仲裁丢失”.

    默认,group_replication_unreachable_majority_timeout设置为 0,这意味着由于网络分区而发现自己处于少数群体的成员永远等待离开该组。如果设置了超时时间,当指定的时间过去后,少数派处理的所有待处理事务都会回滚,并且少数派分区中的服务器会移动到错误状态。如果会员有group_replication_autorejoin_tries系统变量设置为指定自动重新加入尝试的次数,它会在超级只读模式下继续进行指定次数的重新加入组的尝试。如果该成员没有指定任何自动重新加入尝试,或者如果它已经用尽了指定的尝试次数,它将遵循系统变量指定的操作group_replication_exit_state_action.

    警告

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

    有关使用此选项的更多信息,请参阅第 18.7.7.2 节,“无法到达的多数超时”.

  • group_replication_view_change_uuid

    命令行格式 --group-replication-view-change-uuid=值
    介绍 8.0.26
    系统变量 [group_replication_view_change_uuid](group-replication-options.html#sysvar_group_replication_view_change_uuid)
    范围 全球的
    动态的 是的
    SET_VAR提示适用
    类型 细绳
    默认值 自动的

    此系统变量是组范围的配置设置。它必须在所有组成员上具有相同的值,在组复制运行时无法更改,并且需要完全重新启动组(由具有group_replication_bootstrap_group=ON) 以使值更改生效。如果组为此系统变量设置了值,而加入成员为系统变量设置了不同的值,则加入成员无法加入组,直到值更改为匹配。如果组成员为此系统变量设置了值,而加入成员不支持该系统变量,则无法加入组。

    group_replication_view_change_uuid指定一个替代 UUID 用作 GTID 中标识符的 UUID 部分,用于组生成的视图更改事件。替代 UUID 使这些内部生成的事务易于与组从客户端接收的事务区分开来。如果您的设置允许组之间的故障转移,并且您需要识别和丢弃特定于备份组的事务,这将很有用。此系统变量的默认值为自动的,这意味着视图更改事件的 GTID 使用由group_replication_group_name系统变量,就像来自客户端的交易一样。没有此系统变量的版本中的组成员被视为具有该值自动的.

    备用 UUID 必须不同于由group_replication_group_name系统变量,它必须不同于任何组成员的服务器 UUID。它还必须不同于 GTID 中使用的任何 UUID,这些 UUID 应用于此拓扑中任何位置的复制通道上的匿名事务,使用ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS的选项将复制源更改为陈述。

# 组复制状态变量

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