MySQL Router 部署说明
本文说明如何使用 innodb_cluster_router.yml 在 InnoDB Cluster 之上部署 MySQL Router。
1. 适用范围
- 上游 Cluster 已通过
innodb_cluster.yml部署完成 - 支持单节点 App 模式和双节点 keepalived HA 模式
- Router REST API 默认开启,便于后续
mysqlrouter_exporter采集
2. 依赖链
| 项目 | 内容 |
|---|---|
| 前置依赖 | 已完成 dbbotctl env setup;innodb_cluster.yml 已成功执行;[dbbot_router] inventory 已准备;Router 节点可访问 Cluster 节点 |
| 必填变量 | router_bootstrap_server、mysql_cluster_admin_user / mysql_cluster_admin_password、mysql_router_user / mysql_router_password;HA 模式还需要 router_enable_ha、router_vip、router_ha_nodes |
| 条件变量 | 当 router_rest_api_auth_mode: file 时,需要 router_rest_api_file_user / router_rest_api_file_password;若修改了 REST API 端口,要同步修改 router_ports.http.port |
| 后续依赖 | 如需采集 Router 指标,继续执行 router_exporter_install.yml,再用 dbbotctl exporter register -t router 注册到 Prometheus |
3. inventory
innodb_cluster_router.yml 使用独立主机组:
[dbbot_router]
192.0.2.151 ansible_user=root ansible_ssh_pass="'密码'"
192.0.2.152 ansible_user=root ansible_ssh_pass="'密码'"
以上 IP 使用 RFC 5737 文档保留地址,仅作为示例,请替换成你的实际主机地址。
如果你只需要单节点 App 模式,可以保留一个 Router 节点,并把 router_enable_ha 改成 false。
4. 关键变量
编辑 mysql_ansible/playbooks/vars/var_innodb_cluster_router.yml:
router_enable_ha: true
router_bootstrap_server: 192.0.2.131
mysql_cluster_admin_user: clusteradmin
mysql_cluster_admin_password: "Dbbot_clusteradmin@8888"
mysql_router_user: mysqlrouter
mysql_router_password: "Dbbot_mysqlrouter@8888"
router_vip: 192.0.2.150
router_ha_nodes:
- ip: 192.0.2.151
role: MASTER
priority: 100
- ip: 192.0.2.152
role: BACKUP
priority: 90
router_rest_api_auth_mode: file
router_rest_api_file_user: router_api_user
router_rest_api_file_password: "Dbbot_router_api_user@8888"
说明:
router_bootstrap_server必须是当前 Cluster 中可连通的节点。mysql_cluster_admin_*用于mysqlrouter --bootstrap。mysql_router_*是 Router 访问 Cluster metadata 的账号。router_rest_api_file_*只在router_rest_api_auth_mode: file时生效,后续mysqlrouter_exporter默认复用这组凭据。
5. 执行部署
cd /usr/local/dbbot/mysql_ansible/playbooks
ansible-playbook innodb_cluster_router.yml
执行过程中按提示输入 confirm。
6. 部署后验证
常见检查项:
systemctl status mysqlrouter- HA 模式下额外检查
systemctl status keepalived ss -lntp | egrep '6446|6447|8443'
连接示例:
mysql -h 192.0.2.150 -P 6446 -u<user> -p
如果是单节点 App 模式,把上面地址替换成该 Router 主机 IP。
7. 下一步
如果要把 Router 指标接入 Prometheus,请继续阅读:mysqlrouter_exporter 与 Router 注册。