mysql/mysql-routerMySQL Router 是 InnoDB 集群的一部分,是一种轻量级中间件,可在应用程序与后端 MySQL 服务器之间提供透明路由。它可用于多种场景,例如通过有效地将数据库流量路由到适当的后端 MySQL 服务器来提供高可用性和可扩展性。其可插拔架构还使开发人员能够扩展 MySQL Router 以满足自定义需求。
latest, 8.0)(mysql-router/8.0/Dockerfile)镜像会在新的 MySQL Server 维护版本和开发里程碑发布时更新。请注意,非 GA 版本仅用于预览目的,不应在生产环境中使用。
当前镜像使用以下必填环境变量:
| 变量 | 描述 |
|---|---|
| MYSQL_HOST | 要连接的 MySQL 主机 |
| MYSQL_PORT | 要使用的端口 |
| MYSQL_USER | 用于连接的用户 |
| MYSQL_PASSWORD | 用于连接的密码 |
在容器中运行需要一个正常工作的 InnoDB 集群。
镜像使用以下可选环境变量:
| 变量 | 描述 |
|---|---|
| MYSQL_INNODB_CLUSTER_MEMBERS | 等待至少此数量的集群实例处于 ONLINE 状态 |
| MYSQL_CREATE_ROUTER_USER | 是否为 Router 创建新账户。默认为 1,设为 0 可禁用 |
如果提供了上述变量,运行脚本将等待指定的 MySQL 主机启动、InnoDB 集群具有 MYSQL_INNODB_CLUSTER_MEMBERS 数量的实例,然后使用指定的服务器进行引导模式(引导)。
可通过以下命令运行镜像:
docker run -e MYSQL_HOST=localhost -e MYSQL_PORT=3306 -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql -e MYSQL_INNODB_CLUSTER_MEMBERS=3 -ti mysql/mysql-router
可通过以下命令验证:
docker ps
应显示类似以下输出:
4954b1c80be1 mysql-router:8.0 "/run.sh mysqlrouter" About a minute ago Up About a minute (healthy) 6447/tcp, 6448/tcp, 0.0.0.0:6446->6446/tcp, 6449/tcp innodbcluster_mysql-router_1
MySQL Router 容器暴露以下 TCP 端口:
| 端口 | 描述 |
|---|---|
| 6446 | 读写(R/W)连接端口。连接到此端口的客户端将被转发到 PRIMARY |
| 6447 | 只读(R/O)连接端口。连接到此端口的客户端将被转发到 SECONDARY |
| 6448 | X 协议读写(R/W)连接端口。用于 X 协议客户端连接的读写端口 |
| 6449 | X 协议只读(R/O)连接端口。用于 X 协议客户端连接的只读端口 |
| 8443 | HTTPS REST 接口端口 |
有关 REST 接口 API 的更多信息,请参见:
[***]
有关完整使用文档,请参见:
[***]

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务