實現方法: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分進行備份