MYSQL數據庫自動本地/異地雙備份/MYSQL增量備份[連載之構建百萬訪問量電子商務網站]

MYSQL數據庫自動本地/異地雙備份/MYSQL增量備份[連載之構建百萬訪問量電子商務網站]
出處: http://jimmyli.blog.51cto.com/ 我站在巨人肩膀上Jimmy Li
做者:Jimmy Li
關鍵詞:網站,電子商務,Shell,自動備份,異地備份
------[連載之電子商務系統架構]訪問量超過100萬的電子商務網站技術架構
鏈接:
http://jimmyli.blog.51cto.com/3190309/676378 訪問量超過100萬的電子商務網站技術架構
構建高安全電子商務網站之(網站文件及數據庫自動本地/異地雙備份)架構圖
 
 
   繼續介紹Linux服務器文件備份,數據庫備份,數據安全存儲相關的電子商務系統架構。針對安全性有多種多樣的解決方案,其中數據備份是重中之重的首要工做。
電子商務網站更加註重考慮數據安全,數據備份方案,包括本地備份、異地備份架構。其中Linux服務器的備份方案很是多,本文介紹一個大衆化適用的解決方案,經過編寫Shell腳原本完成自動備份。本架構包括備份網站文件、數據庫,自動本地備份並FTP上傳備份腳本,完成相應本地備份、異地備份,實現雙層備份解決方案。
 
本文要點:
 
1.MYSQL數據庫自動本地/異地雙備份/MYSQL數據庫增量備份。
2.編寫Shell腳原本完成自動MYSQL備份、MYSQL數據庫增量備份。
3.同時進行自動本地/異地雙備份,FTP上傳備份。
4.Linux服務器的備份解決方案。
5.Shell腳本包括備份網站文件,網站程序文件、數據文件,MYSQL數據庫。
6.按期定時自動完成備份。按期刪除舊備份,這裏是自動刪除30天前備份,複用利用備份空間。
 
目錄:
 
1、準備工做
2、網站運維異地備份方案及故障應急備用鏡像站架構圖
3、網站MYSQL數據庫自動本地/異地雙備份/MYSQL數據庫增量備份Shell腳本,完整的實例;備份腳本進行詳細解說,註釋。
 

在運營中的電子商務網站,建站之初就一直在重申必定要備份好本身的數據,由於太多的不肯定性可能會形成數據庫丟失,並且大部分基礎服務商也不可能提供天天備份數據。原來本BLOG提供過一個備份方法,介紹了Shell腳本MYSQL數據庫自動備份,沒有介紹MYSQL數據庫增量備份。今天分享一個本身的備份腳本。
參考以前的文章
http://jimmyli.blog.51cto.com/3190309/691069 《構建高安全電子商務網站之(網站文件及數據庫自動本地/異地雙備份)[連載之電子商務系統架構]》
 
1、準備工做:
 
Linux服務器安裝好lftp,另外須要提早在Linux服務器上建立/home/backup/ 備份目錄創建。而且保證FTP能正常使用帳戶密碼登錄上次文件。既是保證FTP服務正常提供服務。

2、網站運維異地備份方案及故障應急備用鏡像站架構圖

 

 


3、網站MYSQL數據庫自動本地/異地雙備份/MYSQL數據庫增量備份Shell腳本

 

 

 
腳本二:
MYSQL數據庫增量備份Shell腳本
若是數據庫數據量比較大,能夠一天全備一次, 再每隔一小時增量備份一次;
創建增量備份目錄
增量備份的文件放在/backup/mysql/daily目錄下。
增量備份的數據量比較小,可是要在完整備份的基礎上操做。
 
增量備份使用bin log,腳本以下:
Shell
  1. #!/bin/sh
  2. # mysql data backup script
  3. # use mysqldump --help,get more detail.
  4. #Author: Jimmy Li
  5. #Website: http://jimmyli.blog.51cto.com/
  6. # mysql binlog backup script
  7.  
  8. /usr/bin/mysqladmin flush-logs
  9.  
  10. DATADIR=/var/lib/mysql
  11. BAKDIR=/backup/mysql/daily
  12.  
  13. ###若是mysql bin log你作了特殊設置,請修改此處或者修改應用此變量的行:缺省取機器名,mysql缺省也是取機器名
  14. HOSTNAME=`uname -n`
  15. cd $DATADIR
  16. FILELIST=`cat $HOSTNAME-bin.index`
  17.  
  18. ## COUNTER number
  19. COUNTER=0
  20. for file in $FILELIST
  21. do
  22. COUNTER=`expr $COUNTER + 1 `
  23. done
  24.  
  25. NextNum=0
  26. for file in  $FILELIST
  27. do
  28. base=`basename $file`
  29. NextNum=`expr $NextNum + 1`
  30. if [ $NextNum -eq $COUNTER ]
  31. then
  32. echo "skip lastest"
  33. else
  34. dest=$BAKDIR/$base
  35. if(test -e $dest)
  36. then
  37. echo "skip exist $base"
  38. else
  39. echo "copying $base"
  40. cp $base $BAKDIR
  41. fi
  42. fi
  43. done
  44.  
  45. echo "backup mysql binlog ok"
  46.  

 
 
腳本解析說明:
增量備份腳本是備份前flush-logs,mysql會自動把內存中的日誌放到文件裏,而後生成一個新的日誌文件,因此咱們只須要備份前面的幾個便可,也就是不備份最後一個.
由於從上次備份到本次備份也可能會有多個日誌文件生成,因此要檢測文件,若是已經備份過,就不用備份了.
 
舒適提示、增量備份:
天天中午03點和晚上03點作一次全備,每隔一小時備份binlog,也就是增量備份,具體操做以下:
 
Linux下開啓binlog
 
將腳本放到/root/ 下面,按上面的註釋修改腳本中的參數,使用vim編輯器並保存。
執行:chmod +x /root/backup.sh 爲腳本添加執行權限。
執行:crontab -e 添加定時執行。
在crontab中加入:0 3 * * * /root/backup.sh
凌晨3點自動執行/root/bakcup.sh 腳本,備份Linux服務器上的數據並上傳到預先設定好的異地FTP上。
選擇在凌晨3進行備份,是由於這個時間段網站的訪問量是最低。也就是說在不多人訪問的狀況下作備份操做。
 
出處: http://jimmyli.blog.51cto.com/ Jimmy Li Blog 。歡迎朋友一塊兒交流,討論。扣扣:柒⑥柒陸叄⑤叄伍

 
MYsql Binlog
  1. /etc/my.cnf中的mysqld部分加入:
  2. [mysqld]
  3. log-bin=../logs/mysql-bin
  4. max-binlog-size=512M
  5.  
  6. windows下開啓binlog
  7. %mysql%/my.ini中的mysqld部分加入:
  8. [mysqld]
  9. log-bin =../logs/mysql-bin
  10. max-binlog-size=512M

 

 


腳本一:
網站及數據庫自動本地備份並FTP上傳備份Shell腳本,完整的實例:
========================================================================
 
Shell
  1. #!/bin/bash
  2. #Funciont: Backup website and mysql database
  3. #Author: Jimmy Li
  4. #Website: http://jimmyli.blog.51cto.com/
  5. #IMPORTANT!!!Please Setting the following Values!
  6. Backup_Dir1=/data/wwwroot/jimmyli.jimmyli.jimmyli.blog.51cto.com
  7. MYSQL_UserName=root
  8. MYSQL_PassWord=你的mysql數據庫root密碼
  9. Backup_Database_Name1=jimmyli.jimmyli.jimmyli.blog.51cto.com
  10. FTP_HostName=jimmyli.jimmyli.jimmyli.blog.51cto.com
  11. FTP_UserName=jimmyli.jimmyli.jimmyli.blog.51cto.com
  12. FTP_PassWord=jimmyli.jimmyli.jimmyli.blog.51cto.com
  13. FTP_BackupDir=jimmyli.jimmyli.jimmyli.blog.51cto.com
  14. TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz
  15. TodayDBBackup=db-*-$(date +"%Y%m%d").sql
  16. OldWWWBackup=www-*-$(date -d -30day +"%Y%m%d").tar.gz
  17. OldDBBackup=db-*-$(date -d -30day +"%Y%m%d").sql
  18. tar zcf /home/backup/www-$Backup_Dir1-$(date +"%Y%m%d").tar.gz -C /home/wwwroot/ $Backup_Dir1 --exclude=soft
  19. /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1-$(date +"%Y%m%d").sql
  20. rm $OldWWWBackup
  21. rm $OldDBBackup
  22. cd /home/backup/
  23. lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF
  24. cd $FTP_BackupDir
  25. mrm $OldWWWBackup
  26. mrm $OldDBBackup
  27. mput $TodayWWWBackup
  28. mput $TodayDBBackup
  29. bye
  30. EOF

 
備份腳本進行詳細解說,註釋參考 http://jimmyli.blog.51cto.com/3190309/691069 《構建高安全電子商務網站之(網站文件及數據庫自動本地/異地雙備份)[連載之電子商務系統架構]》
========================================================================
 

 

網站運維異地備份方案及故障應急備用鏡像站
 
按期檢查異地備份故障應急時,啓用應急Web服務
鏈接:http://jimmyli.blog.51cto.com/3190309/584992 網站運維異地備份方案及故障應急備用鏡像站
相關文章
相關標籤/搜索