天天看點

mysql資料庫的全量備份

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/