blogspot.com-GA4

星期四, 7月 17, 2008

如何做好 ASE 資料庫備份管理

資料庫備份指令
dump database <db_name> to “<device name for tape>|<file name>”

資料庫還原指令
load database <db_name> from “<device name for tape>|<file name>”

ex: 公司使用指令
dump database dbname to 'compress::d:\dbbackup\dbname_data_日期.gz'
load database dbname from 'compress::d:\dbbackup\dbname_data_日期.gz' online database dbname

資料庫與資料整合
倍力資訊股份有限公司 版權所有 http://www.mpinfo.com.tw 1
如何做好 ASE 資料庫備份管理
作者:倍力資訊第一事業部 系統顧問
張安翔 先生

在電腦應用中,為防止可能由於各種原因所造成的損失,經常要對各種文件
進行備份。在資料庫的應用中,所儲存的資料如果遺失或遭到損壞,則可能會產
生無法預測的結果,或造成無法彌補的損失,所以應該對資料庫儲存的資料定期
作備份,以減少因資料遺失或損壞所造成的損失。然而在具體的使用中,發現集
中式的資料管理有其優點,就是資料風險範圍大為縮小,但是相對的風險卻比較
集中。因此如何做好資料庫的備份管理,也成為相當重要的課題。

在實際應用中,資料庫備份主要功用不外乎作資料庫系統的回復、重建或資
料庫移轉(或許為資料庫系統新舊版本的轉移) 。然而資料庫備份策略在於維護
系統資料安全,好的備份策略應該考慮保證資料的安全,並且以操作簡便為原
則。基本的操作過程很簡單,說明如下:

1. 有哪些資料需要備份?
„ master資料庫(含交易日誌) :master資料庫中包含許多用來記錄系
統相關資訊的表格,ASE 就是利用這些系統表格來控制和管理使用者
資料庫及資料庫系統的整體運作。當修改了 master資料庫之後,就應
該備份 master資料庫。如果 master資料庫遭到了破壞,就可以輕易
地復原系統和恢復使用者的資料庫。當 master資料庫重建和恢復之
後,便能夠恢復其他的系統資料庫的備份和已存在的使用者資料庫;相
反地,如果現行 master資料庫沒有備份,那麼就必須重建全部的系統
資料庫。
„ user資料庫(含交易日誌) :顧名思義指的就是使用者自行建立用來存
放資料的資料庫。使用者資料庫則應該有計劃的備份。當新建資料庫、
新建索引或執行了一些沒有日誌的操作時,就應該去進行完整的資料庫
備份。
„ server configuration files:每建一個伺服器所對應的一個環境設定組態
檔(Sybase 目錄下 servername.cfg) ,裡面記載著伺服器的各個相關
的環境參數,將此一檔案複製出來,在未來伺服器復原時可使用它來回
復先前的設定環境。

2. 何時必須進行備份?

為了將系統安全且完整的備份,必須根據具體的環境和條件,制定一個資料庫與資料整合
完善可行並可確保資料庫系統安全的備份計劃。為了制定完整的備份計劃,
則須考慮下列幾項要件:
„ 確定備份的頻率。對於資料庫的完全備份,可以每個月、每周甚至每天
執行一次,相對地,交易日誌(Transaction log)的備份是每週、每天
甚至每小時備份一次。
„ 確定要備份的系統資料庫和使用者資料庫的內容。
„ 確定備份所使用的媒體,是使用硬碟備份、光碟備份或磁帶備份等。
„ 確定是使用允許使用者繼續操作的線上(online)備份,還是不允許使
用者使用資料庫的離線(offline)備份。
„ 確定備份儲存的地方是否安全。

3. 備份的前置作業

即使資料庫中有資料不一致的情況發生,dump database 命令仍然可
以成功的執行完成。雖然這並非必要性動作,但仍強烈建議使用者在備份資
料庫之前先確保資料庫的一致性,如此一來我們就可以保證所備份出來的資
料在資料頁鏈接及配置上都是正確的。

„ dbcc(DATABASE CHECK CONSISTENCY)資料庫一致性檢查

dbcc 用來檢查一個資料庫邏輯一致性和物理一致性,通常在下面的情
况下使用 dbcc:
1. 一般的資料庫維護
2. 確定當一個系統錯誤後可能損壞的範圍
3. 在備份資料庫之前
4. 懷疑資料庫受到損壞
dbcc 有兩個主要功能:可檢查分配表結構(命令 checkalloc、
tablealloc) 、可檢查頁的鏈接和頁與行上的資料指標(命令 checkdb、
checktable) 。指定表格可以用 checktable、tablealloc 執行dbcc 命令。指
定資料庫可以使用 checkdb、checkalloc 和 checkcatalog選項。

„ dbcc checkdb:檢查指定資料庫(database)的一致性,比對該索引
頁和資料頁是否有正確地被鏈接、索引是否保持正確的排序順序、所有
的指標是否一致。
„ dbcc checktable:檢查指定表格(table)之索引頁及資料頁是否被正
確地鏈接、索引是否保持正確的排序順序、所有指標是否一致。
„ dbcc checkalloc:檢查指定資料庫中的資料頁是否有被正確的配置,以
及是否有資料頁被配置但未使用,或是否有資料頁被使用但未被配置。 資料庫與資料整合
„ dbcc tablealloc:檢查指定表格的分頁是否有被正確的配置。
„ dbcc checkcatalog:系統表格的一致性檢查。
„ dbcc checkstorage:指定資料庫檢查,但需要先建立dbccdb 資料庫,
再進行資料的搜集與資料的分析,此方法可以有效的降低資料被 lock
的時間。

4. ASE 的資料庫備份與恢復

資料庫的備份(backup) :

dump命令的使用
„ dump database <db_name> to “<device name for tape>|<file
name>”:將指定的資料庫完全備份下來,其中包含了資料及交易日誌,
該命令執行完並不會清除已完成的交易日誌。
„ dump transaction <db_name> to “<device name for tape>|<file
name>”:僅備份交易日誌,備份後會清除交易日誌的內容。
„ dump database|transaction <db_name> to “<device name for tape>”
at <remote_backup server name>:將資料庫或交易日誌備份至遠端的
備份伺服器上,此一方法僅能備份至磁帶(tape)上。
„ dump transaction <db_name> with truncate_only:不作備份,只清除
已成功的交易日誌,且會產生此一命令的 log 記錄。
„ dump transaction <db_name> with no_log:不作備份,只清除已成功
的交易日誌,但不產生此一命令的log記錄(當log的儲存空間不足且
無法再延伸時,可使用此一命令來清除log記錄) 。
„ dump transaction <db_name> to “<device name for tape>|<file
name>” with no_truncate:只作交易日誌的備份,但不作清除交易日誌
的動作。在資料庫毀損不能使用的情況下,仍可利用此命令做到
up-to-minute 交易日誌的備份。

quiesce 命令的使用(為 ASE 12.0以上版本新增的命令)
使用 quiesce 命令在資料庫 on line 時,強迫執行禁止交易的動作,接著再
以檔案複製的方式來進行資料庫的備分。
„ quiesce database <tag_name> hold <db_name> for external dump:
執行禁止交易的命令。
„ quiesce database <tag_name> release:解除禁止交易的命令。

資料庫的回復(recovery) :
必須先建立好空的資料庫,與原資料庫的大小及配置必須要完全一樣。資料庫與資料整合
如是採實體檔案複製的備份方式,則將複製出來的檔案再拷貝並取代新建好
的空資料庫即可。如採 dump 的方式備份,則須以 load 的命令來將資料庫
作完整回復(包含交易日誌的回復) 。

load database命令的使用
load database 命令用來將先前所備份的資料庫重新載入系統,載入並同時
執行回復的程序,所以先前備份時尚未完成的交易都要被取消,已修改的資
料會被回復至原來的狀態。執行load database 命令時,系統會自動將資料
庫離線(offline) 。
„ load database <db_name> from “<device name for tape>|<file
name>”:執行資料庫的回復作業。
„ load database <db_name> from “<device name for tape>|<file
name>” at <remote_server_name>:利用遠端的備份伺服器來執行資
料庫的回復作業。

load transaction命令的使用
在你執行完load database 命令,已將先前的資料庫備份回復後,接著你就
可以使用load transaction 命令來將先前所作的交易日誌備份,依照時間順
序一一的載入,這樣就可以藉此重新執行交易日誌中所記錄的資料異動反應
至重建的資料庫中。

執行完load 的命令之後,資料庫的狀態為offline,須利用 online database
<db_name>來將資料庫的狀態變更成 online,方可正常使用。

經由dump 及 load 命令,我們可以執行資料的備份、載入和清除交易日誌
的工作,一個完善的系統必須靠完善的備份計劃及平日經常性的資料備份
來建立。所以備份工作非但不能不作,更要作得確實。

沒有留言: