MySQL Shell 9.2
Instances that belong to a cluster use different ports for
different types of communication. If you are using the
XCOM communication stack, in addition to the
default port at 3306, which is
used for client connections over classic MySQL protocol, and the
mysqlx_port, which defaults to
33060 and is used for X Protocol client connections, there is
also a port for internal connections between the instances in
the cluster which is not used for client connections. This port
is configured by the localAddress option,
which configures the
group_replication_local_address
system variable, and this port must be open so that the
instances in the cluster can communicate with each other. For
example, if your firewall is blocking this port then the
instances cannot communicate with each other, and the cluster
cannot function. Similarly, if your instances are using
SELinux, you need to ensure that
all of the required ports used by InnoDB Cluster are open so
that the instances can communicate with each other. See
Setting the TCP Port Context for MySQL Features and
MySQL
Shell Ports.
When you create a cluster or add instances to a cluster, by
default the localAddress port is calculated
by multiplying the target instance's
port value by 10 and then
adding one to the result. For example, when the
port of the target instance is
the default value of 3306, the calculated
localAddress port is 33061. You should ensure
that port numbers used by your cluster instances are compatible
with the way localAddress is calculated. For
example, if the server instance being used to create a cluster
has a port number higher than
6553, the dba.createCluster() operation fails
because the calculated localAddress port
number exceeds the maximum valid port which is 65535. To avoid
this situation either use a lower
port value on the instances you
use for InnoDB Cluster, or manually assign the
localAddress value, for example:
mysql-js> dba.createCluster('testCluster', {'localAddress':'icadmin@ic-1:33061'}
If you are using the MYSQL communication
stack, the localAddress value is generated automatically using
the same network address as the MySQL server. An extra internal
port/address is not required. See
Section 8.5.9, “Configuring the Group Replication Communication Stack”.
localAddress can be defined manually, but the
port used must be one MySQL is listening on, as defined by
bind_address.