mysql router 是 mysql 官方轻量级中间件,用于智能路由、连接转发和高可用切换,不解析 sql 或参与事务,仅在客户端与后端 mysql(如 innodb cluster)间建立连接桥梁,支持动态拓扑感知、读写分离及故障自动转移。

MySQL Router 是 MySQL 官方提供的轻量级中间件,用于实现客户端请求的智能路由、连接转发和高可用切换。它不处理 SQL 解析或查询优化,只负责在客户端与后端 MySQL 服务器(如主从集群、InnoDB Cluster)之间建立连接桥梁,并根据配置策略自动选择目标节点。
核心作用:自动路由 + 故障转移
MySQL Router 本身不存储数据,也不参与事务处理,它的主要价值在于:
- 将客户端连接请求按预设规则(如读写分离、只读优先、故障自动切换)转发到合适的 MySQL 实例
- 监听后端集群拓扑变化(例如 InnoDB Cluster 成员增减),动态更新路由表,无需重启
- 支持多种部署模式:单点路由、多实例冗余、与应用程序同机部署等
典型使用场景与配置方式
最常见的是配合 InnoDB Cluster 或 Replication Group 使用。安装后需编辑配置文件 mysqlrouter.conf,关键部分包括:
-
[routing]:定义一个路由服务,指定绑定地址、端口、目标集群类型(如
classic或cluster) -
destinations:填写后端 MySQL 实例地址列表,例如:
192.168.1.10:3306,192.168.1.11:3306 -
routing_strategy:控制分发逻辑,常用值有:
round-robin(轮询)、first-available(首可用)、next-available(故障后跳转下一个) - client_ssl_mode 和 server_ssl_mode:控制是否启用 SSL 加密传输
启动与验证方法
配置完成后,用命令启动:
mysqlrouter -c /path/to/mysqlrouter.conf
验证是否生效:
- 检查进程:运行
ps aux | grep mysqlrouter确认服务已启动 - 测试连接:用 MySQL 客户端连接 Router 监听端口(如
mysql -h127.0.0.1 -P6446 -uuser -ppass),观察是否能正常执行查询 - 查看日志:默认输出到标准错误或指定日志文件,关注是否有
connected to或failed to connect类提示
注意事项与常见问题
实际使用中容易忽略的细节:
- Router 必须能访问后端所有 MySQL 实例的管理端口(如 3306)和元数据端口(如 33060,用于 InnoDB Cluster)
- 如果使用 InnoDB Cluster,需确保集群已启用
group_replication_group_name并完成引导 - Router 不会自动创建用户权限,后端 MySQL 必须为 Router 连接使用的账号开放对应库表访问权限
- 不建议将 Router 与应用部署在同一台高负载机器上,避免网络延迟或资源争抢影响路由响应











