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