MySQL8 中文参考(八十二)(5)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: MySQL8 中文参考(八十二)

MySQL8 中文参考(八十二)(4)https://developer.aliyun.com/article/1565904


20.9 组复制变量

原文:dev.mysql.com/doc/refman/8.0/en/group-replication-options.html

20.9.1 组复制系统变量

20.9.2 组复制状态变量

接下来的两个部分包含了关于 MySQL 服务器系统和服务器状态变量的信息,这些变量是特定于组复制插件的。

表 20.4 组复制变量和选项摘要

名称 命令行 选项文件 系统变量 状态变量 变量范围 动态
group_replication_advertise_recovery_endpoints 全局
group_replication_allow_local_lower_version_join 全局
group_replication_auto_increment_increment 全局
group_replication_autorejoin_tries 全局
group_replication_bootstrap_group 全局
group_replication_clone_threshold 全局
group_replication_communication_debug_options 全局
group_replication_communication_max_message_size 全局
group_replication_communication_stack 全局
group_replication_components_stop_timeout 全局
group_replication_compression_threshold 全局
group_replication_consistency 两者
group_replication_enforce_update_everywhere_checks 全局
group_replication_exit_state_action 全局
group_replication_flow_control_applier_threshold 全局
group_replication_flow_control_certifier_threshold 全局
group_replication_flow_control_hold_percent 全局
group_replication_flow_control_max_quota 全局
group_replication_flow_control_member_quota_percent 全局
group_replication_flow_control_min_quota 全局
group_replication_flow_control_min_recovery_quota 全局
group_replication_flow_control_mode 全局
group_replication_flow_control_period 全局
group_replication_flow_control_release_percent 全局
group_replication_force_members 全局
group_replication_group_name 全局
group_replication_group_seeds 全局
group_replication_gtid_assignment_block_size 全局
group_replication_ip_allowlist 全局
group_replication_ip_whitelist 全局
group_replication_local_address 全局
group_replication_member_expel_timeout 全局
group_replication_member_weight 全局
group_replication_message_cache_size 全局
group_replication_paxos_single_leader 全局
group_replication_poll_spin_loops 全局
group_replication_primary_member 全局
group_replication_recovery_complete_at 全局
group_replication_recovery_get_public_key 全局
group_replication_recovery_public_key_path 全局
group_replication_recovery_reconnect_interval ��局
group_replication_recovery_retry_count 全局
group_replication_recovery_ssl_ca 全局
group_replication_recovery_ssl_capath 全局
group_replication_recovery_ssl_cert 全局
group_replication_recovery_ssl_cipher 全局
group_replication_recovery_ssl_crl 全局
group_replication_recovery_ssl_crlpath 全局
group_replication_recovery_ssl_key 全局
group_replication_recovery_ssl_verify_server_cert 全局
group_replication_recovery_tls_ciphersuites 全局
group_replication_recovery_tls_version 全局
group_replication_recovery_use_ssl 全局
group_replication_single_primary_mode 全局
group_replication_ssl_mode 全局
group_replication_start_on_boot 全局
group_replication_transaction_size_limit 全局
group_replication_unreachable_majority_timeout 全局
group_replication_view_change_uuid 全局
名称 命令行 选项文件 系统变量 状态变量 变量范围 动态

20.9.1 Group Replication 系统变量

原文:dev.mysql.com/doc/refman/8.0/en/group-replication-system-variables.html

本节列出了特定于 Group Replication 插件的系统变量。

每个 Group Replication 系统变量的名称都以group_replication_为前缀。

注意

InnoDB Cluster 使用 Group Replication,但 Group Replication 系统变量的默认值可能与本节中记录的默认值不同。例如,在 InnoDB Cluster 中,group_replication_communication_stack的默认值是MYSQL,而不是默认 Group Replication 实现的XCOM

更多信息,请参阅 MySQL InnoDB Cluster。

一些 Group Replication 组成员的系统变量,包括一些 Group Replication 特定的系统变量和一些通用的系统变量,都是组范围的配置设置。这些系统变量在所有组成员上必须具有相同的值,并且需要对组进行完全重启(由具有group_replication_bootstrap_group=ON的服务器引导)才能使值更改生效。有关在所有成员已停止的组中重新启动的说明,请参阅 Section 20.5.2, “Restarting a Group”。

如果运行中的组对于组范围的配置设置有一个值设置,而加入的成员对于该系统变量有不同的值设置,则加入的成员在值匹配之前无法加入该组。如果组对于这些系统变量中的一个设置了一个值,而加入的成员不支持该系统变量,则无法加入该组。

以下系统变量是组范围的配置设置:

  • group_replication_single_primary_mode
  • group_replication_enforce_update_everywhere_checks
  • group_replication_gtid_assignment_block_size
  • group_replication_view_change_uuid
  • group_replication_paxos_single_leader
  • group_replication_communication_stack(这是一个特殊情况,不受 Group Replication 自身检查的限制;有关详细信息,请参阅系统变量描述)
  • default_table_encryption
  • lower_case_table_names
  • transaction_write_set_extraction(从 MySQL 8.0.26 开始已弃用)

在 Group Replication 运行时无法通过通常的方法更改组范围的配置设置。然而,从 MySQL 8.0.16 开始,您可以使用group_replication_switch_to_single_primary_mode()group_replication_switch_to_multi_primary_mode()函数在组仍在运行时更改group_replication_single_primary_modegroup_replication_enforce_update_everywhere_checks的值。更多信息,请参阅 Section 20.5.1.2, “Changing the Group Mode”。

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

  • group_replication_auto_increment_increment
  • group_replication_communication_max_message_size
  • group_replication_compression_threshold
  • group_replication_message_cache_size
  • group_replication_transaction_size_limit

大多数 Group Replication 的系统变量被描述为动态的,它们的值可以在服务器运行时更改。然而,在大多数情况下,更改只有在您使用STOP GROUP_REPLICATION语句停止并重新启动组复制后才会生效,随后是一个START GROUP_REPLICATION语句。以下系统变量的更改在不停止和重新启动 Group Replication 的情况下生效:

  • group_replication_advertise_recovery_endpoints
  • group_replication_autorejoin_tries
  • group_replication_consistency
  • group_replication_exit_state_action
  • group_replication_flow_control_applier_threshold
  • group_replication_flow_control_certifier_threshold
  • group_replication_flow_control_hold_percent
  • group_replication_flow_control_max_quota
  • group_replication_flow_control_member_quota_percent
  • group_replication_flow_control_min_quota
  • group_replication_flow_control_min_recovery_quota
  • group_replication_flow_control_mode
  • group_replication_flow_control_period
  • group_replication_flow_control_release_percent
  • group_replication_force_members
  • group_replication_ip_allowlist
  • group_replication_ip_whitelist
  • group_replication_member_expel_timeout
  • group_replication_member_weight
  • group_replication_transaction_size_limit
  • group_replication_unreachable_majority_timeout

当您更改任何 Group Replication 系统变量的值时,请记住,如果在每个成员同时通过 STOP GROUP_REPLICATION 语句或系统关闭停止 Group Replication 的某一点,那么必须像第一次启动一样通过引导重新启动组。有关安全执行此操作的说明,请参见  Section 20.5.2,  “重新启动组”。对于整个组的配置设置,这是必需的,但如果您正在更改其他设置,请尽量确保至少有一个成员始终在运行。

重要

  • 如果将一些 Group Replication 的系统变量作为命令行参数传递给服务器,则在服务器启动期间,一些 Group Replication 的系统变量在启动时并未完全验证。这些系统变量包括 group_replication_group_namegroup_replication_single_primary_modegroup_replication_force_members、SSL 变量和流量控制系统变量。它们只在服务器启动后完全验证。
  • 指定组成员的 IP 地址或主机名的 Group Replication 系统变量在发出 START GROUP_REPLICATION 语句之前不会被验证。直到那时,Group Replication 的组通信系统 (GCS) 才可用于验证这些值。

专用于 Group Replication 插件的系统变量如下:

  • group_replication_advertise_recovery_endpoints
命令行格式 --group-replication-advertise-recovery-endpoints=value
引入版本 8.0.21
系统变量 group_replication_advertise_recovery_endpoints
作用范围 全局
动态
SET_VAR 提示适用
类型 字符串
默认值 DEFAULT
  • 此系统变量的值可以在 Group Replication 运行时更改。更改立即在成员上生效。但是,已经接收到系统变量先前值的加入成员将继续使用该值。只有在值更改后加入的成员才会接收新值。group_replication_advertise_recovery_endpoints指定加入成员如何为分布式恢复的状态传输与现有成员建立连接。该连接用于远程克隆操作和从捐赠者的二进制日志进行状态传输。值为DEFAULT,即默认设置,表示加入成员使用现有成员的标准 SQL 客户端连接,如 MySQL Server 的hostnameport系统变量所指定。如果report_port系统变量指定了替代端口号,则使用该端口号。性能模式表replication_group_membersMEMBER_HOSTMEMBER_PORT字段中显示此连接的地址和端口号。这是截至 MySQL 8.0.20 版本的组成员的行为。您可以指定一个或多个分布式恢复端点,而不是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 地址和端口作为分布式恢复端点,以及加入成员如何使用它们的详细信息,请参见 Section 20.5.4.1.1,“选择分布式恢复端点的地址”。要求的摘要如下:
  • IP 地址不必为 MySQL Server 配置,但必须分配给服务器。
  • 端口必须使用portreport_portadmin_port系统变量为 MySQL Server 配置。
  • 如果使用admin_port,则需要为分布式恢复的复制用户授予适当的权限。
  • IP 地址不需要添加到由group_replication_ip_allowlistgroup_replication_ip_whitelist系统变量指定的组复制允许列表中。
  • 连接的 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 时更改,但更改仅在您停止并重新启动组成员上的 Group Replication 后生效。group_replication_allow_local_lower_version_join允许当前服务器即使运行低于组的 MySQL 服务器版本也加入组。默认设置为OFF,如果运行低于现有组成员的版本,则不允许服务器加入复制组。此标准策略确保组的所有成员能够交换消息并应用事务。请注意,运行  MySQL 8.0.17 或更高版本的成员在检查兼容性时考虑发布的补丁版本。运行 MySQL 8.0.16 或更低版本,或 MySQL 5.7  的成员只考虑主要版本。仅在以下情况下将group_replication_allow_local_lower_version_join设置为ON
  • 必须在紧急情况下将服务器添加到组中以提高组的容错能力,且只有旧版本可用。
  • 您希望为一个或多个复制组成员回滚升级,而无需关闭整个组并重新引导。
  • 警告
    将此选项设置为ON并不会使新成员与组兼容,并允许其加入组而没有任何防范措施防止现有成员的不兼容行为。为确保新成员的正确操作,请采取以下两项预防措施:
  1. 在运行较低版本的服务器加入组之前,请停止该服务器上的所有写操作。
  2. 从运行较低版本的服务器加入组的那一点开始,在组中的其他服务器上停止所有写操作。
  • 如果没有这些预防措施,运行较低版本的服务器很可能会遇到困难,并以错误终止。
  • group_replication_auto_increment_increment
命令行格式 --group-replication-auto-increment-increment=#
系统变量 group_replication_auto_increment_increment
范围 全局
动态
SET_VAR提示适用
类型 整数
默认值 7
最小值 1
最大值 65535
  • 所有组成员的此系统变量应具有相同的值。在  Group Replication 运行时,您不能更改此系统变量的值。您必须停止 Group  Replication,更改系统变量的值,然后在每个组成员上重新启动 Group  Replication。在此过程中,系统变量的值允许在组成员之间有所不同,但是一些组成员上的事务可能会被回滚。
    group_replication_auto_increment_increment确定在此服务器实例上执行的事务的自增列的连续值之间的间隔。增加一个间隔可以避免在组成员上写入时选择重复的自增值,这会导致事务回滚。默认值  7 代表可用值的数量和复制组的允许最大大小(9 个成员)之间的平衡。如果您的组成员更多或更少,您可以在启动 Group Replication  之前将此系统变量设置为匹配预期的组成员数量。
    重要
    group_replication_single_primary_modeON时,设置group_replication_auto_increment_increment不起作用。
    当在服务器实例上启动组复制时,服务器系统变量auto_increment_increment的值将更改为此值,服务器系统变量auto_increment_offset的值将更改为服务器 ID。当停止组复制时,这些更改将被还原。仅当auto_increment_incrementauto_increment_offset的默认值均为 1 时,才会进行这些更改和还原。如果它们的值已经从默认值修改过,则组复制不会更改它们。在 MySQL 8.0 中,当组复制处于单主模式时,系统变量也不会被修改,只有一个服务器进行写入。
  • group_replication_autorejoin_tries
命令行格式 --group-replication-autorejoin-tries=#
引入版本 8.0.16
系统变量 group_replication_autorejoin_tries
作用范围 全局
动态
SET_VAR 提示适用
类型 整数
默认值(≥ 8.0.21) 3
默认值(≤ 8.0.20) 0
最小值 0
最大值 2016
  • 可以在组复制运行时更改此系统变量的值,并且更改会立即生效。当发生需要该行为的问题时,会读取系统变量的当前值。
    group_replication_autorejoin_tries指定成员在被驱逐或在达到group_replication_unreachable_majority_timeout设置之前无法联系到大多数组时,尝试自动重新加入组的次数。当成员被驱逐或无法联系到大多数组时,它会尝试重新加入(使用当前插件选项值),然后继续进行进一步的自动重新加入尝试,直到达到指定的尝试次数。在一次不成功的自动重新加入尝试后,成员会在下一次尝试之前等待  5 分钟。如果在没有成员重新加入或停止的情况下耗尽了指定的尝试次数,则成员将执行由group_replication_exit_state_action系统变量指定的操作。
    在 MySQL 8.0.20 版本之前,默认设置为 0,表示成员不会尝试自动重新加入。从 MySQL 8.0.21 开始,默认设置为 3,表示成员会自动尝试重新加入群组,每次间隔 5 分钟,最多可以指定 2016 次尝试。
    在自动重新加入尝试期间和之间,成员保持在超级只读模式,并且不接受写入,但仍然可以在成员上进行读取,随着时间的推移,过时读取的可能性会增加。如果无法容忍任何时间段内可能出现的过时读取,请将 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=#
引入版本 8.0.17
系统变量 group_replication_clone_threshold
范围 全局
动态
SET_VAR 提示适用
类型 整数
默认值 9223372036854775807
最小值 1
最大值 9223372036854775807
单位 事务
  • 在 Group Replication 运行时可以更改此系统变量的值,但更改只有在停止并重新启动组成员的 Group Replication 后才会生效。
    group_replication_clone_threshold  指定现有成员(捐赠者)和加入成员(接收者)之间的事务间隔,触发在分布式恢复过程中使用远程克隆操作将状态传输给加入成员。如果加入成员和合适的捐赠者之间的事务间隔超过阈值,则  Group Replication 将开始使用远程克隆操作进行分布式恢复。如果事务间隔低于阈值,或者远程克隆操作在技术上不可行,则 Group  Replication 直接从捐赠者的二进制日志进行状态传输。
    警告
    在活动组中不要使用低设置的 group_replication_clone_threshold。如果在远程克隆操作正在进行时组中发生超过阈值的事务数量,加入成员在重新启动后会再次触发远程克隆操作,并可能无限继续。为避免这种情况,请确保将阈值设置为预期在远程克隆操作所需时间内组中可能发生的事务数量更高的数字。
    要使用此功能,捐赠者和加入成员必须事先设置为支持克隆。有关说明,请参见 Section 20.5.4.2, “分布式恢复的克隆”。当执行远程克隆操作时,Group Replication 会为您管理它,包括所需的服务器重新启动,前提是设置了 group_replication_start_on_boot=ON。如果没有设置,则必须手动重新启动服务器。远程克隆操作会替换加入成员上的现有数据字典,但如果加入成员有其他组成员上不存在的额外事务,则 Group Replication 会进行检查并不继续进行,因为这些事务将被克隆操作擦除。
    默认设置(即  GTID 中事务的最大允许序列号)意味着几乎总是尝试从捐赠者的二进制日志进行状态传输,而不是克隆。但是,请注意,无论您的阈值如何,Group  Replication  始终尝试执行克隆操作,如果从捐赠者的二进制日志中无法进行状态传输,例如因为加入成员所需的事务在任何现有组成员的二进制日志中都不可用。如果您不希望在复制组中完全使用克隆,请不要在成员上安装克隆插件。
  • 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

MySQL8 中文参考(八十二)(6)https://developer.aliyun.com/article/1565906



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
关系型数据库 MySQL Unix
MySQL8 中文参考(二十三)(3)
MySQL8 中文参考(二十三)
62 4
|
6月前
|
存储 缓存 关系型数据库
MySQL8 中文参考(二十一)(5)
MySQL8 中文参考(二十一)
88 3
|
6月前
|
存储 监控 Java
MySQL8 中文参考(二十一)(4)
MySQL8 中文参考(二十一)
152 3
|
6月前
|
存储 安全 关系型数据库
MySQL8 中文参考(二十一)(1)
MySQL8 中文参考(二十一)
55 3
|
6月前
|
存储 关系型数据库 MySQL
MySQL8 中文参考(二十一)(3)
MySQL8 中文参考(二十一)
78 2
|
6月前
|
关系型数据库 MySQL Unix
MySQL8 中文参考(二十一)(2)
MySQL8 中文参考(二十一)
81 2
|
6月前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL8 中文参考(二十五)(5)
MySQL8 中文参考(二十五)
52 2
|
6月前
|
存储 关系型数据库 MySQL
MySQL8 中文参考(二十四)(1)
MySQL8 中文参考(二十四)
60 2
|
6月前
|
NoSQL 关系型数据库 MySQL
MySQL8 中文参考(二十三)(2)
MySQL8 中文参考(二十三)
64 2
|
6月前
|
存储 关系型数据库 MySQL
MySQL8 中文参考(二十三)(1)
MySQL8 中文参考(二十三)
38 2