程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2005災難恢復步驟

SQL Server 2005災難恢復步驟

編輯:關於SqlServer

問題

SQL Server 2005在實現高可用性和災難恢復方面給我們提供了很多種選擇。比技術本身更重要的是拿出適當的程序,這是因為我們要管理不同的災難恢復方案。我們應該如何拿出程序來管理多種多樣的災難恢復場景呢?

專家解答

這一系列文章將探討不同的災難恢復場景和涉及你的恢復計劃的程序。考慮到你的SQL Server 2005數據庫中的災難恢復選項,你應該包含盡可能多的技術,因為如果災難發生時你將會有很多種選擇來解決這個問題。盡管擁有這些技術被證實是很重要的,但是它也是一個伴隨著使整個程序更加有效的過程。在這篇文章裡,讓我們來看看一個簡單的場景,那就是在發生數據庫備份的5個小時後,一個用戶不小心刪除了一張表。從一個數據庫備份中恢復意味著失去5小時的數據。而對於大多數的公司來說,比起失去數據,他們更願意選擇失去時間。並且,如果這是一個非常大的數據庫,那麼將花很長一段時間來恢復和使它聯機。在將數據損失控制到最小的前提下,我們將考慮這種情況來建立一個程序方法,以此來盡快地恢復數據庫。我們將使用Northwind數據庫來顯示這個過程。記住在進行以下步驟之前先把Northwind中的數據庫恢復模式改成FULL。

1) 確保你有一個好的備份

針對上面的場景,我們假設你有一個每天早上6:00運行的備份,並且沒有一個定期創建的數據庫快照。你的數據庫被配置成使用一個單一的MDF和LDF文件,這個文件對災難恢復不太適用。讓我們在Northwind數據庫中創建一個全數據庫備份,它將是數據庫恢復的起始點。以下是代碼:

USE master
GO
BACKUP DATABASE Northwind
TO DISK = N'D:\DBBackup\NorthwindBackup.bak'
WITH NAME = N'Full Database Backup', DESCRIPTION = 'Starting point for recovery',
INIT, STATS = 10
GO

從Northwind數據庫模式中,你很難刪除Products, Orders和Customers表,這是因為有其他表比如Order Details表的外碼約束限制。但我敢打賭你可以輕易地刪除Order Details表。接下來,我們來模擬在大約上午11:00時刪除這張表的災難情景。

DROP TABLE [OrderDetails]

2) 包含發生的問題

由於這個數據庫只有一個單一的MDF和LDF文件,我們不可能做很多操作。我們所能做的就是通過把它設置成有限制的用戶模式來使數據庫脫機。

USE master
GO
ALTER DATABASE Northwind
SET RESTRICTED_USER
WITH ROLLBACK IMMEDIATE
GO

這將很有效地使數據庫脫機,停止所有活動的連接。這是分秒必爭的時刻,我們需要采取行動。當進行到下面的步驟時,請牢記你的RPO和RTO。

3) 備份事務日志

一個好的數據庫管理員應該知道當災難來臨時,首先要做的是備份事務日志 – 假設你的數據庫被設置成全數據庫備份。這是為了確保在上次備份之後你還保存所有活動的事務。在我們的場景中,由於上次的備份 – 全備份,在這個例子中 – 發生於早上6:00。

BACKUP LOG Northwind
TO DISK = N'D:\DBBackup\NorthwindBackupLog.trn'
WITH NAME = N'Transaction Log Backup'
, DESCRIPTION = 'Getting everything to current point in time.',
STATS = 10
GO

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved