Documentation Home
MySQL 外壳 8.0  / 第 7 章 MySQL InnoDB 集群  / 7.4 部署生产 InnoDB 集群  /  7.4.5 配置 InnoDB 集群端口

7.4.5 配置 InnoDB 集群端口

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

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

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

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

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