mysql資料庫的全量備份,包括資料和結構。儲存最新的10次備份。
建立備份主目錄
mkdir /backup
一:編寫腳步檔案mysql_backup.sh
#!/bin/sh
# mysql_backup.sh: 備份mysql資料資訊,并且隻保留最新的10份.
#資料庫使用者名
db_user="root"
#資料庫密碼
db_passwd="imsuser"
#資料庫ip
db_host="localhost"
#資料庫名
db_name="ims"
#資料庫備份資訊儲存位置.
backup_dir="/backup/mysqldata"
#檔案儲存日期格式 (dd-mm-yyyy)
time="$(date +"%d-%m-%y")"
# mysql, mysqldump所在目錄,不同的安裝會有不同目錄
#如果隻對資料進行備份,可以不用填寫
mysql="/usr/local/mysql/bin/mysql"
mysqldump="/usr/local/mysql/bin/mysqldump"
mkdir="/bin/mkdir"
rm="/bin/rm"
mv="/bin/mv"
gzip="/bin/gzip"
#檢查備份目錄 不存在進行存儲主目錄建立
# 檢查備份目錄 不存在進行存儲副目錄建立
test ! -d "$backup_dir/backup.0/" && $mkdir "$backup_dir/backup.0/"
#all_db="$($mysql -u $db_user -h $db_host -p$db_passwd -bse 'show databases')"
#for db in $all_db
#do
$mysqldump -u $db_user -h $db_host -p$db_passwd $db_name | $gzip -9 > "$backup_dir/backup.0/$time.$db_name.gz"
#done
# 删除舊的備份資訊
test -d "$backup_dir/backup.10/" && $rm -rf "$backup_dir/backup.10"
# rotate backup directory
for int in 9 8 7 6 5 4 3 2 1 0
do
if(test -d "$backup_dir"/backup."$int")
then
next_int=`expr $int + 1`
$mv "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int"
fi
done
exit 0;
二:賦予腳步可執行權限
chmod +x mysql_backup.sh
三:添加定時執行計劃
vi /etc/crontab
添加:00 5 * * * root /backup/mysql_backup.sh 每日5點鐘備份一次資料庫
最新内容請見作者的github頁:http://qaseven.github.io/