巧用 Ansible 实现 MySQL 备份,运维看过来
本文以容器形式部署了开源自动化运维工具 Ansible,基于自带的 MySQL 管理模块编排了 playbook 配置文件,最终实现 MySQL
数据库备份的目标。选择容器而非直接安装的部署形式,可以避免对系统环境的污染,使运维工作开展更加高效和灵活。
MySQL
数据库备份技术和相关方案已经非常成熟,本文不做赘述和展开。在实际场景中,数据库不可能脱离业务单独存在;因此对于备份等运维操作来说,应当在运维平台统一的调度下发起或实施,Ansible
作为近年来流行的自动化运维工具,可以定位于运维平台的核心来使用。
Ansible简介
关于 Ansible 的介绍,公开渠道可以查阅到大量资料,公众号此前也有文章专门介绍,本文不再浪费篇幅铺开。简单来说,Ansible
是一个基于Python语言开发的运维工具,由于没有客户端依赖,在管理成本方面较其他产品有显著优势;Ansible
基于模块工作,通过系统自带、客户编写、和第三方模块,可以满足各种管理任务,本文使用 mysql_db 数据库模块实现了备份功能。
环境准备
笔者对红帽系统比较熟悉,原本想直接通过 yum 命令安装 ansible,但是从实际工作角度出发,一方面要维护非联网环境中 yum 源,另一方面
ansible 需要连带安装大量依赖包,易对系统造成“污染”,因此并不推荐 yum 直接安装。根据 Ansible 的官方文档,使用 mysql_db
模块需要安装 MySQL 客户端和其他一些工具,这些对于操作系统本身也非必要。基于以上考虑,笔者最终采用构建自定义 docker 镜像的方式部署
Ansible。除了克服以上弊端外,镜像制作完成后可以方便地移植到任意安装 docker 的环境中,无需兼顾环境因素。本文使用 debian11
的官方镜像作为底座和中科大的软件源,Dockerfile 文件定义如下:
FROM debian:latest
RUN sed -i s/deb.debian.org/mirrors.ustc.edu.cn/g /etc/apt/sources.list \