MySQL InnoDB Cluster 部署说明
本文说明如何使用 innodb_cluster.yml 部署 MySQL InnoDB Cluster。
1. 适用范围
- 目标架构:三节点 InnoDB Cluster
- 数据库类型:
db_type: mysql - MySQL 版本:
8.4.x或9.7.x - 管理工具:MySQL Shell
建议在新环境执行。
innodb_cluster.yml默认会先跑 Linux 初始化和软件准备流程,例如安装依赖、调整 SELinux、关闭firewalld、写入sysctl,然后再安装 MySQL 与 mysqlshell。MySQL
9.7.x使用glibc2.28包,不支持 CentOS/RHEL 7 系列;这类系统请使用 MySQL8.4.x。
1.1 依赖链
| 项目 | 内容 |
|---|---|
| 前置依赖 | 已完成 dbbotctl env setup;[dbbot_innodb_cluster] inventory 可连通;mysqlshell 安装包可用或允许自动下载 |
| 必填变量 | db_type: mysql、mysql_version: 8.4.x 或 9.7.x、innodb_cluster_primary、innodb_cluster_members、mysql_cluster_admin_user / mysql_cluster_admin_password |
| 后续依赖 | 若应用要通过统一入口连接数据库,继续执行 innodb_cluster_router.yml;若还要采集 Router 指标,再执行 router_exporter_install.yml 并注册到 Prometheus |
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="'密码'"
以上 IP 使用 RFC 5737 文档保留地址,仅作为示例,请替换成你的实际主机地址。
3. 关键变量
编辑 mysql_ansible/playbooks/common_config.yml:
db_type: mysql
mysql_version: "8.4.9"
mysql_port: 3307
fcs_allow_dbbot_default_passwd: true
如果你暂时沿用 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或9.7.x二进制包 - 与
mysql_version匹配的 MySQL Shell 安装包,或允许控制节点自动下载
如果你使用离线包,请放到 mysql_ansible/downloads/。
如果你把离线包放到自定义目录,请同步修改 mysql_ansible/playbooks/common_config.yml 中的 mysql_packages_dir。
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当前支持 MySQL8.4.x和9.7.x。db_type只能是mysql,不能是percona或greatsql。- 建议先完成基础连通性检查:
ansible dbbot_innodb_cluster -m ping - 如果后续需要应用接入,再继续部署 MySQL Router。详见:MySQL Router 部署说明。