用于 VS 代码的 MySQL Shell GUI / MySQL Shell  / 第 5 章 MySQL Shell 控制台  /  5.9 MySQL Shell、MySQL Router 和 InnoDB Cluster

全面上市前:2022-11-17

5.9 MySQL Shell、MySQL Router 和 InnoDB Cluster

MySQL Router 是高可用性 (HA) 解决方案的构建块。它通过智能地将连接路由到 MySQL 服务器来简化应用程序开发,从而提高性能和可靠性。

MySQL Router 是 InnoDB Cluster 的一部分,是轻量级中间件,可在您的应用程序和后端 MySQL 服务器之间提供透明路由。它用于各种用例,例如通过将数据库流量路由到适当的后端 MySQL 服务器来提供高可用性和可扩展性。可插拔架构还使开发人员能够针对自定义用例扩展 MySQL Router。

MySQL 组复制跨多个服务器复制数据库,同时在服务器发生故障时执行自动故障转移。当与 InnoDB 集群一起使用时,MySQL 路由器充当代理来隐藏网络上的多个 MySQL 实例,并将数据请求映射到集群实例之一。只要有足够的在线副本并且组件之间的通信完好无损,应用程序就可以联系其中之一。MySQL Router 还通过让应用程序连接到 MySQL Router 而不是直接连接到 MySQL 来实现这一点。

测试 MySQL 路由器配置

设置 InnoDB 集群并运行 MySQL 路由器后,您可以使用 MySQL Shell 控制台测试 InnoDB 集群和 MySQL 路由器设置。

默认情况下,InnoDB Cluster 可以通过连接到:

  • 经典的 MySQL 协议

    • 读/写连接:实例地址:端口 6446

    • 只读连接:实例地址:端口 6447

  • X协议

    • 读/写连接:实例地址:端口 6448

    • 只读连接:实例地址:端口 6449

不是直接连接到其中一个 MySQL 服务器实例,而是通过 MySQL 路由器连接。

  1. 发出以下连接命令,其中用户为 demo-user,实例地址为demo-instance,使用经典 MySQL 协议:

    shell.connect ('demo-user@demo-instance:6446')
  2. 提供 root 密码以连接到 InnoDB 集群。

  3. 通过创建一个变量cluster并为其分配dba.getCluster()JavaScript 方法的值来检查 InnoDB 集群的状态:

    cluster = dba.getCluster()
    cluster.status()
  4. 切换到 SQL 模式:

    \sql
  5. 通过发出以下命令查询实例正在运行的端口:

    SELECT @@port; 
    +--------+
    | @@port |
    +--------+
    |   3310 |
    +--------+
    1 row in set (0.0007 sec)

    在本例中,InnoDB Cluster 运行在 3310 端口,因此 MySQL Router 已正确配置并成功运行。