MySQL 多实例约定端口
非官方但极为常见的运维约定:同机部署多个 MySQL 实例时,第二个实例常用 13306(对照默认 3306 加前缀),第三个用 23306 等。它没有任何标准强制,只能当线索用——连库前要先确认实例号与实际端口映射。
基本信息
| 服务 | MySQL 多实例(约定端口,非 IANA 分配) |
|---|---|
| 协议 | TCP(MySQL 协议) |
| 常见约定 | 3306 / 13306 / 23306 / 33306 |
| 生效依据 | my.cnf 的 port 与容器端口映射 |
| 暴露面 | 仅应用网段 |
典型使用场景
- 同机多实例部署,按实例划分端口
- 容器化环境把宿主机端口映射到容器内的 3306
- 迁移与割接时逐实例核对端口
- 监控与备份脚本按端口区分目标实例
- 排障连不上库时先确认端口是否被改
实例核对
实例核对
ss -lntp | grep -E '3306|13306|23306'
mysql -h127.0.0.1 -P13306 -e 'SELECT @@port, @@server_id, @@hostname'
mysqladmin -h127.0.0.1 -P13306 ping
grep -E '^port|^socket' /etc/my.cnf # 以配置文件为准排障与核对
| 检查项 | 做法 | 异常表现 |
|---|---|---|
| 实例端口 | SELECT @@port | 与实际配置不符:应用连到了别的实例 |
| 实例标识 | SELECT @@server_id | 主从角色错乱:操作前先确认实例身份 |
| 监听 | ss -lntp | grep 13306 | 端口不在:配置文件被改或实例未起 |
| 连通 | mysqladmin ping | 端口通但 ping 失败:实例仍在启动过程中 |
容器环境还多一层端口映射:容器内可能仍是 3306,映射到宿主机才变成 13306。排查连不上时按「应用配置、宿主机监听、容器映射、实例内 port」的顺序核对,能一次定位断点。
约定不等于标准
13306 只是行业习惯,不同团队的编号方式并不统一:有人按实例递增,有人按端口段划分。监控、备份与账号授权都要以配置文件与实例内真实值为准,把约定当成事实会在跨团队协作时频繁出错。
新监控项常按 3306 的模板克隆,导致 13306 实例「隐身」:主库挂了监控仍全绿。上线新实例时同步补齐监控、备份与巡检项,比事后补更省事。
监控与备份只覆盖默认端口:非标准端口实例长期无监控无备份,故障时会发现连恢复用的数据也没有。