DB2數(shù)據(jù)備份和恢復的操作流程
本文主要講述了提高DB2數(shù)據(jù)備份和恢復效率的實際操作步驟,在設計數(shù)據(jù)備份和恢復的方案時,我們主要考慮的有兩個方面的問題。
一是備份與恢復策略本身是否安全,即能否及時的準確的完成對數(shù)據(jù)庫的備份工作。
二是要考慮數(shù)據(jù)備份與恢復方案的執(zhí)行效率高不高。
如果備份或者恢復一個DB2數(shù)據(jù)庫需要花費幾個小時時間,那么及時這個備份與恢復方案再安全,也于事無補?;蛘哒f,是一個不合適的解決方案。為此在考慮備份恢復方案本身安全性的同時,也需要兼顧備份與恢復的效率。在這篇文章中,筆者就介紹一下提高DB2數(shù)據(jù)備份與恢復效率的一些常用技巧。
經(jīng)過筆者多個案例的實際應用,證明這些技巧在提高DB2數(shù)據(jù)庫備份與恢復的性能具有很大的幫助。
一、了解數(shù)據(jù)的邏輯存儲結(jié)構(gòu)。
如果以前有Oracle數(shù)據(jù)庫經(jīng)驗的管理員,那么了解DB2數(shù)據(jù)庫的邏輯存儲結(jié)構(gòu)就比較容易了,因為兩者在這方面很類似。對于DB2數(shù)據(jù)庫來說,其邏輯存儲結(jié)構(gòu)主要分為數(shù)據(jù)表、表空間與數(shù)據(jù)庫三個級別。數(shù)據(jù)表包含在表空間之中,而表空間又包含在數(shù)據(jù)庫當中。換一句話說,一個DB2數(shù)據(jù)庫包含多個表空間,而每個表空間又包含了多個數(shù)據(jù)表。
一個數(shù)據(jù)表示不能夠保存在多個表空間當中的。同理,一個表空間也不能夠保存在多個數(shù)據(jù)庫之中。這跟小學的實施,班級里分組類似。一個班(相當于一個數(shù)據(jù)庫)分為四個小組(每個小組相當于一個表空間),然后每個小組又是由一個個的學生組成的(一個個學生相當于一個個數(shù)據(jù)表)。
這個組織結(jié)構(gòu)可以有什么好處呢?此時學校校長(相當于數(shù)據(jù)庫管理員)就可以按照班級、小組為單位對數(shù)據(jù)進行管理,也可以對學生進行一對一的面談,從而提高數(shù)據(jù)庫管理的靈活性。
而對于DB2數(shù)據(jù)備份與恢復作業(yè)來說,采用如此的邏輯結(jié)構(gòu),數(shù)據(jù)庫管理員既可以對整個數(shù)據(jù)庫進行備份與恢復(對整個班級進行管理);也可以以表空間為單位,對表空間中的所有數(shù)據(jù)表進行備份與恢復操作(以小組為單位進行管理);甚至可以對單獨的數(shù)據(jù)表進行備份與恢復的操作(對單個學生進行管理)。即可以分別從數(shù)據(jù)表、表空間、數(shù)據(jù)庫三個級別來進行備份與恢復的操作。
這分級別的管理,不僅增強了操作的靈活性,而且還可以提高備份與操作的效率。如現(xiàn)在用戶需要對某個表進行更新,如需要調(diào)整價格表中的價格。此時數(shù)據(jù)庫管理員就只需要對價格表進行更新即可,而不需要對整個數(shù)據(jù)庫進行備份。顯然這可以減少備份的時間。若出現(xiàn)問題的話,也只需要對這張表中的內(nèi)容進行恢復。這也可以在很大程度上減少恢復的時間?;謴鸵粡埍砜隙ū然謴驼麄€數(shù)據(jù)庫所用的時間要少的多。
二、合理規(guī)劃表空間提高數(shù)據(jù)庫備份恢復性能。
既然數(shù)據(jù)庫備份與恢復可以按三個級別來進行,那么數(shù)據(jù)庫管理員可以根據(jù)這個特性來合理規(guī)劃表空間,以提高數(shù)據(jù)庫備份與恢復的性能。如在DB2數(shù)據(jù)庫中,雖然對于LOB等大容量數(shù)據(jù)類型提供了很好的支持。
但是,畢竟其容量比較大,有時候其所占的數(shù)據(jù)庫容量可能達到整個數(shù)據(jù)庫的二分之一。為此這些大容量的數(shù)據(jù)類型就成為了數(shù)據(jù)庫備份與恢復作業(yè)作業(yè)的性能瓶頸。如果在數(shù)據(jù)庫備份與恢復的時候,不備份這些LOB數(shù)據(jù)類型的數(shù)據(jù),那么數(shù)據(jù)庫備份與恢復的時間可能會減少三分之一,甚至二分之一。
為此筆者建議,在規(guī)劃數(shù)據(jù)表的時候,***將LOB數(shù)據(jù)類型的數(shù)據(jù)與其他數(shù)據(jù)分成兩張表來存放。如在一個產(chǎn)品信息表的表中,包含一個產(chǎn)品圖片的字段,這個字段就是一個LOB數(shù)據(jù)類型。雖然可以將它們設計在同一個表中。不過筆者還是建議將他們分為兩個表來存放,然后通過關鍵字將他們連接起來。
***將這個兩張表分別存放到不同的表空間中。如將有LOB數(shù)據(jù)類型的表統(tǒng)一保存在LOB表空間中。如此有什么好處呢?當數(shù)據(jù)庫進行備份時,平時可以只對非LOB表空間中的數(shù)據(jù)進行備份。由于LOB表空間中的一些信息一般不怎么會更新,就可以一個星期更新一次?;蛘咦屍湓跀?shù)據(jù)庫比較空閑的時間進行備份。
經(jīng)過一段時間的測試,可以發(fā)現(xiàn)每天或者每周數(shù)據(jù)庫的空閑時斷。如此規(guī)劃的話,就可以將平時備份的效率提高。同理,在恢復的時候也可以按照表空間級別來進行恢復,從而縮短數(shù)據(jù)庫恢復的時間。
這個方案的核心就是將LOB等大容量數(shù)據(jù)類型的數(shù)據(jù)與普通表獨立開來,并且存放在不同的表空間中。然后將LOB表空間與非LOB表空間進行分開管理,分開備份與恢復,從而提高數(shù)據(jù)庫備份與恢復的效率。為此在建立表時將LOB數(shù)據(jù)類型與其他數(shù)據(jù)類型分開存放是關鍵。
三、對于圖片等LOB數(shù)據(jù)類型的另類處理方式。
當數(shù)據(jù)庫中LOB數(shù)據(jù)類型比較多的時候,往往會在很大程度上影響數(shù)據(jù)庫的性能。不僅DB2數(shù)據(jù)備份與恢復會受到影響,連平時的查詢也會受到牽連。為此筆者有時候給企業(yè)部署DB2數(shù)據(jù)庫系統(tǒng)的時候,往往會建議他們,不要將圖片等信息存放在數(shù)據(jù)庫中。那么當用戶需要查詢圖片信息時,該如何處理呢?筆者建議他們將圖片統(tǒng)一放到網(wǎng)絡上的一個共享服務器中。
然后在數(shù)據(jù)庫中只存放這個圖片的路徑。***在客戶端界面設計時,可以創(chuàng)建一個指向圖片的鏈接。當用戶需要訪問某個產(chǎn)品的圖片信息時,則只需要點擊產(chǎn)品管理界面上的圖片鏈接,就可以打開這張圖片。在這種情況下,數(shù)據(jù)庫實際存儲的只是圖片的路徑(也就是一個普通的字符型字段),而不是圖片本身。故可以提高客戶端窗口顯示的速度,同時也可以提高數(shù)據(jù)庫備份與恢復的效率。
四、為系統(tǒng)設置合適的并行度與緩存來提高數(shù)據(jù)庫備份與恢復性能。
數(shù)據(jù)庫備份與恢復的性能除了跟數(shù)據(jù)類型有關之外,還跟系統(tǒng)的并行度與緩沖區(qū)有關。通常情況下,如果硬件設備支持的話,增加并行度與增加緩沖區(qū)的大小可以提高數(shù)據(jù)庫備份與恢復的性能。為此在對DB2數(shù)據(jù)庫進行備份的時候,可以通過給并行度、緩沖區(qū)樹木和緩沖區(qū)大小分配合適的值來提高數(shù)據(jù)庫備份與恢復的性能。
如一般情況下,筆者建議將數(shù)據(jù)庫緩沖區(qū)的大小設置為數(shù)據(jù)內(nèi)存的二倍到三倍。如果備份中包含大容量的數(shù)據(jù)類型,可以適當提高整個比例。并且將數(shù)據(jù)庫緩沖區(qū)的數(shù)目設置為硬盤I/O緩沖數(shù)目的兩倍。如此設置之后,數(shù)據(jù)庫的備份與恢復性能能夠得到很大的改善。
不過需要注意的是,這個調(diào)整會受到服務器硬件資源的限制。當服務器內(nèi)存等硬件設備不支持這么大的數(shù)據(jù)緩沖區(qū)與數(shù)據(jù)緩沖區(qū)數(shù)目時,反而會因為沒有足夠的內(nèi)存分配給緩沖區(qū),從而導致DB2數(shù)據(jù)備份與恢復的失敗。為此筆者建議,在調(diào)整數(shù)據(jù)緩沖區(qū)的時候,需要特別注意。
一般來說,調(diào)整好這些參數(shù)之后,需要持續(xù)追蹤一段時間,以確保這些調(diào)整不會影響到數(shù)據(jù)庫的正常備份與恢復,不會與數(shù)據(jù)庫的硬件配置相沖突。
【編輯推薦】