Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Support For IPv6 And For Mixed IPv6 And IPv4 Groups

20.5.5 支持 IPv6 和混合 IPv6 和 IPv4 组

群组复制成员可以使用 IPv6 地址作为与组内通信的替代方案。要使用 IPv6 地址,服务器主机操作系统和 MySQL 服务实例都必须配置支持 IPv6。关于设置服务器实例的 IPv6 支持,请参见第7.1.13节,“IPv6 支持”

IPv6 地址或解析到它们的主机名可以作为成员在group_replication_local_address选项中指定的网络地址,该选项用于从其他成员连接。指定端口号时,IPv6 地址必须在方括号中指定,例如:

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

Group Replication 中,指定在group_replication_local_address 中的网络地址或主机名将被用作群组成员在复制组中的唯一标识符。如果指定的主机名作为 Group Replication 本地地址解析到 IPv4 和 IPv6 地址,Group Replication 连接总是使用 IPv4 地址。Group Replication 本地地址指定的地址或主机名不同于 MySQL 服务器 SQL 协议主机和端口,并且不在bind_address 系统变量中指定。为 Group Replication 的 IP 地址权限(见第20.6.4节,“Group Replication IP Address Permissions”),在每个群组成员中指定的地址必须添加到group_replication_ip_allowlist 系统变量中其他服务器中的列表中。

复制组可以包含既使用 IPv6 地址作为 Group Replication 本地地址的成员,又使用 IPv4 地址的成员。当服务器加入这样一个混合组时,它必须使用 seed 成员在group_replication_group_seeds选项中所advertised的协议(是否为 IPv4 或 IPv6)与 seed 成员进行初始联系。如果复制组中的某些 seed 成员在group_replication_group_seeds选项中使用 IPv6 地址,而加入的成员有 IPv4 Group Replication 本地地址,或者反之,你必须为加入的成员设置和允许一个备用地址(或一个解析到该协议地址的主机名)。如果加入的成员没有适当协议的允许地址,它的连接尝试将被拒绝。备用地址或主机名只需要在复制组中的其他服务器中添加到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是群组的加入成员,并且具有以下配置设置,以便在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成功加入群组,需要将其IPv4 Group Replication本地地址和备用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"

作为Group Replication IP地址权限的最佳实践,服务器B(及其它所有群组成员)应该具有与服务器A相同的白名单,除非安全要求另有规定。

如果复制组中的某个或所有成员使用的是不支持 IPv6 地址的 MySQL 服务器版本,那么该成员不能使用 IPv6 地址(或解析到 IPv6 地址的主机名)作为 Group Replication 本地地址。这适用于以下情况:至少有一个现有成员使用 IPv6 地址,而新的成员不支持这项功能尝试加入;或者,新的成员尝试使用 IPv6 地址,但组中至少有一个成员不支持这项功能。在每种情况下,新成员不能加入。要使加入的成员在群体通信中出现 IPv4 地址,可以将group_replication_local_address值设置为 IPv4 地址,或者配置 DNS 将加入成员的主机名解析到 IPv4 地址。等到您将每个组成员升级到支持 IPv6 的 MySQL 服务器版本后,可以将group_replication_local_address值设置为 IPv6 地址,或者配置 DNS 提供 IPv6 地址。修改group_replication_local_address值只在您停止并重新启动 Group Replication 时生效。

IPv6 地址也可以用作分布式恢复端点,可以使用group_replication_advertise_recovery_endpoints系统变量指定。用于该列表的地址遵循相同的规则。请参阅第20.5.4.1节,“分布式恢复连接”