MySQL InnoDB Cluster 部署说明

本文说明如何使用 innodb_cluster.yml 部署 MySQL 8.4 InnoDB Cluster。

1. 适用范围

  • 目标架构:三节点 InnoDB Cluster
  • 数据库类型:db_type: mysql
  • MySQL 版本:8.4.x
  • 管理工具:MySQL Shell

2. inventory

innodb_cluster.yml 使用独立主机组:

[dbbot_innodb_cluster]
192.0.2.131 ansible_user=root ansible_ssh_pass="'密码'"
192.0.2.132 ansible_user=root ansible_ssh_pass="'密码'"
192.0.2.133 ansible_user=root ansible_ssh_pass="'密码'"

3. 关键变量

编辑 mysql_ansible/playbooks/common_config.yml

db_type: mysql
mysql_version: "8.4.7"
mysql_port: 3307

如果你暂时沿用 dbbot 公开默认密码做实验,请显式设置 fcs_allow_dbbot_default_passwd: true。默认值是 false,会在部署前拦截公开默认密码。

编辑 mysql_ansible/playbooks/vars/var_innodb_cluster.yml

innodb_cluster_name: "myCluster3307"
innodb_cluster_primary: 192.0.2.131
innodb_cluster_members:
  - 192.0.2.131
  - 192.0.2.132
  - 192.0.2.133

说明:

  • innodb_cluster_primary 必须包含在 innodb_cluster_members 中。
  • innodb_cluster_members 至少 3 个节点。
  • mysql_mgr_port 默认按 mysql_port * 10 + 1 自动计算。

4. 安装包准备

至少准备:

  • MySQL 8.4.x 二进制包
  • MySQL Shell 安装包,或允许控制节点自动下载

如果你使用离线包,请放到 mysql_ansible/downloads/

5. 执行部署

cd /usr/local/dbbot/mysql_ansible/playbooks
ansible-playbook innodb_cluster.yml

执行过程中按提示输入 confirm

6. 部署后验证

在主节点或任一已安装 mysqlshell 的节点执行:

mysqlsh clusteradmin@192.0.2.131:3307

登录后执行:

var cluster = dba.getCluster()
cluster.status()

验证要点:

  • status 返回 OK / ONLINE
  • 三个成员均在线
  • primary 节点与配置一致

7. 常见注意事项

  • innodb_cluster.yml 只支持 MySQL 8.4.x
  • db_type 只能是 mysql,不能是 perconagreatsql
  • 建议先完成基础连通性检查:ansible dbbot_innodb_cluster -m ping
  • 如果后续需要应用接入,再继续部署 MySQL Router。