原文地址:
http://www.niu12.com/article/1
就在前两天,在玩docker的时候,才疏学浅,把服务器的数据库全删了,经过这两天的整理,
个人项目也都恢复正常了,但是数据都没有了。
倒不觉得是件坏事,吃亏还是要趁早吧。这不,赶紧弄了每天数据库备份和阿里云快照,
幸亏是私人的,如果是公司项目的话,可能真的就FF了。
也不是没有学到东西,现在就吧mysql在linux下的定时备份写一下,
也算是对以前不足的知识点进行补充。
首先是要对定时任务的知识补充。
1.定时任务crontab的安装与启动相关
service crond start // 启动服务
service crond stop // 关闭服务
service crond restart // 重启服务
service crond reload // 重新载入配置
service crond status // crontab服务状态
2.crond -e 进入定时任务
crond -l 查看该用户下的crontab服务是否创建成功
查看服务是否已经运行用 ps -ax | grep cron
3.定时任务的格式
crontab 格式:
基本格式 :
分钟 小时 日 月 星期 命令
* * * * * *
第1列表示分钟1~59 每分钟用*或者 */1表示 每5分钟用*或者 */5表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
crontab文件的一些例子:
(1) 30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache
(2)45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache
(3)10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
(4)*/2 * * * * /bin/sh /deleteFile.sh
上面的例子表示每两分钟执行deleteFile.sh这个脚本
4.mysql数据备份
crontab -e
(1)0 0 * * * /usr/bin/sh /usr/local/crontab_script/mysql_blog_backup.sh
>> /usr/local/crontab_script/mysql_blog_backup.log
上面的例子表示每天零点通过/usr/bin/sh命令
执行/usr/local/crontab_script/mysql_blog_backup.sh脚本,
并将日志输入到/usr/local/crontab_script/mysql_blog_backup.log日志文件中
(2)/usr/local/crontab_script/mysql_blog_backup.sh脚本文件
# Name:test_database_backup.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#备份地址
backupdir=/applications/data/backup/mysql/blog
#备份文件后缀时间
time=_` date +%Y_%m_%d_%H_%M_%S `
#需要备份的数据库名称
db_name=blog
#mysqldump命令使用绝对路径
/usr/bin/mysqldump $db_name | gzip > $backupdir/$db_name$time.sql.gz
#删除7天之前的备份文件
find $backupdir -name $db_name"*.sql.gz" -type f -mtime +7 -exec rm -rf {} ;
> /dev/null 2>&1
(3)在上面的脚本文件中并没有写入数据库用户名和密码,所以需要
vim /etc/my.cnf
[mysqldump]
quick
max_allowed_packet = 16M
#在这里输入user及password,在执行mysqldump命令就不用输入用户名和密码了
user=root
password=123456
(4)执行service crond restart即可