发布时间:2018-04-30作者:laosun阅读(2695)
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
版权属于: 技术客
原文地址: https://www.sunjs.com/article/detail/75cfba90a850402ab96e97d6e38a6bb4.html
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。