从 MySQL 8.0.14 开始,组复制组成员可以使用 IPv6 地址作为通信的替代 IPv4 地址。在使用 IPv6 地址之前,服务器主机的操作系统和 MySQL 服务器实例都必须配置为支持 IPv6。有关设置服务器实例的 IPv6 支持的说明,请参阅 第 7.1.13 节,“IPv6 支持”。
IPv6 地址或解析为它们的主机名可以指定为组成员提供的网络地址,以便与其他成员连接。在指定端口号时,IPv6 地址必须在方括号中指定,例如:
group_replication_local_address= "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061"
在 group_replication_local_address
选项中指定的网络地址或主机名用于标识组成员在复制组中的唯一标识符。如果主机名指定为组复制本地地址的服务器实例解析为 IPv4 和 IPv6 地址,Group Replication 将始终使用 IPv4 地址进行连接。指定的组复制本地地址与 MySQL 服务器 SQL 协议主机和端口不同,也不在 bind_address
系统变量中指定。有关 Group Replication IP 地址权限的详细信息,请参阅 第 20.6.4 节,“Group Replication IP 地址权限”),在 group_replication_local_address
中指定的地址必须添加到其他服务器的 group_replication_ip_allowlist
系统变量中。
复制组可以包含混合成员,这些成员可以使用 IPv6 地址或 IPv4 地址作为组复制本地地址。当服务器加入这种混合组时,它必须使用种子成员在 group_replication_group_seeds
选项中宣传的协议(无论是 IPv4 还是 IPv6)进行初始联系。如果种子成员的任何一个在 group_replication_group_seeds
选项中列出的是 IPv6 地址,而加入成员的组复制本地地址是 IPv4 地址,或者反之亦然,那么您还需要设置和允许加入成员的替代地址,以便使用所需的协议(或解析为该协议的主机名)。如果加入成员没有允许的地址,连接尝试将被拒绝。替代地址或主机名只需要添加到其他服务器的 group_replication_ip_allowlist
系统变量中,而不需要添加到加入成员的 group_replication_local_address
值中(该值只能包含单个地址)。
例如,服务器 A 是组的种子成员,具有以下 Group Replication 配置设置,以便在 group_replication_group_seeds
选项中宣传 IPv6 地址:
group_replication_bootstrap_group=on
group_replication_local_address= "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061"
group_replication_group_seeds= "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061"
服务器 B 是加入组的成员,具有以下 Group Replication 配置设置,以便具有 IPv4 组复制本地地址:
group_replication_bootstrap_group=off
group_replication_local_address= "203.0.113.21:33061"
group_replication_group_seeds= "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061"
服务器 B 还具有替代 IPv6 地址 2001:db8:8b0:40:3d9c:cc43:e006:19e8
。为了让服务器 B 成功加入组,服务器 B 的 IPv4 组复制本地地址和替代 IPv6 地址都必须列出在服务器 A 的 allowlist 中,例如:
group_replication_ip_allowlist=
"203.0.113.0/24,2001:db8:85a3:8d3:1319:8a2e:370:7348,
2001:db8:8b0:40:3d9c:cc43:e006:19e8"
作为 Group Replication IP 地址权限的最佳实践,服务器 B(和所有其他组成员)应该具有与服务器 A 相同的 allowlist,除非安全要求需要其他设置。
如果复制组中的任何或所有成员使用的 MySQL Server 版本不支持使用 IPv6 地址进行组复制,则不能使用 IPv6 地址(或解析为 IPv6 地址的主机名)作为组复制的本地地址加入组中。这适用于至少一个现有成员使用 IPv6 地址的情况,以及新成员尝试加入但不支持 IPv6 地址的情况。在每种情况下,新成员都无法加入。要使加入的成员呈现 IPv4 地址用于组通信,可以将 group_replication_local_address
的值更改为 IPv4 地址,或者配置 DNS 以将加入的成员的现有主机名解析为 IPv4 地址。在您将所有组成员升级到支持 IPv6 的 MySQL Server 版本后,可以将每个成员的 group_replication_local_address
值更改为 IPv6 地址,或者配置 DNS 以呈现 IPv6 地址。更改 group_replication_local_address
的值仅在停止并重新启动组复制时生效。
从 MySQL 8.0.21 开始,IPv6 地址也可以用作分布式恢复端点,可以使用 group_replication_advertise_recovery_endpoints
系统变量指定。同样的规则也适用于在该列表中使用的地址。请参阅 第 20.5.4.1 节,“分布式恢复连接”。