1. 程式人生 > 其它 >mysql 自動化資料備份_mysql自動化備份及恢復

mysql 自動化資料備份_mysql自動化備份及恢復

技術標籤:mysql 自動化資料備份

#========================start shell 指令碼============================

02.#!/bin/bash

03.

04.#定義有備份的資料庫名

05.dbname=****

06.

07.#定義備份資料庫時使用的使用者名稱和密碼

08.dbuser=****

09.dbpasswd=****

10.#資料庫備份的路徑

11.backuppath=/root/backup/mysql/

12.

13.#資料庫備份日誌檔案儲存的路徑

14.logfile=/root/backup/log/mysql.log

15.

16.#以當前的時間作為備份的資料庫命名。

17.dumpfile=$(date +%y%m%d%H%M)

18.

19.#這個函式用來備份資料庫

20.back_db() {

21.#將備份的時間、資料庫名存入日誌

22.echo "------"$(date +%Y-%m-%d%t%A%t%T)" Beginning database "${dbname}" backup--------" >>${logfile}

23.

24.#備份資料庫,如果有錯誤資訊也記入日誌。預設utf8編碼

25.#--skip-opt (mysql服務執行時備份,請加此引數,防止表損壞,mysqldump可選引數)

26.#--quick --force --routines --add-drop-database --add-drop-table (儲存過程也會一起備份,mysqldump可選引數)

27./usr/bin/mysqldump --skip-opt -u${dbuser} -p${dbpasswd} --default-character-set=utf8 --quick --force --routines --add-drop-database --add-drop-table ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}

28.

29.#開始壓縮資料檔案

30.echo $(date +%Y-%m-%d%t%A%t%T)" Beginning zip ${backuppath}${dumpfile}.sql" >>${logfile}

31.

32.#將備份資料庫檔案庫壓成ZIP檔案,並刪除先前的SQL檔案。如果有錯誤資訊也記入日誌。

33.tar zcvf ${dumpfile}.tar.gz ${dumpfile}.sql && rm ${dumpfile}.sql 2>> ${logfile}

34.

35.#將壓縮後的檔名存入日誌。

36.echo "backup file name:"${dumpfile}".tar.gz" >>${logfile}

37.echo -e "-------"$(date +%Y-%m-%d%t%A%t%T)" Ending database "${dbname}" backup-------\n" >>${logfile}

38.}

39.

40.#傳送郵件

41.#cat ${logfile} | mutt -s "Blog資料庫備份" -a ${dumpfile}.tar.gz [email protected] }

42.

43.#這個函式用來刪除90天前的資料,注意,這個指令碼會刪除當前目錄下所有的早於七天前的檔案

44.rm_oldfile() {

45.#查找出當前目錄下90天前生成的檔案,並將之刪除

46.find /root/backup/mysql -type f -mtime +90 -exec rm {} \;

47.}

48.

49.#切換到資料庫備份的目錄。如果不做這個操作,壓縮檔案時有可能會錯誤

50.cd ${backuppath}

51.

52.#執行備份資料函式

53.back_db

54.

55.#執行刪除檔案函式

56.rm_oldfile

57.

58.#====================end shell 指令碼======================恢復

1. 恢復備份的資料庫

注:資料庫備份為"年份日期時間.tar.gz"的壓縮檔案,解壓後為sql檔案。如:201206271633.tar.gz :代表2012年06月27日16點33分.tar.gz

#1 winscp 登陸mysql伺服器 取出/root/backup/mysql/下的最後備份的.tar.gz

#2 解壓

#3 使用資料庫管理工具navicat 新建一個“資料庫”,然後開啟,右鍵“表”,彈出選單選

擇“執行批次任務檔案”匯入sql檔案,選擇utf8編碼,執行即可還原表結構資料(預設utf8編碼)。

#test資料庫為測試資料庫,隨便匯入測試

上面的指令碼可能因為多餘空格之類的原因無法執行,附上指令碼下載連結:

點選開啟連結

******************************************************

如果備份失敗,可能是由於目錄不可寫造成的

mysql是以mysql使用者身份執行的,對/root/backup/mysql不可寫也會失敗

chmod 777 /root/backup/mysql 嘗試能否解決問題