linux crontab 备份,mysql定时备份,定时删除N天前的老备份数据
发布时间:2018-04-30作者:laosun阅读(1995)
linux定时备份mysql,并且定时删除N天前的老备份数据。下面来看制作备份的方法
首先,我们找个目录创建sh可执行文件。博主是在root下创建的备份文件[root@iZ255gji7lwZ ~]# cd /root/
[root@iZ255gji7lwZ ~]# vim mysql_backup.sh #创建新sh文件
[root@iZ255gji7lwZ ~]# chmod 774 mysql_backup.sh #增加可执行权限
mysql_backup.sh 内容为:
#执行备份操作
username=xxxxxxx
password=xxxxxxx
date=`date +%Y%m%d`
dbname=d_sunjs
/usr/local/mysql/bin/mysqldump -u $username -p$password $dbname > /mnt/work/databases/d_sunjs_$date.sql
#删除2天前的备份,+2表示2天前的数据
rm -rf $(find /mnt/work/databases/ -mtime +2 -name "*.sql")
我们来运行一下
[root@iZ255gji7lwZ ~]# ./mysql_backup.sh
去/mnt/work/databases目录下看有没有,如果有则备份成功。
下边我们来测试删除的成功与否,为了方便测试,这里我们需要修改一下文件的创建的日期
[root@iZ255gji7lwZ databases]# ll
总用量 747020
-rw-r--r-- 1 root root 4月 27 20:43 d_sunjs_20180427.sql
-rw-r--r-- 1 root root 4月 28 20:43 d_sunjs_20180428.sql
-rw-r--r-- 1 root root 4月 30 20:43 d_sunjs_20180430.sql
我已经修改了27和28这两个文件的创建日期以及名字(为了方便识别)。
[root@iZ255gji7lwZ databases]# mv d_sunjs_20180430.sql d_sunjs_20180429.sql #修改文件名
[root@iZ255gji7lwZ databases]# touch -d "1 days ago" d_sunjs_20180429.sql #修改文件的创建日期
[root@iZ255gji7lwZ databases]# ll
总用量 747020
-rw-r--r-- 1 root root 4月 27 20:43 d_sunjs_20180427.sql
-rw-r--r-- 1 root root 4月 28 20:43 d_sunjs_20180428.sql
-rw-r--r-- 1 root root 4月 29 20:53 d_sunjs_20180429.sql
下边我们再来执行一遍备份
[root@iZ255gji7lwZ databases]# . /root/mysql_backup.sh
Warning: Using a password on the command line interface can be insecure.
[root@iZ255gji7lwZ databases]# ll
总用量 747020
-rw-r--r-- 1 root root 4月 28 20:43 d_sunjs_20180428.sql
-rw-r--r-- 1 root root 4月 29 20:53 d_sunjs_20180429.sql
-rw-r--r-- 1 root root 4月 30 20:55 d_sunjs_20180430.sql
看上边是已经把27号的备份给删除了,并且新增加了备份30.sql,测试成功!!!
增加定时器
[root@iZ255gji7lwZ databases]# vim /etc/crontab
[root@iZ255gji7lwZ databases]# . /root/mysql_backup.sh
Warning: Using a password on the command line interface can be insecure.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,ff
ri,sat
# | | | | |
# * * * * * user-name command to be executed
#上边是默认的文件内容
#我们来增加我们自己的定时器
* 1 * * * root /root/mysql_backup.sh #新增每天凌晨1点进行备份。保存退出
重启一下crontab
[root@iZ255gji7lwZ databases]# /etc/rc.d/init.d/crond restart
停止 crond: [确定]
正在启动 crond: [确定]
或者使用systemct1来重新加载
systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
[root@laosun ~]# systemctl restart crond
2 +1
版权声明
发表评论
请文明留言
发表
共 0 条评论