2010年1月4日

定期備份mysql資料庫

很久前就想做這件事了過程中也參考了一些文件,但很多都不是以ubuntu為基底的做法,今天終於有了一點成果我的做法是這樣滴
  1. 修改現成的 shell script 備份檔。
  2. 藉由 crontab 定期執行。編輯 /etc/crontab 在最後加上自已的定時指令如:
  3. 3 3 * * * root  /home/alex/back/back.sh 每早3點3分執行備份指令
  4. 配合 dropbox 將備份檔案同步到其他電腦上。
  5. 搭配指令稿中的dropbox stop及dropbox start就可以在不登入Xwindows的狀況下同步檔案到他部電腦。
其中的 shell script 就讓我搞了好久,網路上紀老大的那份指令稿可能是原先編碼的關係,只要執行到有中文的行號就會有錯誤訊息,火起來自已重KEY一次總可以吧!總算是乖乖聽話了吧! 另外在 shell script 中第一行的部份 ubuntu 預設的 shell 是 bash,原檔案中的 #!/bin/sh 似乎無法運作,我特別將他改為 #!/bin/bash。

以下修改過的備份指令,back.sh
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
ZIP_PATH="/home/alex/Dropbox/Backup" ## 壓縮後檔案放到何處
pre_SQL="ALL_DB"                     ## 設定檔案名首碼前部分 ##
pre_HTM="PHP"                        ## 設定檔案名首碼前部分 ##

HTM_PATH="/var/www"                  ## 網頁存放處
SQL_PATH="/var/lib/mysql"            ## 資料庫存放處

/etc/init.d/apache2 stop             ## 停止apache
/etc/init.d/mysql stop               ## 停止資料庫 
dropbox stop                         ## 停止dropbox
TTIME=`date "+%Y%m%d_%H%M%S"`
## 結果會變成 年月日_時分秒
############### 偵測目錄是否存在 ###############
if [ -d $ZIP_PATH ] ; then
    echo "此目錄存在"
else
    mkdir $ZIP_PATH
fi
############### 備份資料庫 ###############
cd $SQL_PATH
cd ..
tar cvzf $ZIP_PATH/${pre_SQL}_${TTIME}.tar.gz mysql
#############################################
sleep 3
dropbox start 
/etc/init.d/mysql start
/etc/init.d/apache2 start

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。