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 setupinnodb_cluster.yml 已成功执行;[dbbot_router] inventory 已准备;Router 节点可访问 Cluster 节点
必填变量router_bootstrap_servermysql_cluster_admin_user / mysql_cluster_admin_passwordmysql_router_user / mysql_router_password;HA 模式还需要 router_enable_harouter_viprouter_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 注册