### 18.5.5对IPv6以及IPv6和IPv4混合组的支持 [](<>)[](<>) 从MySQL 8.0.14开始,组复制组成员可以使用IPv6地址作为组内通信的IPv4地址的替代方案。要使用IPv6地址,服务器主机上的操作系统和MySQL服务器实例都必须配置为支持IPv6。有关为服务器实例设置IPv6支持的说明,请参阅[第5.1.13节,“IPv6支持”](ipv6-support.html). IPv6地址或解析为它们的主机名可以指定为成员在中提供的网络地址[`组\复制\本地\地址`](group-replication-options.html#sysvar_group_replication_local_address)来自其他成员的连接选项。使用端口号指定时,必须在方括号中指定IPv6地址,例如: ``` group_replication_local_address= "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061" ``` 中指定的网络地址或主机名[`组\复制\本地\地址`](group-replication-options.html#sysvar_group_replication_local_address)由组复制用作复制组中的组成员的唯一标识符。如果指定为服务器实例的组复制本地地址的主机名解析为IPv4和IPv6地址,则IPv4地址始终用于组复制连接。指定为组复制本地地址的地址或主机名与MySQL server SQL协议主机和端口不同,并且未在中指定[`绑定地址`](server-system-variables.html#sysvar_bind_address)服务器实例的系统变量。用于组复制的IP地址权限(请参阅[第18.6.4节,“组复制IP地址权限”](group-replication-ip-address-permissions.html)),为中的每个组成员指定的地址[`组\复制\本地\地址`](group-replication-options.html#sysvar_group_replication_local_address)必须添加到[`组复制ip许可列表`](group-replication-options.html#sysvar_group_replication_ip_allowlist)(来自MySQL 8.0.22)或[`组\复制\ ip\白名单`](group-replication-options.html#sysvar_group_replication_ip_whitelist)复制组中其他服务器上的系统变量。 复制组可以包含将IPv6地址表示为其组复制本地地址的成员和表示IPv4地址的成员的组合。当服务器加入这样一个混合组时,它必须使用种子成员在服务器中发布的协议与种子成员进行初始联系[`组复制组种子`](group-replication-options.html#sysvar_group_replication_group_seeds)选项,无论是IPv4还是IPv6。如果该组的任何种子成员列在[`组复制组种子`](group-replication-options.html#sysvar_group_replication_group_seeds)带有IPv6地址的选项当加入成员具有IPv4组复制本地地址时,或者相反,您还必须为加入成员设置并允许所需协议的替代地址(或解析为该协议地址的主机名)。如果加入成员没有相应协议的允许地址,其连接尝试将被拒绝。只需将替代地址或主机名添加到[`组复制ip许可列表`](group-replication-options.html#sysvar_group_replication_ip_allowlist)(来自MySQL 8.0.22)或[`组\复制\ ip\白名单`](group-replication-options.html#sysvar_group_replication_ip_whitelist)复制组中其他服务器上的系统变量,而不是[`组\复制\本地\地址`](group-replication-options.html#sysvar_group_replication_local_address)加入成员的值(只能包含一个地址)。 例如,服务器A是组的种子成员,并且具有以下组复制配置设置,因此它在组中公布IPv6地址[`组复制组种子`](group-replication-options.html#sysvar_group_replication_group_seeds)选项: ``` 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成功加入组,必须在服务器A的allowlist中列出其IPv4组复制本地地址和替代IPv6地址,如下例所示: ``` 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相同的allowlist,除非安全要求另有要求。 如果复制组的任何或所有成员正在使用不支持使用IPv6地址进行组复制的旧MySQL服务器版本,则成员不能使用IPv6地址(或解析为一个的主机名)作为其组复制本地地址参与组。这既适用于至少一个现有成员使用IPv6地址的情况,也适用于不支持此地址的新成员尝试加入的情况,以及新成员尝试使用IPv6地址加入但组中至少包含一个不支持此地址的成员的情况。在每种情况下,新成员都不能加入。要使加入成员为组通信提供IPv4地址,可以更改[`组\复制\本地\地址`](group-replication-options.html#sysvar_group_replication_local_address)或将DNS配置为将加入成员的现有主机名解析为IPv4地址。将每个组成员升级到支持IPv6进行组复制的MySQL服务器版本后,可以更改[`组\复制\本地\地址`](group-replication-options.html#sysvar_group_replication_local_address)将每个成员的值设置为IPv6地址,或将DNS配置为显示IPv6地址。改变[`组\复制\本地\地址`](group-replication-options.html#sysvar_group_replication_local_address)仅在停止并重新启动组复制时生效。 IPv6地址也可以用作分布式恢复端点,可以在MySQL 8.0.21中使用[`组\复制\广告\恢复\终结点`](group-replication-options.html#sysvar_group_replication_advertise_recovery_endpoints)系统变量。同样的规则也适用于此列表中使用的地址。看见[第18.5.4.1节,“分布式恢复的连接”](group-replication-distributed-recovery-connections.html).