首页/网络/常用端口速查/6446 MySQL Router 集群接入

6446 MySQL Router 集群接入

MySQL InnoDB Cluster 官方中间件 Router 的读写端口:6446 走主库(读写),6447 走从库(只读),应用改连 Router 即得高可用。

常用端口速查网络更新于 2026-10-13

MySQL Router 的读写口

MySQL Router 是 InnoDB Cluster 的官方接入中间件:它读取集群元数据后,把 6446 端口上的连接送到当前主库(读写),把 6447 上的连接按策略分发到从库(只读)。应用只改连接串指向 Router,主库切换时不用改配置。默认端口在首次 bootstrap 时写入配置,classic 协议占 6446/6447,X 协议另占 6448/6449。

基本信息

服务MySQL Router(InnoDB Cluster 接入层)
协议TCP(MySQL classic 协议)
默认端口6446 读写 / 6447 只读
X 协议端口6448 读写 / 6449 只读
暴露面仅应用网段

典型使用场景

  • 应用连接串改指向 Router,主库故障切换对业务透明
  • 报表、备份、离线分析流量走 6447,避免压到主库
  • Java/PHP 老应用不愿改配置:只换 host:port 就能跟随主库漂移
  • 读多写少业务做读写分离,按端口而非按代码分支
  • 灰度验证新从库:先用只读口把部分读流量引上去

路由核对

路由核对
mysql -hrouter01 -P6446 -uapp -p -e 'SELECT @@hostname, @@port'    # 应落在主库
mysql -hrouter01 -P6447 -uapp -p -e 'SELECT @@hostname, @@read_only'  # 只读口应从库
ss -lntp | grep -E '644[6-9]'                                        # 监听核对
mysqlrouter --bootstrap admin@mgmt01:3306 --user=mysqlrouter         # 首次生成配置

排障与核对

检查项做法异常表现
端口监听ss -lntp | grep 644[6-9]端口不在:Router 进程未起或被防火墙拦
落点核对SELECT @@hostname两个端口落到同一台:策略配置未生效
元数据缓存mysqlrouter 日志与 bootstrap 结果主库已切换但 6446 仍指向旧节点
连接上限Router 日志中的连接拒绝后端健康却报连接过多:瓶颈在中间件
6447 只按策略分发读流量,不保证一致性:复制延迟大的从库上做只读查询会读到旧数据,需要强一致的读仍要走 6446。Router 自身不做鉴权,账号权限仍由 MySQL 用户体系裁决。
把 6446 暴露到应用网段之外,等于给数据库开了第二扇没人审计的门:来源限制、账号白名单、审计日志要按数据库入口的标准来做。

中间件也要高可用

Router 不解析 SQL、不缓存结果,但所有应用连接都要先经过它,因此进程、端口与元数据缓存都得按生产组件对待:多实例加 VIP、健康检查、版本与后端 MySQL 保持一致,才能避免出现「后端健康、入口不可用」这类假故障。

配置由 bootstrap 生成,集群拓扑变化后 Router 靠元数据缓存感知;升级前先确认目标版本与后端 MySQL 版本兼容,并保留可回滚的配置与证书,避免升级当天同时失去入口和回退路径。

易错点

  • 应用仍直连旧主库 IP:Router 形同虚设,切换时还是人工改配置
  • 把 6447 当读写口用:写请求被拒,报错信息还会指到后端从库而不是 Router
  • 只监控后端 MySQL 不监控 Router 进程:元数据过期后连接照样成功,却路由到错节点
  • Router 单实例部署:中间件挂掉时后端集群健康,业务依然全站不可用
  • 只读业务不加区分地打 6447:长事务与分析查询挤占从库,复制延迟反过来拖慢只读接口

数据来源与参考

  • MySQL Router 官方文档(经典协议 6446/6447)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌