10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.5 mb
PDF (A4)- 41.6 mb
手册页(TGZ)- 262.1 kb
手册页(邮政编码)- 372.3 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

18.6.1组复制IP地址权限

组复制插件允许您指定一个允许主机列表,从这些主机可以接受传入的组通信系统连接。如果在服务器s1上指定了allowlist,那么当服务器s2为了进行组通信而与s1建立连接时,s1在接受来自s2的连接之前首先检查allowlist。如果s2在allowlist中,则s1接受连接,否则s1拒绝s2的连接尝试。从MySQL 8.0.22,系统变量group_replication_ip_allowlist是用来指定allowlist的,对于MySQL 8.0.22之前的版本,系统变量group_replication_ip_whitelist使用。新的系统变量与旧的系统变量的工作方式相同,只是术语发生了变化。

如果不显式指定allowlist,则组通信引擎(XCom)将自动扫描主机上的活动接口,并识别那些在私有子网中具有地址的接口,以及为每个接口配置的子网掩码。这些地址,还有本地主机IPv4的IP地址和(从MySQL 8.0.14) IPv6用于创建一个自动组复制allowlist。因此,在应用了适当的子网掩码后,自动允许列表包括在以下范围内为主机找到的任何IP地址:

IPv4 (rfc1918定义)10/8前缀(10.0.0.0 - 10.255.255.255)—A类172.16/12前缀(172.16.0.0 - 172.31.255.255)—B类192.168.168 /16前缀(192.168.0.0 - 192.168.255.255)—C类IPv6 (rfc4193和rfc5156定义)fc00:/7前缀-唯一本地地址fe80::/10前缀-链路本地单播地址127.0.0.1—IPv4::1—IPv6 localhost

在错误日志中添加一个条目,说明主机自动允许的地址。

私有地址的自动允许列表不能用于来自私有网络以外的服务器的连接,因此,即使服务器在公网ip上有接口,缺省情况下也不允许来自外部主机的Group Replication连接。对于位于不同机器上的服务器实例之间的Group Replication连接,必须提供公共IP地址,并将这些地址指定为显式的allowlist。如果为allowlist指定任何条目,则私有和本地主机地址不会自动添加,因此如果使用其中任何一个地址,必须显式指定它们。

要手动指定allowlist,请使用group_replication_ip_allowlist(从MySQL 8.0.22)group_replication_ip_whitelist系统变量。在MySQL 8.0.24之前,当服务器是复制组的活动成员时,不能更改服务器上的allowlist。如果成员是活动的,则必须执行停止GROUP_REPLICATION在更改allowlist之前,和开始GROUP_REPLICATION之后。从MySQL 8.0.24中,您可以在Group Replication运行时更改allowlist。

allowlist必须包含每个成员中指定的IP地址或主机名group_replication_local_address系统变量。该地址与MySQL服务器SQL协议的主机和端口不相同,并且没有在bind_address服务器实例的系统变量。如果用于服务器实例的组复制本地地址的主机名解析为IPv4地址和IPv6地址,则组复制连接首选IPv4地址。

指定为分布式恢复端点的IP地址,以及成员的标准SQL客户端连接的IP地址(如果用于分布式恢复(这是默认值)),不需要添加到allowlist。allowlist仅用于指定的地址group_replication_local_address为每一个成员。为了检索用于分布式恢复的地址,一个加入成员必须有其与allowlist允许的组的初始连接。

在allowlist中,你可以指定以下的任意组合:

  • IPv4地址(例如,198.51.100.44

  • 带有CIDR表示法的IPv4地址(例如,192.0.2.21/24

  • IPv6地址,从MySQL 8.0.14(例如,2001: db8:85a3:8d3:1319:8a2e: 370:7348

  • IPv6地址与CIDR表示法,从MySQL 8.0.14(例如,2001: db8:85a3:8d3:: / 64

  • 主机名(例如,example.org

  • 带有CIDR符号的主机名(例如,www.example.com/24

在MySQL 8.0.14之前,主机名只能解析为IPv4地址。从MySQL 8.0.14开始,主机名可以解析为IPv4地址、IPv6地址或两者都解析。如果主机名解析为IPv4地址和IPv6地址,则组复制连接始终使用IPv4地址。您可以将CIDR表示法与主机名或IP地址结合使用,以允许具有特定网络前缀的IP地址块,但一定要确保指定子网中的所有IP地址都在您的控制之下。

请注意

当一个IP地址的连接请求因为不在允许列表中而被拒绝时,拒绝消息总是以IPv6格式打印该IP地址。IPv4地址前面有::飞行符:这种格式(ipv4映射的IPv6地址)。您不需要使用这种格式在allowlist中指定IPv4地址;使用标准的IPv4格式。

必须停止并重新启动成员上的组复制,才能更改其allowlist。allowlist中的每个条目之间必须用逗号隔开。例如:

mysql >停止GROUP_REPLICATION;mysql> SET GLOBAL group_replication_ip_allowlist="192.0.2.21/24,198.51.100.44,203.0.113.0/24,2001:db8:85a3:8d3:1319:8a2e:370:7348,example.org,www.example.com/24";mysql >开始GROUP_REPLICATION;

要加入复制组,需要允许服务器在向其发出加入组请求的种子成员上运行。通常,这将是复制组的引导程序成员,但它可以是控件列出的任何服务器group_replication_group_seeds选项,用于加入组的服务器。中列出的组的任何种子成员group_replication_group_seeds选项与IPv6地址,当加入成员有一个IPv4地址group_replication_local_address或者相反,您还必须为种子成员提供的协议为加入成员设置并允许一个备选地址(或解析为该协议的地址的主机名)。这是因为当一个服务器加入一个复制组时,它必须使用种子成员在group_replication_group_seeds选项,不管它是IPv4还是IPv6。如果一个加入成员没有适当协议的允许地址,它的连接尝试将被拒绝。有关管理IPv4和IPv6混合复制组的详细信息,请参见第18.5.5节“支持IPv6和混合IPv6和IPv4组”

当复制组进行重新配置时(例如,选举了新的主机组或成员加入或离开),组内成员之间会重新建立连接。如果某个组成员仅被重新配置后不再属于该复制组的服务器所允许,则该组成员将无法重新连接复制组中其他不允许该复制组的服务器。要完全避免这种情况,请为复制组的所有成员服务器指定相同的allowlist。

请注意

根据您的安全需求,可以在不同的组成员上配置不同的允许列表,例如,为了保持不同的子网独立。如果您需要配置不同的allowlist来满足您的安全需求,请确保复制组中的allowlist之间有足够的重叠,以最大限度地提高服务器在缺少原始种子成员的情况下重新连接的可能性。

对于主机名,只有在另一个服务器发出连接请求时才进行名称解析。不能解析的主机名将不被考虑用于allowlist验证,并将一条警告消息写入错误日志。FCrDNS (Forward-confirmed reverse DNS)验证是对解析后的主机名进行验证。

警告

主机名本质上不如允许列表中的IP地址安全。FCrDNS验证提供了良好的保护级别,但可能会受到某些类型的攻击。只有在严格必要时才在allowlist中指定主机名,并确保用于名称解析的所有组件(如DNS服务器)都在您的控制之下。您还可以使用hosts文件在本地实现名称解析,以避免使用外部组件。