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]
:定义一个路由服务,指定绑定地址、端口、目标集群类型(如
或
)
destinations
:填写后端 MySQL 实例地址列表,例如:
routing_strategy
:控制分发逻辑,常用值有:
(轮询)、
(首可用)、
(故障后跳转下一个)
client_ssl_mode
和
server_ssl_mode
:控制是否启用 SSL 加密传输
启动与验证方法
配置完成后,用命令启动:
MySQL(Linux)
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载
mysqlrouter -c /path/to/mysqlrouter.conf
验证是否生效:
检查进程:运行
确认服务已启动
测试连接:用 MySQL 客户端连接 Router 监听端口(如
),观察是否能正常执行查询
查看日志:默认输出到标准错误或指定日志文件,关注是否有
或
类提示
注意事项与常见问题
实际使用中容易忽略的细节:
Router 必须能访问后端所有 MySQL 实例的管理端口(如 3306)和元数据端口(如 33060,用于 InnoDB Cluster)
如果使用 InnoDB Cluster,需确保集群已启用
并完成引导
Router 不会自动创建用户权限,后端 MySQL 必须为 Router 连接使用的账号开放对应库表访问权限
不建议将 Router 与应用部署在同一台高负载机器上,避免网络延迟或资源争抢影响路由响应
classiccluster192.168.1.10:3306,192.168.1.11:3306round-robinfirst-availablenext-availableps aux | grep mysqlroutermysql -h127.0.0.1 -P6446 -uuser -ppassconnected tofailed to connectgroup_replication_group_name