Documentation Home

6.10.6 使用集群的路由器

您可以针对 InnoDB Cluster 或 InnoDB ReplicaSet 引导 MySQL Router 的多个实例。从 8.0.19 版本开始,要显示所有已注册 MySQL Router 实例的列表,请发出:

Cluster.listRouters()

结果提供有关每个已注册 MySQL Router 实例的信息,例如它在元数据中的名称、主机名、端口等。例如,发出以下 JavaScript 命令:

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"
        }
    }
}

或者发出以下 Python 命令:

mysql-py> Cluster.list_routers()
{
    "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"
        }
    }
}

返回信息显示:

  • MySQL 路由器实例的名称。

  • 上次签入时间戳,由存储在元数据中的 MySQL 路由器的定期 ping 生成。

  • 运行 MySQL Router 实例的主机名。

  • MySQL 路由器为经典 MySQL 协议连接发布的只读和读写端口。

  • MySQL 路由器为 X 协议连接发布的只读和读写端口。

  • 此 MySQL 路由器实例的版本。version在 8.0.19 中添加了对返回的支持 。如果此操作针对较早版本的 MySQL Router 运行,则版本字段为null.

此外,该 Cluster.listRouters() 操作可以显示不支持 MySQL Shell 支持的元数据版本的实例列表。使用该 onlyUpgradeRequired选项。例如,通过发布 Cluster.listRouters({'onlyUpgradeRequired':'true'}).

返回的列表仅显示在 中注册的 MySQL Router 实例Cluster,这些实例需要升级其元数据。有关详细信息,请参阅 第 6.11 节,“升级元数据模式”

MySQL Router 实例不会自动从元数据中删除,因此例如当您引导更多实例时,InnoDB Cluster 元数据包含越来越多的实例引用。要从集群的元数据中删除已注册的 MySQL Router 实例,请使用 8.0.19 版中添加的操作。 Cluster.removeRouterMetadata(router)

使用该 Cluster.listRouters() 操作获取要删除的 MySQL Router 实例的名称,并将其作为router. 例如,假设在集群中注册的 MySQL Router 实例是:

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"
        }
    }
}

基于名为 myRouter1null的 实例具有lastCheckIn版本这一事实。通过发出以下 JavaScript 命令从元数据中删除这个旧实例:

mysql-js> cluster.removeRouterMetadata('myRouter1')

或者,通过发出以下 Python 命令:

mysql-py> cluster.remove_router_metadata('myRouter1')

指定的 MySQL Router 实例通过从 InnoDB Cluster 元数据中删除而从集群中注销。