mysql router 不能单独离线安装,因其rpm包硬依赖mysql-shell≥8.0.23和mysql-common≥8.0.23,且需匹配的glibcxx/cxxabi符号;官方唯一推荐的离线方案是提取mysql shell内置的静态链接mysqlrouter二进制,并手写配置禁用metadata-cache。

MySQL Router 不能单独离线安装——它必须和 MySQL Server 或 MySQL Shell 同源配套,且官方不提供独立的 mysql-router RPM 或 tar 包用于纯离线部署。直接下载官网的 mysql-router-community-8.0.xx-1.el7.x86_64.rpm 在干净 CentOS7 上安装会失败,因为缺失 mysql-shell 和 mysql-common 的精确版本依赖。
为什么 rpm -ivh mysql-router*.rpm 总报 dependency failed
CentOS7 自带的 glibc、openssl、libstdc++ 版本偏低,而 MySQL Router 8.0+ 编译时链接的是较新 GLIBCXX / CXXABI 符号(如 CXXABI_1.3.11),这和 MySQL Server 二进制包遇到的兼容性问题本质相同。但更关键的是:Router 的 RPM 包在 Requires: 字段硬依赖 mysql-shell >= 8.0.23 和 mysql-common >= 8.0.23,而这两个包通常不会随 Router 一起下载。
- 用
rpm -qpR mysql-router-community-*.rpm可看到完整依赖列表 - 即使手动装了
mysql-common,mysql-shell仍需 Python 3.7+ 和额外动态库,离线补全极难 - 官方 YUM repo 中的
mysql-router-community是通过mysql80-community-release元包启用的,离线环境无法自动解析依赖链
真正可行的离线安装路径:用 mysql-shell 自带的 router 子命令
MySQL Shell 8.0.23+ 内置了 mysqlrouter 二进制(位于 bin/mysqlrouter),且与自身完全静态链接或仅依赖系统基础库。这是唯一被 MySQL 官方文档明确支持的“离线友好的 Router 部署方式”。
- 先在有网机器上下载完整 MySQL Shell RPM:
mysql-shell-8.0.33-1.el7.x86_64.rpm - 用
rpm2cpio+cpio提取二进制:rpm2cpio mysql-shell-8.0.33-1.el7.x86_64.rpm | cpio -idmv
- 找到并复制
usr/bin/mysqlrouter到目标机(例如/usr/local/mysql-router/bin/) - 确认可执行:
ldd /usr/local/mysql-router/bin/mysqlrouter应只显示libc.so.6、libpthread.so.0等系统级依赖
配置 router.conf 必须绕过 metadata-cache(因无 MySQL Server 在线)
离线环境下无法连接 MySQL Server 获取拓扑元数据,所以不能用 --bootstrap 模式。必须手写 mysqlrouter.conf 并禁用所有自动发现机制:
[routing:myapp] bind_address = 127.0.0.1:7001 destinations = 192.168.56.80:3306,192.168.56.61:3306 mode = read-write protocol = classic <p>[metadata_cache:bootstrap]</p><h1>离线时必须注释或删除整个 section,否则启动报错:Failed to connect to metadata server</h1>
-
destinations必须写死 IP+端口,不能用 hostnames(除非离线配好/etc/hosts) -
mode = read-write表示读写分离需自行保证后端角色(Router 不校验主从状态) - 启动前确保
mkdir -p /var/log/mysqlrouter /var/lib/mysqlrouter并chown mysql:mysql
最易被忽略的一点:Router 进程本身不管理 MySQL Server 生命周期——你必须确保后端 MySQL 实例已在离线环境中正确安装、启动、授权,并开放了对应端口。Router 只是 TCP 流量转发器,离线部署成败的关键永远在后端 MySQL 是否真能响应连接。











