话说我的博客也是运行在vps主机上的啊,哈哈
几年之前,辛辛苦苦写了很久的博客内容因为一次事故全部没有了,很是痛心,有了那次教训之后,意识到了数据的重要性,以前会定期的手动去数据库把数据导出,累了,写个脚本解决下吧,说到linux系统定时任务,就不得不说crontab啦,太复杂的不说,简简单单备份下数据库还不是分分钟的事情啊哈哈
[url href=http://mahongfei.com/1460.html]crontab介绍[/url]
好了,说正事,其实就是写个备份脚本,然后让这个脚本定期执行就可以了,思路非常简单,当然写起来更是简单哈哈
直接上代码,不罗嗦:
-
- #!/bin/bash
-
- ################################
-
- # 程序名称:mysql_backup.sh
-
- # 程序功能:定期备份mysql数据库
-
- # 参数信息:
-
- # 创建信息:2018-01-25 by mhf
-
- # 修改信息:
-
- ################################
-
- startTime=`date +%H:%M:%S`
-
- #设置mysql备份目录
-
- backup_dir=/data/backup
-
- echo $backup_dir
-
- cd $backup_dir
-
- #建立备份日期为名字的文件夹
-
- backup_time=`date +%Y%m%d`
-
- echo $backup_time
-
- rm -rf $backup_time
-
- mkdir $backup_time
-
- cd $backup_time
-
- #数据库服务器配置
-
- host='localhost'
-
- user='root'
-
- password='xxxxxxxxx'
-
- #设置数据保留多少天
-
- days=7
-
- for db in aaa bbb ccc ;do
-
- #循环数据库进行备份
-
- mysqldump -h$host -u$user -p$password $db |gzip >${backup_dir}/${backup_time}/${db}.backup.sql.gz
-
- done
-
- cd ..
-
- day=`date -d "$days days ago" +%Y%m%d`
-
- echo $day
-
- rm -rf $day
-
- #结束
-
- endTime=`date +%H:%M:%S`
-
- sT=`date +%s -d$startTime`
-
- eT=`date +%s -d$endTime`
-
- let useTime=`expr $eT - $sT`
-
- echo "
-
- Run `basename $0` ok !
-
- startTime = $startTime
-
- endTime = $endTime
- useTime = $useTime(s)!"
说明:for循环中的aaa,bbb和ccc是数据库的名字,因为我把每个数据库都被封了,所以写在了for循环里面
好了脚本写完了,接下来就是配置定时任务啦,需要配置crontab
假设上述文件位置为/data/backup/mysql_backup.sh
按照以下命令配置crontab
0 3 * * * /data/backup/mysql_backup.sh > /dev/null 2>&1 &
意思每天的半夜3点执行此脚本并且忽略日志输出。
/dev/null 2>&1 &
作用是忽略日志输出,主要是因为我懒的删除日志,最好是有输出日志,以后出问题了方便查询嘛
编辑完了保存退出即可!
配置完毕之后,通过命令
crontab -l
查看crontab的配置情况。
可以看到编写的脚本已经在定时任务列表里面了。
over
暂无评论
要发表评论,您必须先 登录