1. 程式人生 > >伺服器備份方案

伺服器備份方案

備份伺服器資料需要考慮的因素(提綱)

1)備份哪些檔案

2)選擇什麼備份的媒介

3)考慮備份的方式

4)備份的頻率

5)備份使用的何種備份工具或軟體

6)如何恢復備份的資料(災難恢復方案)





1.備份內容



1.1 哪些linux資料具有備份的意義

1) 系統檔案:

/etc/ 整個目錄

/home整個目錄

/var/spool/mail

/boot /root

/usr/local/ 或 /opt

2) 伺服器的資料

* 資料設定檔案:

/etc/整個目錄/usr/local/整個目錄

* 系統 www + MySQL:

WWW 資料:/var/www整個目錄或 /srv/www整個目錄,及系統的使用者的目錄

MySQL : /var/lib/mysql整個目錄

* 其他你在 Linux 主機上面提供的資料庫資料檔案



1.2 伺服器資訊收集和需要備份哪些資料。



1)伺服器資訊:


伺服器名(IP地址)
服務資訊
備份的內容(檔案/資料庫/作業系統/應用系統及其服務)

公司內部伺服器
Mail



Helpdesk
http/mysql


Monitor



OnlineBBS
Http/mysql/


Hsphere

伺服器
CP
http/postgreSQL


WEB
Http/FTP/named


Email
http/mail/mysql/named


NFS










2)公司內部伺服器需要備份的檔案和內容

Item
Comment








3)Hsphere 伺服器系統備份檔案和內容

Item
Comment





2.方案設計



2.1網路結構:

伺服器網路結構

2.2 備份儲存目標的選擇:可以是本地磁碟,網路儲存裝置,也可以通過FTP或者軟體異地備份到專門備份資料的伺服器上,選擇的備份儲存目標需考慮三個方面1)速度要求2)儲存容量3)資料的可靠性



2.3.備份的方式主要有三種:完全備份(full back)增量備份(Incremental backup), 差別備份(Differential backup)

1)完全備份(full backup)

每天對自己的系統進行完全備份。例如,星期一用一盤磁帶對整個系統進行備份,星期二再用另一盤磁帶對整個系統進行備份,依此類推。這種備份策略的好處是:當發生資料丟失的災難時,只要用一盤磁帶(即災難發生前一天的備份磁帶),就可以恢復丟失的資料。然而它亦有不足之處,首先,由於每天都對整個系統進行完全備份,造成備份的資料大量重複。這些重複的資料佔用了大量的磁帶空間,這對使用者來說就意味著增加成本。其次,由於需要備份的資料量較大,因此備份所需的時間也就較長。對於那些業務繁忙、備份時間有限的單位來說,選擇這種備份策略是不明智的。

2)增量備份(incremental backup)

星期天進行一次完全備份,然後在接下來的六天裡只對當天新的或被修改過的資料進行備份。這種備份策略的優點是節省了磁帶空間,縮短了備份時間。但它的缺點在於,當災難發生時,資料的恢復比較麻煩。例如,系統在星期三的早晨發生故障,丟失了大量的資料,那麼現在就要將系統恢復到星期二晚上時的狀態。這時系統管理員就要首先找出星期天的那盤完全備份磁帶進行系統恢復,然後再找出星期一的磁帶來恢復星期一的資料,然後找出星期二的磁帶來恢復星期二的資料。很明顯,這種方式很繁瑣。另外,這種備份的可靠性也很差。在這種備份方式下,各盤磁帶間的關係就象鏈子一樣,一環套一環,其中任何一盤磁帶出了問題都會導致整條鏈子脫節。比如在上例中,若星期二的磁帶出了故障,那麼管理員最多隻能將系統恢復到星期一晚上時的狀態。

3)差分備份(differential backup)

管理員先在星期天進行一次系統完全備份,然後在接下來的幾天裡,管理員再將當天所有與星期天不同的資料(新的或修改過的)備份到磁帶上。差分備份策略在避免了以上兩種策略的缺陷的同時,又具有了它們的所有優點。首先,它無需每天都對系統做完全備份,因此備份所需時間短,並節省了磁帶空間,其次,它的災難恢復也很方便。系統管理員只需兩盤磁帶,即星期一磁帶與災難發生前一天的磁帶,就可以將系統恢復。在實際應用中,備份策略通常是以上三種的結合。例如每週一至週六進行一次增量備份或差分備份,每週日進行全備份,每月底進行一次全備份,每年底進行一次全備份。

由此可見,各種備份的資料量是不同的:完全備份>差分備份>增量備份。在恢復資料時需要的備份介質數量也不一樣:如果使用完全備份方式,只需上次的全備份磁帶就可以恢復所有資料;如果使用完全備份+增量備份方式,則需要上次的全備份磁帶+上次完全備份後的所有增量備份磁帶才能恢復所有資料;如果使用完全備份+差分備份方式,只需上次的全備份磁帶+最近的差分備份磁帶就可以恢復所有資料。在備份時要根據它們的特點靈活使用。



2.4根據我們現有伺服器的執行狀況及其資料更新情況,

1)備份的策略:1.1)系統備份1.2)每日備份1.3)遠端備份 1.4)使用磁帶或其他儲存介質備份資料

2)備份計劃:

F(Full)-全部備份D(Difference)-差異備份I(Increment)-增量備份


星期日
星期一
星期二
星期三
星期四
星期五
星期六

第一星期
F
D
D
D
D
D
D

第二星期
F
D
D
D
D
D
D

第三星期
F
D
D
D
D
D
D

第四星期
F
D
D
D
D
D
D


3)輪換策略採用月-周-日輪換策略。這種策略由三級備份組成:日備份、周備份、月備份,日備份為差異備份,月備份和周備份為完全備份。在伺服器上建立四個資料夾,每個資料夾存放每週的資料,日備份從週一至週六的差異備份,星期日為完全備份,每月最後一次完全備份,備份後將月資料留檔儲存,第二個月開始備份資料時候,把上一個月與本月當日對應的資料刪除或覆蓋,依此類推

2.5關於mysql資料庫備份:MYSQL備份資料庫主要有兩個方法,一個是用MYSQLdump程式,另一個是直接拷貝資料庫檔案,直接拷貝資料庫檔案時候需要注意資料庫的版本。





2.6備份的實現:

1)本機備份

1.1) 先確認本機需要備份的資料和需要把資料備份哪個硬碟,並在該硬碟上建立儲存備份資料的目錄:/disk/backup,並在該目錄下設定各種服務(sshd/WWW/vsFTP/named/mysql/postgreSQL)備份的目錄名

1.2)建立指令碼,通過備份命令如cp,tar,cpio,dump等,

1.3)編輯crontab–e定時觸發事件,

建立一個指令碼檔案 backupdaily.sh

#!/bin/bash

# 每日備份的簡單script

# What is this program?

# This program will backup the following messages:

# 1. MySQL data files ( /var/lib/mysql );

# 2. HTTP's CGI-directory ( /var/www/cgi-bin )

#

# HOW TO RUN THIS PROGRAM?

# Just put the file into /etc/crontab job,

# or put this file's link file to /etc/cron.daily!

#

# 0. Get the date messages and backup directory

day=`date +%Y-%m-%d`

basedir="/disk2/backup/daily"

# 1. MySQL ( PATH = /var/lib/mysql )

/etc/rc.d/init.d/mysqld stop

cd /var/lib

tar -zcf "$basedir"/mysql."$day".tar.gz mysql 2> /dev/null

/etc/rc.d/init.d/mysqld start



# 2. CGI ( PATH = /var/www/cgi-bin )

cd /var/www

tar -zcf "$basedir"/cgi-bin."$day".tar.gz cgi-bin 2> /dev/null



然後更改backupdaily.sh 的可執行的許可權 chmod +x backupdaily.sh

編輯crontab –e定時觸發事件,假如每天凌晨3點執行backupdaily.sh

01 3 * * * /usr/sbin/ backupdaily.sh

重新啟動service crond start



2)備份到遠端伺服器上(需要增加一臺備份伺服器Backup server)

2.1)用ssh的公私鑰的方法將兩臺機器用不輸入密碼的方法就可以訪問,在主伺服器終端:#ssh-keygen–tdsa

2.2)將在你登陸使用者目錄的.ssh下生成*.pub的檔案copy到server2上,把檔案放在server2的.ssh下,並改名為authorized_keys,並賦予.ssh的許可權700和.ssh/authorized_ke的許可權600

2.3建立指令碼,通過rsync命令備份資料

2.4) 編輯crontab–e定時觸發事件

2.4.1)第一種方法,加入

*0 * * * * rsync –z –e ssh –delete /home 帳號@主機IP地址:/home/backup

(以上例子假設將server1的home目錄與server2的/home/backup做同步

2.4.2)第二種方法:建立一個檔案backup.sh

date=` date +%Y%m%d `
rsync -za -e ssh --delete --progress

/usr/local/mysql/data/nbw1
[email protected]
:/DESTdir/$date
rsync -za -e ssh --delete --progress

/usr/local/mysql/data/vbb_db [email protected]:/DESTdir/$date

然後更改backup.sh的可執行的許可權 chmod +x backup.sh

編輯crontab –e定時觸發事件,假如每天凌晨3點執行backup.sh

01 3 * * * /usr/sbin/backup.sh

重新啟動service crond start



3)通過備份軟體實現:

3.1)備份軟體選擇:Baculahttp://www.bacula.org/en/

backupPChttp://backuppc.sourceforge.net/

3.2)備份軟體的安裝和配置:(還需要完善)

用Bacula 備份資料,需要主控伺服器、客戶機和儲存伺服器作為主要架構。

3.2.1)Bacula的安裝

使用Bacula作為備份軟體需要有資料庫。一般選mysql作為備份軟體的資料庫。所以在安裝Bacula之前要先安裝mysql。下載完mysql-.rpm、mysql-server-.rpm和mysql-devel-.rpm 三個rpm包後,採用rpm –ivh對它們逐個安裝。裝好mysql後,下載bacula-mysql-2.2.4-1.el5.i386.rpm、bacula-bat-2.2.4-1.el5.i386.rpm、bacula-gconsole-2.2.4-1.el5.i386.rpm和bacula-mtx-2.2.4-1.el5.i386.rpm等四個rpm包。然後逐個安裝。再在客戶機上安裝/bacula-client-2.2.4-1.el5.i386.rpm。

3.2.2)Bacula的配置

Bacula 的三個主要的配置檔案是Director的配置檔案bacula-dir.conf、 Storage的配置檔案bacula-sd.conf、Client的配置檔案bacula-fd.conf。



3.資料恢復:資料恢復措施在整個備份制度中佔有相當重要的位置,因為它關係到系統在資料丟棄或者資料遭到破壞後能否迅速的恢復。資料恢復措施包括:資料備份制度,資料恢復演習制度及其資料恢復

3.1 資料備份制度:為了預防資料丟失或者遭到破壞的發生,需要做資料備份。每天都需要嚴格按照已經制定好的備份計劃和策略去做好備份的工作。

3.2 資料恢復演習制度

要能夠保證資料恢復的可靠性,光進行備份是不夠的,還要進行資料恢復演練。

每過一段時間,應進行一次資料恢復演習。可以利用淘汰的機器或多餘的硬碟進行災難模擬,以熟練資料恢復的操作過程,並檢驗所生成的資料恢復軟盤和災難恢復備份是否可靠。

3.3 資料恢復的解決方案:

1)伺服器硬體問題處理,由於硬體問題導致伺服器執行不穩定,需要及時修復或者更換新的配件確保伺服器執行穩定.

2)伺服器作業系統破壞和還原

(2.1)系統還原的考量有兩種:A)主機需要在很短的時間內立刻就能夠還原上線B)我的主機能夠在查詢到掛點的原因後才正式上線

(2.2)作業系統的還原:對作業系統所缺失的某種服務或者某些檔案丟失的還原,或者系統重新安裝配置

3)伺服器資料破壞或丟失的恢復方法

準備好最近一次的資料備份資料資料,通過備份軟體還原資料的提示進行下去,就可以將伺服器資料恢復到最近的狀態。

4)資料庫被破壞處理方案:

不管使用哪種備份方法,如果需要恢復資料庫,必須讓伺服器執行更新日誌。當系統崩潰後需要恢復資料時,更新日誌可以幫助恢復。這樣在用備份檔案恢復資料到備份時的狀態後,我們可以通過執行更新日誌中的查詢再次運用備份後面的修改,這時可以將資料庫中的表恢復到崩潰發生時的狀態。

使用mysqldump備份和拷貝資料庫時,mysqldump產生的輸出可用作mysql的輸入來重建資料庫。 我們還可以將整個資料庫匯出到一個單獨的文字檔案中。在恢復期間,通常按資料庫為基礎提取更新日誌內容,對單個表沒有提取更新的選擇。

如果使用直接拷貝資料庫的備份和拷貝方法,可以使用這些cp、tar或cpio實用程式。當直接拷貝時,我們必須要保證表不在被使用。如果在拷貝過程中,伺服器修改了拷貝中的表的內容,則備份失敗。保證拷貝完整性的最好方法是關閉伺服器,拷貝檔案,然後重啟伺服器。如果不想關閉伺服器,要在執行表檢查的同時鎖定伺服器。如果伺服器在執行,相同的制約也適用於拷貝檔案。

恢復過程包括備份檔案和更新日誌。備份檔案可以將表恢復到實施備份時的狀態,更新日誌包含了用於進行這些修改的查詢。恢復過程根據我們需要恢復的資訊多少而不同。實際上,恢復整個資料庫比單個表跟容易,因為對於資料庫運用更新日誌比對單個表運用要容易的多。

4. 災難恢復方案

災難恢復措施在整個備份制度中佔有相當重要的地位。因為它關係到系統在經歷災難後能否迅速恢復。災難恢復措施包括:災難預防制度、災難演習制度及災難恢復。

4.1災難預防制度

為了預防災難的發生,需要做災難恢復備份。災難恢復備份與一般資料備份不同的地方在於,它會自動備份系統的重要資訊,利用備份的系統資料,才能快速恢復系統.在備份普通資料的同時就可以進行災難恢復的備份,建立災難恢復盤,災難恢復時災難恢復盤和災難恢復備份一起使用去恢復系統.

關於災難預防制度,有兩個注意點:

⑴災難恢復備份應是完全備份

⑵在系統發生重大變化後,建議重新生成災難恢復軟盤,並進行災難恢復備份。如安裝了新的資料庫系統,或安裝了新硬體等。

4.2 災難演習制度

要能夠保證災難恢復的可靠性,光進行備份是不夠的,還要進行災難演練。

每過一段時間,應進行一次災難演習。可以利用淘汰的機器或多餘的硬碟進行災難模擬,以熟練災難恢復的操作過程,並檢驗所生成的災難恢復軟盤和災難恢復備份是否可靠。

4.3 災難恢復

擁有完整的備份方案,並嚴格執行以上的備份措施,當您面對突如其來的災難時,就可以應付自如。

災難恢復的步驟非常簡單:準備好最近一次的災難恢復軟盤和災難恢復備份資料資料,插入恢復軟盤,開啟計算機電源,災難恢復過程就開始了。根據系統提示進行下去,就可以將系統恢復到進行災難恢復備份時的狀態。再利用其他備份資料,就可以將伺服器和其他計算機恢復到最近的狀態。