MySQL

dbbot 提供面向 MySQL 生态的部署、备份和常用运维 Playbook。本页用于说明各剧本的适用场景、核心变量和执行入口。

执行前准备

在执行任意 MySQL Playbook 前,建议先完成以下准备:

  1. 参考 部署 dbbot 和配置 Ansible 完成控制节点准备。
  2. 参考 dbbot 配置与单机部署演示 配置 inventory/hosts.inicommon_config.yml
  3. 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 当前支持 MySQL 8.0.x8.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.yml
  • ansible-playbook restore_pitr_8.4.yml

11. 部署 keepalived + 主备

keepalived_master_slave.yml 当前不建议用于生产环境。正式 release 不应将其作为推荐架构。

12. 登录

su - mysql
db3306