文档首页
MySQL Shell for VS Code


MySQL Shell for VS Code  /  MySQL Shell 控制台  /  MySQL Shell、MySQL Router 和 InnoDB Cluster

预发布:2024-07-17

5.9 MySQL Shell、MySQL Router 和 InnoDB Cluster

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

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

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

测试 MySQL Router 配置

设置 InnoDB Cluster 并运行 MySQL Router 后,可以使用 MySQL Shell 控制台测试 InnoDB Cluster 和 MySQL Router 设置。

默认情况下,可以通过连接到以下方式访问 InnoDB Cluster

  • 经典 MySQL 协议

    • 读写连接:instance-address:port 6446

    • 只读连接:instance-address:port 6447

  • X 协议

    • 读写连接:instance-address:port 6448

    • 只读连接:instance-address:port 6449

不要直接连接到 MySQL 服务器实例之一,而是通过 MySQL Router 连接。

  1. 发出以下连接命令,其中用户是 demo-user,实例的地址是 demo-instance,并且正在使用经典 MySQL 协议

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

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

    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 已正确配置并成功运行。