实现方法: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分进行备份