MySQL Router 9.0  /  一般信息  /  用于 MySQL InnoDB Cluster 的路由

1.1 用于 MySQL InnoDB Cluster 的路由

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

有关 Router 如何成为 InnoDB Cluster 一部分的更多详细信息,请参阅 MySQL AdminAPI

简介

为了使客户端应用程序能够处理故障转移,它们需要了解 InnoDB 集群拓扑,并知道哪个 MySQL 实例是主实例。虽然应用程序可以实现该逻辑,但 MySQL Router 可以为您提供并处理此功能。

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

使用 MySQL InnoDB Cluster 部署 Router

MySQL Router 的推荐部署模型是与 InnoDB Cluster 一起部署,Router 与应用程序位于同一台主机上。

在配置集群后,使用 InnoDB Cluster 部署 MySQL Router 的步骤如下:

  1. 安装 MySQL Router。

  2. 引导 InnoDB Cluster 并进行测试。

    引导程序通过使用 --bootstrap 和其他命令行选项自动为现有的 InnoDB Cluster 配置 MySQL Router。在引导过程中,Router 连接到集群,获取其元数据,并配置自身以供使用。引导是可选的。

    有关更多信息,请参阅 第 3 章,部署 MySQL Router

  3. 将 MySQL Router 设置为自动启动。

    将系统配置为在主机重新启动时自动启动 MySQL Router,该过程类似于将 MySQL 服务器配置为自动启动。有关更多详细信息,请参阅 第 5.1 节,“启动 MySQL Router”

例如,在创建 MySQL InnoDB Cluster 后,您可以使用以下命令配置 MySQL Router:

$> mysqlrouter --bootstrap localhost:3310 --directory /opt/myrouter --user snoopy

此示例将 MySQL Router 引导到现有的 InnoDB Cluster,其中

  • localhost:3310 是 InnoDB 集群的成员,主实例或引导程序都将重定向到集群中的主实例。

  • 由于使用了可选的 --directory 引导选项,因此此示例创建了一个自包含的安装,所有生成的目录和文件都位于 /opt/myrouter/ 中。这些文件包括 start.shstop.shlog/ 和一个名为 mysqlrouter.conf 的功能齐全的 MySQL Router 配置文件。

  • 只有名为 snoopy 的主机系统用户才能访问 /opt/myrouter/*

请参阅 --bootstrap 和相关选项,了解修改引导配置过程的方法。例如,传入 --conf-use-sockets 将启用 Unix 域套接字连接,因为默认情况下仅启用 TCP/IP 连接。