centOS下数据库自动备份及清理备份sql

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40169665/article/details/79624504

要自动备份mysql一般是通过mysqldump来执行的,下面用到的命令会有mysqldump、date、find、rm

先上完整shell script


mysqldump -uroot -pyourpassword database_name >>/your/path/$(date +%Y_%m_%d)_$(date +%s).sql;

/usr/bin/find /your/path/ -mtime +7  -exec rm -rf {} \; ;

(注意:执行多个shell脚本要以分号作为分隔符!命令最好要写全路径,否则系统会找不到命令从而导致执行失败,例如我要补全find的路径但是我不清楚全路径是什么,那就先在linux用 which find 找出find的全路径)

其中红色字体的部分需填写你自己的数据库账号、密码、数据库名称、备份路径,如我有一个名为test的数据库需要备份,账号为root,密码为123456,则:

mysqldump -uroot -p123456 test >> /backup/test/$(date +%Y_%m_%d)_$(date +%s).sql;

find /backup/test/ -mtime +7  -exec rm -rf {} \;

这里我用的结构为根目录下创建一个backup文件夹,该文件夹下创建需要备份的数据库名称,然后直接以日期作为sql语句的命名,自动清理超过七天的sql语句。

语句写好后保存,如我保存为test.sh,保存到backup文件目录下

然后用crontab定时器设置任务

执行命令:crontab -e 

定时器的编写操作是跟vi操作一样的,按a添加

crontab前五个时间参数分别为:minute    hour    dayOfMonth month dayOfWeek

需要注意的是第五个参数是0-6,0代表周日

如我想每天的十二点定时备份,则应写为

00 00 * * * /backup/test.sh    #*为通配符,时间参数后为需要执行的shell命令语句,也可以执行一个.sh文件,这里执行的就是一个sh文件

如果是要每周的星期三的晚上十二点备份,则为:

00 00 * * 3 /backup/test.sh

这样子就完成了数据库的自动备份以及清理过期的sql备份了

测试时可以让定时器每分钟备份一次,看看是否成功

* * * * * /backup/test.sh


猜你喜欢

转载自blog.csdn.net/weixin_40169665/article/details/79624504