You can bootstrap multiple instances of MySQL Router against InnoDB Cluster or InnoDB ReplicaSet. From version 8.0.19, to show a list of all registered MySQL Router instances, issue:
Cluster.listRouters()
The result provides information about each registered MySQL Router instance, such as its name in the metadata, the hostname, ports, and so on. For example, issue:
mysql-js> Cluster.listRouters()
{
"clusterName": "example",
"routers": {
"ic-1:3306": {
"hostname": "ic-1:3306",
"lastCheckIn": "2020-01-16 11:43:45",
"roPort": 6447,
"roXPort": 64470,
"rwPort": 6446,
"rwXPort": 64460,
"version": "8.0.19"
}
}
}
The returned information shows:
The name of the MySQL Router instance.
Last check-in timestamp, which is generated by a periodic ping from the MySQL Router stored in the metadata
Hostname where the MySQL Router instance is running
Read-Only and Read-Write ports which the MySQL Router publishes for classic MySQL protocol connections
Read-Only and Read-Write ports which the MySQL Router publishes for X Protocol connections
Version of this MySQL Router instance. The support for returning
version
was added in 8.0.19. If this operation is run against an earlier version of MySQL Router, the version field isnull
.
Additionally, the
operation can show a list of instances that do not support the
metadata version supported by MySQL Shell. Use the
Cluster
.listRouters()onlyUpgradeRequired
option, for example by
issuing
.
The returned list shows only the MySQL Router instances registered
with the Cluster
.listRouters({'onlyUpgradeRequired':'true'})Cluster
which require an
upgrade of their metadata. See
Section 6.5, “Upgrade Metadata Schema”.
MySQL Router instances are not automatically removed from the
metadata, so for example as you bootstrap more instances the
InnoDB Cluster metadata contains a growing number of
references to instances. To remove a registered MySQL Router
instance from a cluster's metadata, use the
operation, added in version 8.0.19. Use the
Cluster
.removeRouterMetadata(router
)
operation to get the name of the MySQL Router instance you want to
remove, and pass it in as Cluster
.listRouters()router
. For
example suppose your MySQL Router instances registered with a
cluster were:
mysql-js> Cluster.listRouters(){
"clusterName": "testCluster",
"routers": {
"myRouter1": {
"hostname": "example1.com",
"lastCheckIn": null,
"routerId": "1",
"roPort": "6447",
"rwPort": "6446"
"version": null
},
"myRouter2": {
"hostname": "example2.com",
"lastCheckIn": "2019-11-27 16:25:00",
"routerId": "3",
"roPort": "6447",
"rwPort": "6446"
"version": "8.0.19"
}
}
}
Based on the fact that the instance named
“myRouter1” has null
for
“lastCheckIn” and “version”, we decide
to remove this old instance from the metadata by issuing:
mysql-js> cluster.removeRouterMetadata('myRouter1')
The MySQL Router instance specified is unregistered from the cluster by removing it from the InnoDB Cluster metadata.