在对数据库进行运维的时候,有的时候需要经常备份数据库中的数据中,今天分享一个实例吧!
为了便于演示,我将时间缩小了,然后定义如下的案例:每1分钟对数据库的test库进行备份并进行压缩,并删除3分钟前备份的文件。
-
1、编写Shell脚本
创建bak.sh脚本,获取3分钟前的时间点和当前时间,然后使用mysqldump工具导出数据,进入/data目录,将导出的文件进行压缩,删除导出的文件,如果压缩的文件是3分钟前备份的,就删除之。
#!/bin/bash
old=`date -d '-3 minute' +%Y%m%d%H%M`
tod=`date +%Y%m%d%H%M`
/usr/local/mysql/bin/mysqldump -uroot -p1234 -B test > /data/test.sql
cd /data
tar zcf /data/$tod.tar.gz test.sql
rm -rf /data/test.sql
if [ -f /data/$old.tar.gz ]
then
rm -rf /data/$old.tar.gz
fi
- 2、设置定时任务
众所周知,在Linux中设置定时任务为crontab。
使用下面命令进入任务编辑模式:
[root@VM_202_250_centos data]# crontab -e
定义如下的一行:
*/1 * * * * /bin/bash /data/bak.sh > /dev/null 2>&1
意思:每1分钟执行/data/bak.sh脚本文件
执行结果:
[root@VM_202_250_centos data]# ll
total 16
-rw-r--r-- 1 root root 612 Jan 22 20:15 201701222015.tar.gz
-rw-r--r-- 1 root root 614 Jan 22 20:16 201701222016.tar.gz
-rw-r--r-- 1 root root 613 Jan 22 20:17 201701222017.tar.gz
-rw-r--r-- 1 root root 275 Jan 22 18:13 bak.sh