Instances that belong to a cluster use different ports for
different types of communication. 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'}