下载本手册
PDF (US Ltr) - 2.3Mb
PDF (A4) - 2.3Mb


MySQL Shell 9.0  /  ...  /  配置 InnoDB Cluster 端口

7.4.5 配置 InnoDB Cluster 端口

属于集群的实例对不同类型的通信使用不同的端口。如果您使用的是 XCOM 通信栈,除了用于通过经典 MySQL 协议进行客户端连接的默认 port(3306)和用于 X 协议客户端连接的 mysqlx_port(默认为 33060)之外,还有一个用于集群中实例之间内部连接的端口,该端口不用于客户端连接。此端口由 localAddress 选项配置,该选项用于配置 group_replication_local_address 系统变量,并且此端口必须打开,以便集群中的实例可以相互通信。例如,如果您的防火墙阻止了此端口,则实例将无法相互通信,并且集群将无法正常工作。同样,如果您的实例使用的是 SELinux,则需要确保 InnoDB Cluster 使用的所有必需端口都已打开,以便实例可以相互通信。请参阅 为 MySQL 功能设置 TCP 端口上下文MySQL Shell 端口

默认情况下,当您创建集群或将实例添加到集群时,localAddress 端口是通过将目标实例的 port 值乘以 10 并将结果加 1 来计算的。例如,当目标实例的 port 为默认值 3306 时,计算出的 localAddress 端口为 33061。您应确保集群实例使用的端口号与 localAddress 的计算方式兼容。例如,如果用于创建集群的服务器实例的 port 号高于 6553,则 dba.createCluster() 操作将失败,因为计算出的 localAddress 端口号超过了最大有效端口 65535。为避免这种情况,请在用于 InnoDB Cluster 的实例上使用较低的 port 值,或手动分配 localAddress 值,例如

mysql-js> dba.createCluster('testCluster', {'localAddress':'icadmin@ic-1:33061'}

如果您使用的是 MYSQL 通信栈,则会使用与 MySQL 服务器相同的网络地址自动生成 localAddress 值。不需要额外的内部端口/地址。请参阅 第 7.5.9 节“配置组复制通信栈”

可以手动定义 localAddress,但使用的端口必须是 MySQL 正在侦听的端口,如 bind_address 中所定义。