实现方法:crontab + shell script + mysqldump (以下在CentOS 6.6下测试通过)
1. mysqldump 命令实现备份某一数据库:
mysqldump -uusername -ppassword dbname | gzip > /var/lib/mysqlbackup/dbname-`date +%Y-%m-%d_%H%M%S`.sql.gz //生成sql文件并压缩成gz文件,数据库数据量很大时,会有些慢
2. 将备份命令写进脚本:
vi backup.sh
#/bin/sh
starttime=`date +%s`
mysqldump -uxxx -pxxx dbname1 | gzip > /var/lib/mysqlbackup/dbname1-`date +%Y-%m-%d_%H%M%S`.sql.gz
mysqldump -uxxx -pxxx dbname2 | gzip > /var/lib/mysqlbackup/dbname2-`date +%Y-%m-%d_%H%M%S`.sql.gz
endtime=`date +%s`
time=$(($endtime - $starttime)) //shell 脚本注意,这里一定要两层括号。
echo 'Done. Cost' $time seconds
cd /var/lib/mysqlbackup
rm -rf `find . -name '*.sql.gz' -mtime +1` //保留1天的备份文件,即删除一天前的备份文件,防止备份文件积累较多,占用系统磁盘空间。+1表示一天前的,-1表示一天内的,1,表示一天的。详见鸟哥Linux书中find命令的讲解
3. 将脚本的执行加入crontab
10 0 * * * sh /var/lib/mysqlbackup/mysqlbackup.sh >> /var/lib/mysqlbackup/log.txt 2>&1
//每天的0点10分进行备份