本文首先詳細地介紹IBM DB2的資料備份和資料恢復工具,向讀者展示IBM DB2的資料備份和資料恢復方法。同時還分析IBM DB2的資料備份和資料恢復性能方面的問題,以期能對讀者很好地利用IBM DB2快速高效地完成資料備份和恢復工作有所裨益。IBM DB2資料庫具有出眾的跨平臺開放性和可擴展性,它支持當前流行的主要操作平臺;IBM DB2資料庫具有良好的可攜性,能夠支援其他主流的資料庫,如Oracle、SyBase、Informix等資料庫都可以很容易地移植到DB2資料庫中;IBM DB2資料庫對海量資料的管理更是十分出色,它允許資料庫系統自己管理外存來提高效率,同時提供export、import、load等工具方便資料的快速移動,並提供了強大的backup、restore工具,方便DB2系統管理員創建安全的備份,建立恢復程式及執行快速、準確的恢復。相信我們都知道,維護企業資料的安全和完整是每個資料庫管理員的核心任務,而其中資料的及時備份和恢復又起著核心的作用。本文我們就IBM DB2強大的backup和restore工具做一下詳細的介紹,相信能夠對DB2系統管理員的日常資料管理有所幫助。
backup工具
backup用於DB2資料庫的資料備份操作,當你要對資料庫進行備份工作時,你首先要具有sysadm、sysctrl或者sysmaint的許可權。DB2採用的資料存儲策略在邏輯上分為三級:資料存儲在表(table)中,表存儲在表空間(tablespace)中,表空間存儲在資料庫(database)中,一個資料庫可以包含多個表空間,一個表空間可以包含多個表。因此,DB2的資料備份可以在資料庫和表空間兩個級別上進行。我們可以在命令中心、命令行處理器或者命令視窗中用backup命令來完成資料備份操作,其具體語法為:DB2 disconnect alias;DB2 backup database alias;例如,本例中系統的資料庫別名(alias)為edbase,所以其備份命令為:DB2 disconnect edbase;DB2 backup database edbase;其中第一條語句用來斷開資料庫與所有應用程式的連接,第二條語句執行backup操作,備份後可以在系統中的缺省目錄(例如,本例中該目錄是D:\IBM\SQLLIB\ EDBASE.0\DB2\NODE0000\CATN0000\20030514)下找到備份檔案,此目錄是由資料庫別名alias、instance名、節點名、cat node以及備份年月日組成,而備份檔案名是備份的時分秒。同樣,DB2也提供了簡單方便的圖形化用戶介面,在控制中心選擇目標資料庫或者表空間,單擊右鍵選擇backup選項,便可以根據備份嚮導完成備份操作。作為一款優秀的軟體,DB2還支援離線備份(offline backup)和線上備份(online backup)。
offline 資料備份offline資料備份是指當對資料進行備份時,資料庫必須斷開與其他程式的連接,此時,資料庫中的資料是靜止的,且在完成備份工作之前,資料庫不會回應應用程式的連接請求。offline資料備份要求資料庫的日誌方式是迴圈日誌(circular logging),默認情況下系統採用的是迴圈日誌,因此,默認情況下資料庫的備份方式也是offline備份。在特殊情況下我們要求offline備份時,必須修改資料庫配置檔(database configure)的日誌參數部分將LOG_RETAIN參數的值設為“否”。
online資料備份online資料備份是指當進行資料備份時,資料庫仍然保持與應用程式的連接,且在完成資料備份工作的過程中,資料庫繼續回應其他應用程式的連接請求,因此,資料庫中的資料仍在即時更新,顯然,online資料備份能夠提高系統的並行能力。當要進行online資料備份時,資料庫系統的日誌方式一定要是歸檔日誌(archive logging),因此,我們必須對資料庫配置檔的日誌部分的參數進行修改,將其LOG_RETAIN參數值設為“是”,USER_EXIT參數值設為“是”。
restore工具
restore用於DB2資料庫的資料恢復操作,同樣,當你要對資料庫進行恢復操作時,你應該具有sysadm、sysctrl或者sysmaint許可權。如果進行本機資料恢復,比較簡單,我們同樣可以在命令中心、命令行處理器或者命令視窗中通過執行restore命令完成,其語法為:DB2 restore database edbase;我們也可以運用DB2提供的圖形用戶介面來方便的完成,由於比較簡單,在此我們不作介紹。如果要把備份的資料庫恢復到另外一台機器上,就需要幾個額外的步驟了,因為目的機器上可能沒有源資料庫所使用的表空間等環境。因此首先要查看源資料庫的表空間結構:connect to edbase; list tablespaces ;對找到的表空間標識(id=0,1,2...)進行以下操作:list tablespace containers for id;這樣就可以開始恢復工作了,其具體步驟如下:1)執行命令restore database edbase redirect 其中redirect參數要求重新映射表空間。2)對找到的各個表空間依次運行如下的命令: set tablespace containers for id (path "absolute_container_path" )如果是檔型表空間則使用如下命令:set tablespace containers for id (file "absolute_container_filename", page_ number) 其中page_number是頁數,其具體的數值可以通過list tablespaces show detail得到。3)最後運行如下命令: restore database edbase continue重新恢復一下資料庫。有必要說明的是資料恢復在資料庫(database)級和表空間(tablespace)級對資料庫處理應用程式的連接會產生不同的影響。當對整個資料庫進行恢復操作的時候,它要求資料庫必須斷開與其他應用程式的連接,在進行資料恢復的過程中,資料庫將不會回應其他應用程式的連接請求;當進行表空間級的資料恢復時,資料庫允許應用程式訪問其他的表空間。
在backup/restore時的性能考慮
為了資料的安全,我們需要經常的對資料進行備份和恢復操作,而經常的資料備份和資料恢復在資料量較大的情況下將會嚴重影響資料庫的性能,降低工作效率,因此我們在資料備份和恢復的時候,還得採取一定的策略,以達到高效的目的。考慮表空間級的資料備份和恢復操作
圖2
對於LOB(large objects)資料,在進行資料庫的創建時,一般應放在單獨的表空間中。由於LOB資料的特性,LOB資料的備份和恢復將會比常規資料佔用更多的時間,因此一般情況下我們是不會對LOB資料進行頻繁的備份和恢復的,當把LOB資料放在單獨的表空間後,我們便可以選擇表空間級的操作,備份和恢復重要資料時,跳過對LOB資料的備份和恢復,當系統空閒的時候,再對存儲LOB資料的表空間進行備份和恢復操作。對於需要頻繁備份和恢復的資料,我們可以將它們放在磁片訪問速度快的表空間中,這樣對此部分資料的備份和恢復操作時也將會大大減少機時,提高工作效率。考慮buffer 的大小和並行度在資料備份的時候,我們可以通過給並行度、緩衝區數目和緩衝區大小適當的值來提高備份的性能。如下圖所示(如圖2)。增加並行度和緩衝區的數目,提高緩衝區的大小,將會提高資料備份的性能,但是對整個電腦硬體系統也將會有更高的要求。必須注意的是,當沒有足夠的記憶體分配給緩衝區時,資料備份將無法進行,系統會顯示錯誤,理想的緩衝區大小應該是記憶體的整數倍(該值可以在資料庫配置檔中的DFT_EXTENT_SZ找到),而理想的緩衝區數目應該至少是I/O緩衝區數目的兩倍。對於資料的恢復我們也應有同樣的考慮。