只有存在鏡像數(shù)據(jù)庫才能啟動數(shù)據(jù)庫鏡像會話。鏡像數(shù)據(jù)庫的名稱必須與主體數(shù)據(jù)庫的名稱相同,。數(shù)據(jù)庫所有者或系統(tǒng)管理員可以從主體數(shù)據(jù)庫的最新完整備份和至少一個后續(xù)日志備份中創(chuàng)建鏡像數(shù)據(jù)庫,。為使鏡像正常運行,鏡像數(shù)據(jù)庫必須保持 RESTORING 狀態(tài),。因此,,將備份還原到鏡像數(shù)據(jù)庫時,對于每個還原操作都必須始終使用 WITH NORECOVERY,。
如果已刪除鏡像,,并且該鏡像數(shù)據(jù)庫仍處于 RECOVERING 狀態(tài),則可以重新啟動鏡像,。但是,,首先在主體數(shù)據(jù)庫中必須至少執(zhí)行一個日志備份。然后在該鏡像數(shù)據(jù)庫中,,必須使用 WITH NORECOVERY 還原刪除鏡像后對主體數(shù)據(jù)庫執(zhí)行的所有日志備份,。
注意: |
---|
不能鏡像 master、msdb,、temp 或 model 系統(tǒng)數(shù)據(jù)庫,。 |
-
確保主體服務(wù)器實例和鏡像服務(wù)器實例都已安裝了 Microsoft SQL Server 2005。
-
驗證數(shù)據(jù)庫是否使用了完整恢復(fù)模式,。
有關(guān)詳細(xì)信息,,請參閱如何查看或更改數(shù)據(jù)庫恢復(fù)模式 (SQL Server Management Studio) 或 sys.databases (Transact-SQL) 和 ALTER DATABASE (Transact-SQL)。
-
備份主體數(shù)據(jù)庫以生成完整數(shù)據(jù)庫備份,。
有關(guān)詳細(xì)信息,,請參閱如何備份數(shù)據(jù)庫 (SQL Server Management Studio) 或如何創(chuàng)建完整數(shù)據(jù)庫備份 (Transact-SQL)。
注意: 另外,,可以還原現(xiàn)有的完整數(shù)據(jù)庫備份,,也可以還原差異數(shù)據(jù)庫備份,然后再還原每個后續(xù)日志備份,。 -
確保計劃創(chuàng)建鏡像數(shù)據(jù)庫所在的系統(tǒng)的磁盤驅(qū)動器空間足以存儲數(shù)據(jù)庫,。
-
除非在可從兩個系統(tǒng)訪問的網(wǎng)絡(luò)驅(qū)動器上執(zhí)行備份,否則,,將數(shù)據(jù)庫備份復(fù)制到該系統(tǒng),。
-
若要創(chuàng)建鏡像數(shù)據(jù)庫,請將完整數(shù)據(jù)庫備份還原到鏡像服務(wù)器實例上,。RESTORE DATABASE database_name 語句必須指定 WITH NORECOVERY,,其中,database_name 是要鏡像的數(shù)據(jù)庫的名稱,。
注意: 如果要逐個文件組地還原數(shù)據(jù)庫,,則要確保還原整個數(shù)據(jù)庫。 另外,我們建議,,如有可能,,鏡像數(shù)據(jù)庫的路徑(包括驅(qū)動器號)應(yīng)該與主體數(shù)據(jù)庫的路徑相同。
如果文件布局必須互不相同(例如,,如果主體數(shù)據(jù)庫位于“F:”驅(qū)動器上,,但鏡像系統(tǒng)沒有“F:”驅(qū)動器),則必須在 RESTORE STATEMENT 中加入 MOVE 選項,。
重要提示: 在不影響會話的情況下,,在鏡像會話過程中添加文件要求該文件路徑同時存在于兩個服務(wù)器上。因此,,如果在創(chuàng)建鏡像數(shù)據(jù)庫時移動了數(shù)據(jù)庫文件,,則隨后在鏡像數(shù)據(jù)庫上的添加文件操作可能會失敗,并可能會導(dǎo)致鏡像掛起,。有關(guān)如何處理失敗的創(chuàng)建文件操作的信息,,請參閱對數(shù)據(jù)庫鏡像設(shè)置進(jìn)行故障排除。 有關(guān)詳細(xì)信息,,請參閱 RESTORE (Transact-SQL) 和 RESTORE 參數(shù) (Transact-SQL),。
-
通常,在主體數(shù)據(jù)庫中必須進(jìn)行至少一次日志備份,,然后將該備份復(fù)制到鏡像服務(wù)器上并在鏡像數(shù)據(jù)庫中還原(使用 WITH NORECOVERY),。但是,如果數(shù)據(jù)庫剛剛創(chuàng)建而尚未進(jìn)行日志備份,,或者如果恢復(fù)模式剛剛從 SIMPLE 更改為 FULL,,則不必進(jìn)行日志備份。
為了將日志備份應(yīng)用到鏡像數(shù)據(jù)庫,,可以在鏡像服務(wù)器上使用 SQL Server 或 Transact-SQL:
-
在執(zhí)行完必要的日志備份之后,,如果對主體數(shù)據(jù)庫進(jìn)行了任何其他日志備份,則還必須將這些備份復(fù)制到鏡像服務(wù)器上并將每個日志備份都應(yīng)用到鏡像數(shù)據(jù)庫,,以最早的備份開始進(jìn)行,,并始終使用 WITH NORECOVERY。
安全說明: |
---|
備份數(shù)據(jù)庫時,,TRUSTWORTHY 設(shè)置為 OFF,。因此,在新的鏡像數(shù)據(jù)庫中,,TRUSTWORTHY 始終為 OFF,。如果數(shù)據(jù)庫在故障轉(zhuǎn)移之后需要得到信任,則必須執(zhí)行其他設(shè)置步驟,。有關(guān)詳細(xì)信息,請參閱如何將鏡像數(shù)據(jù)庫設(shè)置為使用 Trustworthy 屬性。 |
重要提示: |
---|
如果數(shù)據(jù)庫鏡像停止,,則必須將對主體數(shù)據(jù)庫執(zhí)行的所有后續(xù)日志備份都應(yīng)用到鏡像數(shù)據(jù)庫,,然后才可以重新啟動鏡像。 |
必須先創(chuàng)建鏡像數(shù)據(jù)庫,,才能啟動數(shù)據(jù)庫鏡像會話,。應(yīng)該在啟動鏡像會話之前執(zhí)行此操作。
此示例使用了 AdventureWorks 示例數(shù)據(jù)庫,,默認(rèn)情況下,,該數(shù)據(jù)庫使用簡單恢復(fù)模式。
- 若要對 AdventureWorks 數(shù)據(jù)庫使用數(shù)據(jù)庫鏡像,,請改用完整恢復(fù)模式:
- 將數(shù)據(jù)庫的恢復(fù)模式從 SIMPLE 更改為 FULL 之后,,創(chuàng)建一個完整備份,以用于創(chuàng)建鏡像數(shù)據(jù)庫,。由于恢復(fù)模式已更改,,因此指定了 WITH FORMAT 選項來創(chuàng)建新的媒體集。這對區(qū)分完整恢復(fù)模式下的備份與以前在簡單恢復(fù)模式下創(chuàng)建的備份非常有用,。為了實現(xiàn)此示例的目的,,在數(shù)據(jù)庫所在的驅(qū)動器上創(chuàng)建備份文件 (
C:\AdventureWorks.bak
)。
注意: 對于生產(chǎn)數(shù)據(jù)庫,,應(yīng)始終備份到單獨的設(shè)備,。 PARTNERHOST1
的主體服務(wù)器實例上,創(chuàng)建主體數(shù)據(jù)庫的完整備份,,如下所示:
- 將完整備份復(fù)制到鏡像服務(wù)器,。
- 使用 WITH NORECOVERY 將完整備份還原到鏡像服務(wù)器實例。還原命令取決于主體數(shù)據(jù)庫與鏡像數(shù)據(jù)庫的路徑是否相同,。
- 如果路徑相同:
在PARTNERHOST5
的鏡像服務(wù)器實例上,,還原完整備份,如下所示:
- 如果路徑不同:
如果鏡像數(shù)據(jù)庫的路徑與主體數(shù)據(jù)庫的路徑不同(例如,,它們所在的驅(qū)動器號不同),,則創(chuàng)建鏡像數(shù)據(jù)庫要求還原操作包含 MOVE 子句。
重要提示: 如果主體數(shù)據(jù)庫與鏡像數(shù)據(jù)庫的路徑名稱不同,,則無法添加文件,。原因是在接收添加文件操作所需的日志時,鏡像服務(wù)器實例嘗試將新文件放置在主體數(shù)據(jù)庫所在的位置,。 a\
。
RESTORE DATABASE AdventureWorks FROM DISK='C:\AdventureWorks.bak' WITH NORECOVERY, MOVE 'AdventureWorks_Data' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf', MOVE 'AdventureWorks_Log' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf'; GO
- 如果路徑相同:
- 創(chuàng)建完整備份之后,,必須在主體數(shù)據(jù)庫中創(chuàng)建日志備份,。例如,,下面的 Transact-SQL 語句將日志備份到先前的完整備份所使用的文件中:
- 在開始鏡像之前,必須應(yīng)用必要的日志備份(以及所有后續(xù)日志備份),。
例如,,以下 Transact-SQL 語句還原C:\AdventureWorks.bak
中的第一個日志:
- 如果在開始鏡像之前進(jìn)行任何其他日志備份,則還必須使用 WITH NORECOVERY 按順序?qū)⑺羞@些日志備份還原到鏡像服務(wù)器上,。
例如,,以下 Transact-SQL 語句還原C:\AdventureWorks.bak
中的其他兩個日志:
有關(guān)設(shè)置數(shù)據(jù)庫鏡像、顯示安全設(shè)置,、準(zhǔn)備鏡像數(shù)據(jù)庫,、設(shè)置伙伴以及添加見證服務(wù)器的完整示例,請參閱設(shè)置數(shù)據(jù)庫鏡像,。