linux定时备份MySQL数据库循环删除前30天的备份文件
一、 检查有没安装crond,如果没有,先安装
1、先检查一下有没有cron
rpm -qa|grep cron
如果输入上面命令有如下显示,则不需要安装
2、没有安装的话,就使用一下命令安装
yum -y install vixie-cron
然后再
yum -y install crontabs
这样服务就安装好了。
二、写备份脚本
1、先创建一个备份的文件夹 mysqlback
mkdir /mysqlback
1、 书写备份脚本
vi /mysqlback/bkDatabasedrss.sh
3、将内容复制到里面
#!/bin/bash
# Name:bkDatabasedrss.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
backupdir=/mysqlback/databack
time=` date +%Y%m%d_%H%M%S`
/usr/local/mysql/bin/mysqldump -uroot -p123456 drss | gzip > $backupdir/drss_$time.sql.gz
find $backupdir/ -name "drss_*.sql.gz" -type f -mtime +30 -exec rm {} \; > /dev/null 2>&1
注释:
· backupdir是sql备份文件的文件夹
· -u root就是数据库用户是root 然后 - p123456a就是数据库密码是123456 然后test是数据库名,后面$都是引用前面声明,
· $time.sql这是创建sql文件,find就是找文件
· $backupdir后面必须要有/ 不然找不到
· 然后-name这些就找文件名了
· -mtime +7是每隔7天删除一次
· mtime +30是每隔30天删除一次
如果是 -mmin +7 表示文件更改时间距现在7分钟以前。
-exec rm {} ; 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号。
/dev/null 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的&表示让该命令在后台执行。
三、为脚本添加执行权限
chmod +x /mysqlback/bkDatabasedrss.sh
执行以下语句可以直接运行进行验证自己的脚本是否正确
./bkDatabasedrss.sh
四、添加定时任务
vi /etc/crontab
就是添加定时任务来定时执行脚本文件,这里也是vi的编辑命令,所以添加有点麻烦,加上一句(每天定时14点备份)
00 14 * * * root /mysqlback/bkDatabasedrss.sh
五、重启crontab
service crond restart
最后这一步很重要,一定得重启一下。不然不生效。!!!!