Linux定时备份MySQL数据库脚本
之前记录下了window系统备份远程MySQL数据库的定时备份脚本(想要了解的可以去看看> windows压缩备份MySQL数据库),Linux系统的忘记记录了。这次把它也保存下来。
脚本内容非常简单,主要是利用MySQL的备份系统来做这件事。
#!/bin/bash
mysqldump -hlocalhost -u[username] -p[password] [database] | gzip > /backup/database_$(date +%Y%m%d_%H%M%S).sql.gz
workdir="/backup/"
do_delete()
{
file_name=$(find $workdir -name '*.sql.gz' -and -mtime +7 -type f -print)
echo file name is ${file_name}
find $workdir -name '*.sql.gz' -and -mtime +7 -type f -delete
rc=$?
if [ ${rc} -eq 0 -a "${file_name}" ];then
echo $(date) delete $(basename ${file_name}) SUCCESS!
else
echo $(date) delete ${file_name} FAIL!
fi
}
do_delete
在根目录创建一个backup
文件夹,将脚本放在这个文件夹内,给脚本可执行权限。
下面我们要用到的是Linux的crontab
命令。
crontab
常用参数如下:
-e
编辑工作表-l
列出工作表中的命令r
删除工作表u [username]
操作某用户的工作表,省略则默认是当前用户的工作表
使用crontab -e
编辑工作表,在工作表中加入下面的内容,让脚本每天凌晨3点执行。
0 3 * * * /backup/bakdb.sh
内容的规则如下:
.---------------- 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,fri,sat
| | | | |
* * * * * user-name 指定其他用户调度,如果不需要则不指定
*
表示每年每月每天每时每分都执行该任务。
任务添加好了之后可以将crond
服务重启:service crond restart
。