MySQL
dbbot 提供面向 MySQL 生态的部署、备份和常用运维 Playbook。本页用于说明各剧本的适用场景、核心变量和执行入口。
执行前准备
在执行任意 MySQL Playbook 前,建议先完成以下准备:
- 参考 部署 dbbot 和配置 Ansible 完成控制节点准备。
- 参考 dbbot 配置与单机部署演示 配置
inventory/hosts.ini与common_config.yml。 - 在
playbooks/目录执行连通性检查:ansible dbbot_mysql -m ping。
1. 部署单机
单机部署的完整示例见:dbbot 配置与单机部署演示。
ansible-playbook single_node.yml
2. 部署主从
一主两从的完整示例见:MySQL 部署快速开始。
| 参数值 | 类型 | 解释 |
|---|---|---|
master_ip | 字符串 | 主库 IP 地址 |
slave_ips | 字符串列表 | 从库 IP 地址列表 |
sub_nets | 字符串 | MySQL 可信网段、可信域或可信 IP |
ansible-playbook master_slave.yml
3. 部署 MHA
MHA 的支持边界与变量说明见:MySQL MHA 部署说明。
| 参数值 | 类型 | 解释 |
|---|---|---|
master_ip | 字符串 | 主库 IP 地址 |
slave_ips | 字符串列表 | 从库 IP 地址列表 |
sub_nets | 字符串 | MySQL 可信网段、可信域或可信 IP |
manager_ip | 字符串 | MHA manager 所在节点,不能与 master_ip 相同 |
net_work_interface | 字符串 | 绑定 VIP 的网卡名 |
vip | 字符串 | VIP 地址 |
vip_netmask | 字符串 | VIP netmask,常用值为 32 |
ansible-playbook mha.yml
dbbot 同时支持传统三机 MHA 和双机 MHA。
4. 部署 MGR
| 参数值 | 类型 | 解释 |
|---|---|---|
mysql_binlog_format | 字符串 | MGR 必须使用 row,此变量用于覆盖通用配置 |
mysql_mgr_hosts | 字符串列表 | MGR 成员 IP 列表,默认按第一个 IP 设为 primary |
sub_nets | 字符串 | MySQL 可信网段、可信域或可信 IP |
greatsql_vip | 字符串 | GreatSQL HA 的 VIP,仅 GreatSQL HA 场景生效 |
greatsql_net_work_interface | 字符串 | GreatSQL HA 绑定 VIP 的网卡名 |
greatsql_netmask | 字符串 | GreatSQL HA 使用的 netmask,常用值为 32 |
greatsql_group_replication_arbitrator | 布尔 | 是否开启仲裁节点 |
greatsql_group_replication_arbitrator_hosts | 字符串列表 | 仲裁节点列表 |
ansible-playbook mgr.yml
说明:
- 部署结果默认为单主模式。
mgr.yml当前支持 MySQL8.0.x和8.4.x。mgr_use_random_uuid: 1时,8.0、8.4 模板会自动生成并下发新的group_replication_group_name。- 多主模式不建议作为默认部署模式,如确有需要,请在验证后手工切换。
5. 部署 InnoDB Cluster
InnoDB Cluster 的完整说明见:MySQL InnoDB Cluster 部署说明。
ansible-playbook innodb_cluster.yml
6. 部署 xtrabackup
install_xtrabackup.yml 仅面向 MySQL 5.7 物理备份。
ansible-playbook install_xtrabackup.yml
说明:
- dbbot 会按目标操作系统选择内置 RPM。
- EL7 类系统使用
percona-xtrabackup-24-2.4.26-1.el7.x86_64.rpm。 - EL8 类系统使用
percona-xtrabackup-24-2.4.28-1.el8.x86_64.rpm。
7. 部署 mysqlshell
ansible-playbook install_mysqlshell.yml
建议:
- 优先部署
8.0+的 mysqlshell。 - mysqlshell 版本向下兼容,可用于管理 MySQL 5.7。
8. 卸载 MySQL
ansible-playbook unsafe_uninstall.yml
unsafe_uninstall.yml 只会删除目标实例的数据目录、日志目录和 systemd 服务,不会清理整套软件基目录。
9. 部署 5.7 备份脚本
ansible-playbook backup_script.yml
说明:
- 仅支持 MySQL
5.7。 - 剧本会同时执行 xtrabackup 安装和备份脚本部署。
- 备份脚本默认生成在
{{ mysql_data_dir_base }}/backup{{ mysql_port }}.sh。 - 定时任务写入
mysql用户 crontab,不写入/etc/cron.d/。 - 默认 cron 为每天
02:00。 - 支持物理全备、binlog 归档、
my.cnf归档和简单保留策略。 - 建议手工执行时使用
mysql用户,例如su - mysql -c "sh /database/mysql/backup3310.sh"。
10. MySQL 8.4 备份与恢复
MySQL 8.4 使用 clone 备份与 PITR 恢复链路,详见:MySQL 8.4 备份与恢复。
涉及剧本:
ansible-playbook backup_script_8.4.ymlansible-playbook restore_pitr_8.4.yml
11. 部署 keepalived + 主备
keepalived_master_slave.yml 当前不建议用于生产环境。正式 release 不应将其作为推荐架构。
12. 登录
su - mysql
db3306