MySQL Router 是 InnoDB Cluster 的一部分,是轻量级中间件,可在您的应用程序和后端 MySQL 服务器之间提供透明路由。它用于各种用例,例如通过将数据库流量路由到适当的后端 MySQL 服务器来提供高可用性和可扩展性。可插拔架构还使开发人员能够针对自定义用例扩展 MySQL Router。
有关 Router 如何成为 InnoDB Cluster 的一部分的更多详细信息,请参阅MySQL AdminAPI。
对于处理故障转移的客户端应用程序,它们需要了解 InnoDB 集群拓扑并知道哪个 MySQL 实例是 PRIMARY。虽然应用程序可以实现该逻辑,但 MySQL Router 可以为您提供和处理此功能。
MySQL 使用组复制跨多个服务器复制数据库,同时在服务器发生故障时执行自动故障转移。当与 MySQL InnoDB 集群一起使用时,MySQL 路由器充当代理来隐藏网络上的多个 MySQL 实例,并将数据请求映射到集群实例之一。只要有足够的在线副本并且组件之间的通信完好无损,应用程序就能够联系其中之一。MySQL Router 还通过让应用程序连接到 MySQL Router 而不是直接连接到 MySQL 来实现这一点。
MySQL Router 的推荐部署模型是使用 InnoDB Cluster,Router 与应用程序位于同一主机上。
配置集群后使用 InnoDB 集群部署 MySQL Router 的步骤是:
安装 MySQL 路由器。
-
引导 InnoDB 集群,并进行测试。
--bootstrap
Bootstrapping 通过使用和其他命令行选项 自动为现有的 InnoDB Cluster 配置 MySQL Router 。在引导过程中,路由器连接到集群,获取其元数据,并配置自身以供使用。自举是可选的。有关其他信息,请参阅 第 3 章,部署 MySQL 路由器。
-
将 MySQL Router 设置为自动启动。
将您的系统配置为在主机重新启动时自动启动 MySQL Router,该过程类似于 MySQL 服务器配置为自动启动的方式。有关更多详细信息,请参阅 第 5.1 节,“启动 MySQL 路由器”。
例如,在创建 MySQL InnoDB Cluster 之后,您可以使用以下方式配置 MySQL Router:
$> mysqlrouter --bootstrap localhost:3310 --directory /opt/myrouter --user snoopy
此示例将 MySQL 路由器引导到现有的 InnoDB 集群,其中:
localhost:3310
是 InnoDB 集群的成员,PRIMARY 或 bootstrap 将重定向到集群中的 PRIMARY。因为使用了可选的
--directory
引导程序选项,所以此示例创建了一个自包含安装,其中包含所有生成的目录和文件,位于/opt/myrouter/
. 这些文件包括start.sh
、、stop.sh
和log/
一个功能齐全的 MySQL Router 配置文件,名为mysqlrouter.conf
.只有名为主机的系统用户
snoopy
才能访问/opt/myrouter/*
.
有关修改引导程序配置过程的方法,请参见--bootstrap
和相关选项。例如,传入
--conf-use-sockets
启用 Unix 域套接字连接,因为默认情况下仅启用 TCP/IP 连接。