CentOS下使用crontab+mysqldump实现定时自动备份数据库

发布 : 2019-05-28 分类 : 服务器 浏览 :

编写一个shell脚本,执行备份

我们可以在根目录下编写这么一个脚本 : /serverBack/mysqlBack.sh
脚本内容如下:

1. 方法一

使用mysqldump备份数据库test
mysqldump -uroot -ppasswd test >> /serverBack/dbBack/test_$(date+”%Y_%m_%d”).sql

找到/serverBack/dbBack/下文件名称以test_开头,以 .sql 结尾的文件,并且是7天前系统修改过的文件,将其删除
find /serverBack/dbBack/ -mtime +7 -name “test_*.sql” -exec rm -rf {} \;

2. 方法二

mysqldump -uroot -ppwd dbname > dir/db_date +%F.sql

保留近一周的备份文件,更早的删除
find /dir -mtime +7 -name”db_*.sql” -exec rm -rf {} \;

3. 方法三

filename=’date +%y%m%d’

mysqldump -uroot-proot test >>/serverBack/dbBack/$filename.sql

最完整的shell脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## 记录日志
echo "---------------------------------------------------" >> /serverBack/dbBack/dbBackLog.log
echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup start" >> /serverBack/dbBack/dbBackLog.log
## 开始备份
mysqldump -uroot -ppwd test >> /serverBack/dbBack/test_$(date +"%Y-%m-%d").sql
## $? 判断上一次操作是否成功,备份成功返回0
if [ 0 -eq $? ];then

if [ -f "/serverBack/dbBack/test_$(date +"%Y-%m-%d").sql" ];then
echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup success!" >> /serverBack/dbBack/dbBackLog.log
else
echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup fail!" >> /serverBack/dbBack/dbBackLog.log
fi

else
echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup error!" >> /serverBack/dbBack/dbBackLog.log

fi

echo "---------------------------------------------------" >> /serverBack/dbBack/dbBackLog.log
## 删除七天前的数据,防止数据冗余
find /serverBack/dbBack/ -mtime +7 -name "erms_*.sql" -exec rm -rf {} \;
## find后面的';'不能省略

此时,我们在命令行模式下执行该脚本: sh /serverBack/mysqlBack.sh
此时我们就可以备份数据库了,但是我们还没有实现定时自动备份。赶紧测试一下你能不能备份成功吧!

实现定时自动备份数据库

1
crontab –e ##编辑定时任务

添加定时任务内容:

##每天定时15:00:00 执行脚本 /serverBack/mysqlBack.sh

1
00 15 * * * sh /serverBack/mysqlBack.sh

命令:

1
2
3
crontab –e ##编辑定时任务 
crontab –r 删除所有定时任务
crontab –l 列出所有定时任务

结语

定时备份数据库,可以避免一些安全问题,防止开发中一些意外事故发生,脚本一般采用shell语言编写,有兴趣可以去学习一下Linux的shell脚本语法。

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹