组复制组成员可以使用 IPv6 地址作为 IPv4 地址的替代方案,以便在组内进行通信。要使用 IPv6 地址,服务器主机上的操作系统和 MySQL 服务器实例都必须配置为支持 IPv6。有关设置服务器实例的 IPv6 支持的说明,请参阅 第 7.1.13 节“IPv6 支持”。
IPv6 地址或解析为 IPv6 地址的主机名可以指定为成员在 group_replication_local_address
选项中提供的网络地址,用于来自其他成员的连接。当与端口号一起指定时,IPv6 地址必须在方括号中指定,例如
group_replication_local_address= "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061"
group_replication_local_address
中指定的网络地址或主机名被组复制用作复制组中组成员的唯一标识符。如果指定为主机名的组复制本地地址解析为 IPv4 和 IPv6 地址,则始终使用 IPv4 地址进行组复制连接。指定为组复制本地地址的地址或主机名与 MySQL 服务器 SQL 协议主机和端口不同,并且未在服务器实例的 bind_address
系统变量中指定。出于组复制的 IP 地址权限的目的(请参阅 第 20.6.4 节“组复制 IP 地址权限”),您为 group_replication_local_address
中的每个组成员指定的地址必须添加到复制组中其他服务器上的 group_replication_ip_allowlist
系统变量的列表中。
复制组可以包含一组成员的组合,这些成员将 IPv6 地址作为其组复制本地地址,以及将 IPv4 地址作为其组复制本地地址的成员。当服务器加入这样的混合组时,它必须使用种子成员在 group_replication_group_seeds
选项中公布的协议(无论是 IPv4 还是 IPv6)与种子成员进行初始联系。如果在加入成员具有 IPv4 组复制本地地址时,group_replication_group_seeds
选项中列出的任何组种子成员都使用 IPv6 地址,反之亦然,则您还必须为加入成员设置并允许使用所需协议的备用地址(或解析为该协议地址的主机名)。如果加入成员没有适当协议的允许地址,则其连接尝试将被拒绝。备用地址或主机名只需要添加到复制组中其他服务器上的 group_replication_ip_allowlist
系统变量中,而不需要添加到加入成员的 group_replication_local_address
值中(该值只能包含一个地址)。
例如,服务器 A 是组的种子成员,并且具有以下组复制配置设置,以便它在 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 是组的加入成员,并且具有以下组复制配置设置,以便它具有 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 成功加入组,其 IPv4 组复制本地地址和备用 IPv6 地址都必须列在服务器 A 的允许列表中,如下例所示
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"
作为组复制 IP 地址权限的最佳实践,服务器 B(以及所有其他组成员)应具有与服务器 A 相同的允许列表,除非安全要求另有规定。
如果复制组的任何或所有成员使用不支持将 IPv6 地址用于组复制的旧版 MySQL 服务器版本,则成员不能使用 IPv6 地址(或解析为 IPv6 地址的主机名)作为其组复制本地地址参与组。在以下两种情况下都会出现这种情况:至少一个现有成员使用 IPv6 地址,而不支持此地址的新成员尝试加入;新成员尝试使用 IPv6 地址加入,但组中包含至少一个不支持此地址的成员。在这两种情况下,新成员都无法加入。要使加入成员提供用于组通信的 IPv4 地址,可以将 group_replication_local_address
的值更改为 IPv4 地址,或者配置 DNS 以将加入成员的现有主机名解析为 IPv4 地址。将每个组成员升级到支持组复制的 IPv6 的 MySQL 服务器版本后,可以将每个成员的 group_replication_local_address
值更改为 IPv6 地址,或者配置 DNS 以提供 IPv6 地址。更改 group_replication_local_address
的值仅在停止并重新启动组复制时才会生效。
IPv6 地址也可以用作分布式恢复端点,可以使用 group_replication_advertise_recovery_endpoints
系统变量指定。此列表中使用的地址适用相同的规则。请参阅第 20.5.4.1 节 “分布式恢复的连接”。