如何使用mysql router_mysql路由转发说明

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

如何使用mysql router_mysql路由转发说明

MySQL Router 是 MySQL 官方提供的轻量级中间件,用于实现客户端请求的智能路由、连接转发和高可用切换。它不处理 SQL 解析或查询优化,只负责在客户端与后端 MySQL 服务器(如主从集群、InnoDB Cluster)之间建立连接桥梁,并根据配置策略自动选择目标节点。

核心作用:自动路由 + 故障转移

MySQL Router 本身不存储数据,也不参与事务处理,它的主要价值在于:

  • 将客户端连接请求按预设规则(如读写分离、只读优先、故障自动切换)转发到合适的 MySQL 实例
  • 监听后端集群拓扑变化(例如 InnoDB Cluster 成员增减),动态更新路由表,无需重启
  • 支持多种部署模式:单点路由、多实例冗余、与应用程序同机部署等

典型使用场景与配置方式

最常见的是配合 InnoDB Cluster 或 Replication Group 使用。安装后需编辑配置文件 mysqlrouter.conf,关键部分包括:

  • [routing]:定义一个路由服务,指定绑定地址、端口、目标集群类型(如 classiccluster
  • destinations:填写后端 MySQL 实例地址列表,例如:192.168.1.10:3306,192.168.1.11:3306
  • routing_strategy:控制分发逻辑,常用值有:round-robin(轮询)、first-available(首可用)、next-available(故障后跳转下一个)
  • client_ssl_modeserver_ssl_mode:控制是否启用 SSL 加密传输

启动与验证方法

配置完成后,用命令启动:

mysqlrouter -c /path/to/mysqlrouter.conf

验证是否生效:

  • 检查进程:运行 ps aux | grep mysqlrouter 确认服务已启动
  • 测试连接:用 MySQL 客户端连接 Router 监听端口(如 mysql -h127.0.0.1 -P6446 -uuser -ppass),观察是否能正常执行查询
  • 查看日志:默认输出到标准错误或指定日志文件,关注是否有 connected tofailed to connect 类提示

注意事项与常见问题

实际使用中容易忽略的细节:

  • Router 必须能访问后端所有 MySQL 实例的管理端口(如 3306)和元数据端口(如 33060,用于 InnoDB Cluster)
  • 如果使用 InnoDB Cluster,需确保集群已启用 group_replication_group_name 并完成引导
  • Router 不会自动创建用户权限,后端 MySQL 必须为 Router 连接使用的账号开放对应库表访问权限
  • 不建议将 Router 与应用部署在同一台高负载机器上,避免网络延迟或资源争抢影响路由响应