Sybase數據庫備份與恢復

 

Sybase數據庫備份與恢復

SQL Server提供了兩種不同類型的恢復:一類是系統自動完成的恢復;另一類是人工完成的恢復。

1.系統軟件故障恢復

系統自動恢復是在系統軟件出現故障的情況下通過重新啓動SQL Server進行恢復。

自動恢復從master數據庫開始,然後是model數據庫,再是temporary數據庫,最後是用戶數據庫。在每個數據庫上,恢復機制觀察事務日誌。如果日誌寫入比數據庫更近的數據,則向前恢復數據庫。如果事務尚未完成,則要回退它們。

所謂事務日誌就是一張系統表,syslogs。在這張表中記錄着對數據庫的更新請求,例如插入、修改和刪除。查詢操作不記入事務日誌中。

2.介質故障的恢復

一旦介質發生故障,只有通過以前備份的數據庫和事務日誌才能恢復數據庫,爲此我們需要經常備份數據庫和事務日誌。備份數據庫和事務日誌我們使用dump命令,而恢復數據庫和事務日誌我們使用load命令。

與創建數據庫需要一個數據庫設備類似,我們備份數據庫和事務日誌也需要一個卸出設備。增加卸出設備可以通過系統過程sp_addumpdevice來實現。卸出設備可以是磁盤、磁帶或操作系統文件。

sp_addumpdevice "type",device_name,physicalname

例:

sp_addumpdevice "disk", "db114", "/usr/Sybase/zyl114.bak",1

(1) 備份數據庫和事務日誌

備份數據庫的語法爲:

dump database database_name to dump_device

例如:

dump database tele114 to db114

備份事務日誌的語法爲:

 

dump transaction database_name to dump_device

[with truncate_only | with no_log | with no_truncate]

前兩項在日誌中刪除提交的事務,後一項不刪除。

在備份數據庫前的所有事務日誌備份都是沒有意義的。我們一般不經常備份數據庫,但我們要經常備份事務日誌。這是因爲備份事務日誌比備份數據庫需要更少的時間和存儲空間。

(2)恢復用戶數據庫

要恢復已被破壞的數據庫,可以按如下步驟進行:

· 用帶no_truncate選項的dump命令卸出用戶數據庫事務日誌。

· 用和被破壞的數據庫的同樣的結構建立一個新的數據庫。

· 用load命令重新裝入數據庫和事務日誌。

裝入數據庫的語法爲:

load database database_name

from file_name

裝入事務日誌的語法爲:

load transaction database_name

from file_name

例:數據庫備份

1> dump db_name to file_name

2> go

數據庫恢復

1> load db_name from file_name

2> go

日誌備份

1> dump transaction db_name to file_name

2> go

日誌恢復

1> load transaction db_name from file_name

2> go

日誌刪除

1> dump transaction db_name with truncate_only

2> Go

(3)master數據庫的恢復

A、保存系統表的拷貝:sysdatabases、sysdevices、sysusages、sysloginroles和Syslogins。

B、轉儲主設備上的用戶數據庫。

C、關閉SQL Server並使用buildmaster建立新的master數據庫或主設備。

Buildmaster -m ...僅重建master數據庫

Buildmaster ...重建主設備

D、已單用戶模式啓動SQL Server( Master-Recover 

Startserver -f RUN_服務器名 -m

E、若master數據庫用alter database 命令擴展過,嚴格重建它在sysusages中的分配。

F、若Backup Server 的網絡名(接口文件中的名字)不是SYB_BACKUP,在sysservers中改動網絡名。

Update sysservers set srvnetname="PRODUCTION_BSRV" where srvname="SYB_BACKUP"

 

G、使用showserver查看,檢查確保Backup Server正運行,若有必要,重啓Bakup Server

H、裝載master的備份。

Load database master from 'master.bak'

 

Load database執行成功後,SQL Server 自動關閉。

I、若自master的上次轉儲以來增加過數據庫設備,執行disk reinit命令以重建sysdevices。

J、若執行了disk reinit,或自上次轉儲以來使用過create database或alter database,執行disk refit 重建sysusages和sysdatabases表,執行完畢後SQL Server自動關閉。

K、檢查一致性:比較sysusages和sysdatabases的備份和新的聯機版本,對每個數據庫執行dbcc checkalloc, 並檢查每個數據庫中重要的表;若發現錯誤重新執行disk reinit和disk refit。

L、若恢復了整個主設備,則恢復model數據庫。

Cd $Sybase/scripts

Setenv DSQUERY 服務器名

ISQL -Usa -P口令 -S服務器名 M、重新裝載所有受影響的用戶數據庫。

N、恢復服務器用戶ID。

O、以多用戶模式重新啓動SQL Server。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章