数据库定期备份

时间:2022-09-13 22:30:49

在对数据库进行运维的时候,有的时候需要经常备份数据库中的数据中,今天分享一个实例吧!

为了便于演示,我将时间缩小了,然后定义如下的案例:每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