簡單介紹Sybase資料庫的備份與恢復(轉)

BSDLite發表於2007-08-16
簡單介紹Sybase資料庫的備份與恢復(轉)[@more@]Sybase是基於Client/Server體系結構的資料庫軟體產品。它由三個主要部分構成,一是進行資料庫管理和維護的一個聯機關聯式資料庫管理系統Sybase SQL Server;二是支援資料庫應用機的建立與開發的一組前端工具Sybase SQL Toolset;三是可把異構環境下其它廠商的應用軟體和任何型別的資料連線在一起的介面Sybase Open Client/Open Server。對Sybase資料庫的備份與恢復主要是針對Sybase SQL Server進行。

Sybase提供了兩種不同型別的恢復:一類是系統自動完成的軟體系統故障恢復。另一類是需要手工完成的介質故障恢復。

自動恢復是系統本身提供的防止系統失敗的一種保護措施。每次Sybase重啟時都要執行自動恢復機制。自動控制恢復機制確保在系統癱瘓前完成的事務都寫到資料庫裝置上,而未完成的事務都被回退。

人工恢復是事先透過資料庫備份工具命令或線上資料流式管理軟體將資料庫備份到磁帶裝置,然後透過對應的恢復命令和模式恢復資料庫。

Sybase的傳統備份與恢復

下面我們首先透過討論如何定期備份資料庫來了解Sybase資料庫的傳統備份與恢復方法。

對於Sybase資料庫,一旦硬體或系統出現故障,當且僅當資料庫備份及其事務日誌的備份存在的情況下才能恢復資料庫。

備份的任務通常由系統管理員或資料庫所有者承擔。然而,備份資料庫或事務日誌的許可權可由資料庫所有者傳遞給其它使用者。

制定一個備份時間表是非常重要的。很難確定備份資料及其日誌的“最佳”時間表。事實上,備份的頻率決定恢復的質量。如果出現介質故障,可能丟失最大的資料量。對於大型的更新頻繁的資料庫,通常每天要做多次日誌備份和至少一次資料庫的備份。

在資料庫活動時可以備份資料庫或事務日誌。這種型別的備份(Sybase獨有的特性),稱為動態卸出。動態卸出使備份變得方便,並使連續不斷的操作成為可能。

動態卸出會部分降低Sybase的速度。

備份裝置的選擇

Sybase的備份裝置列在系統表master..sysdevices中,可執行命令:


Select * From master..sysdevices
Where name like ”%dump%“.


來檢視裝置狀況。

如果status列出的值是16或者24(表示裝置是卸出裝置),那麼cntrltype列的值表示卸出裝置的型別。卸出裝置的值可以是:2~8。

2:表示資料是透過磁碟位元組流介面卸出的。卸出裝置可以是磁碟、部分磁碟,或作業系統檔案。在不指明卸出裝置時,預設為作業系統檔案。

3~8:表示磁帶卸出裝置。

要增加卸出裝置,可用系統過程sp_addumpdevice。語法為:

對磁帶裝置:


sp_addumpdevice ”type“,device_
name,
physicalname,cntrltype{,skip|noskip},size


對磁碟裝置:


sp_addumpdevice ”disk“,device_
name,physicalname,cntrltype


將資料直接備份至磁帶,可以保證資料的離線異地儲存,但備份時間會延長。還可以採取先將資料庫備份至本地磁碟,再在機器不繁忙時將備份備至磁帶。

使用DUMP備份資料庫

備份資料庫時會備份此資料庫的全部——它的系統表、使用者定義的目標,以及事務日誌。資料庫卸出的格式是特殊的,它只能用Sybase裝載程式裝入(即用LOAD DATABASE 命令)。

對於master資料庫或其資料與日誌放在同一邏輯裝置上的小型資料庫(小於4M)使用DUMP DATABASE 命令備份資料庫和事務日誌。

對於大型資料庫而言,應當把資料與事務日誌放在不同的資料庫裝置上。(在建資料庫時用CREATE DATABASE ON ……LOG ON……來實現)這樣可以作到單獨備份資料與日誌。

除了按計劃備份資料庫外,在對資料庫作大量修改之前或在對資料庫作了不記日誌的操作(如執行了DUMP TRAN WITH NO_LOG)之後,都要對資料庫作備份。

命令的使用

DUMP DATABASE 的語法:


DUMP DATABASE database_name to dump_device
DUMP DATABASE database_name to dump_device1 stripe on
dump_device2 stripe on device3 ...{stripe on...}


資料庫備份時會產生多個檔案,做恢復時的檔案個數要與之對應。

備份事務日誌

當資料與日誌是放在不同的裝置時,可用DUMP TRANsaction

命令單獨備份日誌。卸出日誌要比備份資料庫花更少的時間和儲存空間。與備份資料庫相同,日誌的備份同樣可在資料庫活動時發生。

日誌在備份後將會被刪除,所以在下一次資料庫備份之前的日誌備份需要連續儲存才會有意義。

命令的使用:


DUMP TRANsaction database_name [to dump_device]
[WITH TRUNCATE_ONLY|WITH NO_LOG|WITH NO_TRUNCATE]


注意:DUMP DATABASE只備份資料庫,並不清除日誌,若不使用DUMP

TRAN命令刪除日誌,日誌會越來越大。

Sybase資料庫線上流式備份和恢復

⒈啟動線上備份

可以執行整個資料庫伺服器或特定資料庫的線上備份

以model 庫為例:


# nsrsybsv -Uname -Ppassword -lFull -s
NetWorker_Server_Name
SYBASE:/SQL_SERVER_NAME/model


⒉採用Schedule備份


(1)Full backup: dump database, dump the transaction log
for the database, trancates the tracsaction log
(2)Incremental:dump transaction log, trancates the
tracsaction log


注意此方式要求:

資料庫和事物日誌建立在不同裝置上;

不選擇 select into/bulk copy 選項;

不選擇truncate log on checkpoint 選項

⒊資料庫的恢復

* 必須使用nsrsybrc 來做;

* 如果想恢復資料到新的資料庫,必須先使用 for load 選項建立新庫;

* nsrsybrc

不建立資料庫,如果必要,應該先建立資料庫再使用nsrsybrc程式。Sybase建議保留資料庫定義和裝置分配的硬複製,以便於再建。

point-in-time 恢復:


#setenv NSR_SERVER networker_servername
#nsrsybrc -Usa -Ppassword -t ”09/11/02 03:33“
-dSYBASE:/SQL_SERVER_NAME/database


* 恢復到新的資料庫。

* 建立新的資料庫和舊資料庫擁有相同的裝置分配。

* 設定NSR_SERVER, NSR_CLIENT 環境變數以節省恢復時間:


nsrsybrc -Usa -Ppassword
-dSYBASE:/SERVER_NAME/NEW_DATABASE SYBASE:/SERVER_
NAME/OLD_DATABASE


⒋災難恢復

如果主磁碟包括SQL_server 和NetWorker客戶程式遭到損壞。

(1) 重新安裝NetWorker 客戶端程式,資料庫Server 軟體,BSMS模組。

(2) 使用列印出的資料庫裝置分配重新建立資料庫。

(3) 恢復master庫:

* 重建丟失的master裝置,使用“buildmaster”;

* 單使用者模式執行資料庫伺服器;

* 重建一些master的額外裝置;

* 確信資料庫伺服器在sysservers表中有正確的Sybase Backup Server 名字;

* 裝入master資料庫:


# nsrsybrc -Uusername -Ppassword
SYBASE:/SQL_Server_name/master


* 該命令恢復master庫並關閉資料庫伺服器;

* 如果必要,在資料庫關閉時重新建立裝置配置引數數目;

* 重啟資料庫伺服器;

* 如果在最後一次DUMP後對系統目錄資訊作過改動,此時恢復改變。

(4) 恢復model庫;

* 刪除或重建master裝置上的其他資料庫。

(5) 恢復非master 裝置上的資料庫

* 得到每個資料庫裝置的當前日誌備份;

* 檢查每個裝置上資料庫的空間用法, 例如:


select * from sysdatabases
select * from sysusages
select * from sysdevices


* 一旦得到每個裝置上所有資料庫的資訊,卸掉每個資料庫,指整個資料庫都在主庫裝置上;

dbcc dbrepai (database_name, dropdb)

* 根據缺少的裝置,在sysdevices檔案中手工刪除相應的行,即刪掉失敗的裝置;

* 單使用者模式重啟資料庫;

* 初始化新裝置;

* 依次重建資料庫;

* 重啟資料庫,保證資料庫不在單使用者模式;

* 恢復資料庫:


# nsrsybrc -Uusername -Ppassword
SYBASE:/SQL_SERVER_NAME/database


總結

普通Sybase資料庫的備份可採用dump命令來實現資料庫的備份。對於商用或比較重要的資料庫可採用線上資料流的備份模式,以加快資料備份和恢復速度,增強資料庫備份和恢復的可管理性。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-962192/,如需轉載,請註明出處,否則將追究法律責任。

相關文章