linux下实现mysql数据库每天自动备份并删除N天前数据

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1、创建shell脚本

注意把以下命令中的DatabaseName换为实际的数据库名称; 
当然,你也可以使用其实的命名规则!

vi bkDatabaseName.sh

我是对备份的数据进行压缩备份所以shell脚本的内容是

#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /opt/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz

find /opt -mtime +10 -name "*.*" -exec rm -rf {} \;

其中username填写你数据库的用户吗 password填写你数据库的密码   DatabaseName 填写你要备份的数据的名称

然后 /opt/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz 表示备份到/opt的目录下 后面就是创建的文件名的时间的正则

语句写法:
find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;

删除N天前数据:
find /opt -mtime +10 -name "*.*" -exec rm -rf {} \;
将/opt目录下所有10天前带"."的文件删除

find:linux的查找命令,用户查找指定条件的文件
/usr/local/backups:想要进行清理的任意目录
-mtime:标准语句写法
+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件
"*.*":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三
-exec:固定写法
rm -rf:强制删除文件,包括目录
{} \; :固定写法,一对大括号+空格+\+;

注意:

需要在linux下使用vi命令进行编辑shell脚本,如果在windows下直接创建然后上传的话由于内部的格式不同,会导致从windows上传的shell脚本在linux下执行的时候不可用.

2、cd到shell脚本的路劲下,给shell脚本添加可执行权限

chmod u+x bkDatabaseName.sh

添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用;

./bkDatabaseName.sh

3、添加计划任务

检测或安装 crontab

确认crontab是否安装: 
执行 crontab 命令如果报 command not found,就表明没有安装

# crontab
-bash: crontab: command not found

输入后没有任何反应表示已安装crontab

如时没有安装 crontab,需要先安装它,具体步骤请参考: 
CentOS下使用yum命令安装计划任务程序crontab 
使用rpm命令从CentOS系统盘安装计划任务程序crontab

添加计划任务

执行命令:

crontab -e

这时就像使用vi编辑器一样,可以对计划任务进行编辑。 
输入以下内容并保存:

*/1 * * * * /opt/bkDatabaseName.sh

具体是什么意思呢? 
意思是每一分钟执行一次shell脚本“/opt/bkDatabaseName.sh”

时间的格式是

分 时 日 月 周

此时定时任务已创建成功。

附加:

.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
表示解压缩:FileName.gz文件  解压完之后压缩文件会消失 

 

转载于:https://my.oschina.net/zrz1992/blog/1572631

你可能感兴趣的:(linux下实现mysql数据库每天自动备份并删除N天前数据)