在参与本公司的项目时,因为需要每天定时备份数据库,并把备份传送到备份机上,为此我使用Ansible和XtraBackup编写了一个数据库自动化物理热备份工具。本文简要分享一下其中全量备份部分的内容。
逻辑架构
下图是备份的逻辑架构,控制机即备份机,目标mysql数据库是所要备份的数据库服务器。两台机器的操作系统都是CENTOS7。控制机定时触发备份程序,备份程序在目标mysql数据库服务器上执行备份操作,并把备份数据回传到控制机。
备份工具选择
数据库mysql有自己的备份工具mysqldump,但该工具只能对mysql数据库做逻辑备份,备份过程长,备份期间锁表,生成的备份是文本文件,占用磁盘空间大,对系统运维的影响较大。Xtrabackup是免费开源的MySQL物理热备份工具,它的特点如下:
·备份快速可靠
·备份期间不中断数据库事务
·节约磁盘空间和网络带宽
·自动校验备份
·恢复备份快
为了不影响系统运维,项目采用了Xtrabackup。
自动化工具选择
当前流行的自动化运维工具有Chef,Puppet,Ansible等。前两种工具需要安装代理服务软件(Agent),但Ansible不需要,目标机器只要启动了sshd服务即可,安装和维护过程比较简单。考虑到对它们的熟练程度,项目采用Ansible作为自动化运维工具。从技术角度看,使用SHELL也可以胜任备份工作,但需要编写较多代码,维护成本高。
定时任务工具选择
控制机的操作系统是CentOS7,选择操作系统自带的crontab作为定时任务工具,触发备份程序。
备份回传工具选择
MySQL数据库备份完成后,备份数据需要被传回到控制机。从功能上看,SSH的scp,sftp命令可以完成传送任务,但所传送文件的属主和属组,修改时间等一些元数据信息会丢失,需要配合使用命令tar,打包后再传送,所传送文件的元数据信息才能被保留。本项目使用rsysc作为备份数据的同步工具,它不仅完好地保存了备份数据的属主、属组,修改时间等元数据信息,还可以比较源和目标文件的修改时间戳或校验和来决定是否需要同步到目标机器上。
本项目采用rsync作为备份回传工具。Ansible的synchronize模块将调用rsync命令,并自动压缩传输的数据。
领取专属 10元无门槛券
私享最新 技术干货