如何快速掌握SQL Server中的日誌轉移

集羣是一種實現高可用性的有效解決方案,有時它會適得其反。而且,它還非常昂貴。因此,數據庫管理員可使用日誌轉移代替集羣來提供較高的可用性。

如何快速掌握SQL Server中的日誌轉移

日誌轉移是這樣一種處理過程,它能將某一數據庫中的事務日誌文件依次轉存到備份的數據庫中,進而為這一數據庫創建一個“近乎”熱備份。SQL Server 2000的數據庫引擎中設置了日誌轉移功能,並在其中進行處理。所以它會自動完成復原到備份服務器的進程,而不需要數據庫管理員手動操作。只有你的產品服務器操作失敗,你才需手動完成到備份服務器的復原進程。(註釋:儘管SQL Server 7.0和2005中均有日誌轉移功能,但本文主要針對SQL Server 2000。)

為什麼要使用日誌轉移?

日誌轉移是一種解決高可用性的措施,並且十分有效。同樣作為高可用性的措施方案,日誌轉移相對集羣來説,最大的好處是它要便宜許多。這是因為,使用集羣功能有硬件要求,而日誌轉移則不需要。

日誌轉移在數據庫與數據庫而非服務器與服務器之間進行;因此才有可能將備份數據庫存儲在你已用作其他用途的服務器上。但如果轉移失敗則有可能會出現問題,這時你可換用備份數據庫,這種選擇是可用的。

日誌轉移相對比較容易安裝。SQL Server提供了非常完善的嚮導幫助你安裝這個進程。

日誌轉移允許你保存分佈在不同地理位置中的宂餘數據,SQL Server的集羣功能則很難做到這一點。這一特點十分出眾,因為,當你的數據中心遭到災難時,你仍能在備份服務器中將其恢復過來。而在相同的`數據中心,如果你使用的是集羣功能,你就會陷入麻煩。

日誌轉移的另一優點是你能將備份數據庫作為報告數據庫使用,這對許多公司來説是很不錯的選擇。但如果你決定了用這個備份數據庫作報告使用,就必須注意它的侷限性。使用原始數據庫中的日誌時,SQL Server 要求指定唯一的通道,所以,當日志文件正在被應用時,報告則不能同時進行。

使用日誌轉移要考慮的相關因素

在將日誌轉移作為高可用性的方案來使用時,我們必須考慮以下幾點因素。由於從原始數據庫到備份數據庫有一個潛伏期,對你的公司而言,它並非一定是可行的實現高可用性的一種解決方案。潛伏期由數據庫管理員設置,時間也因需要而縮短, 但永遠不能避免。

日誌轉移中沒有設置恢復功能,這就意味着在將日誌轉移到備份服務器上時,這些日誌都暫時不可用。因此,數據庫管理員必須在將備份數據庫放到網上前完成一系列的操作,這些步驟包括:

將已存儲在備份數據服務器上原始數據庫裏的備份標籤存儲起來。一旦所有的標籤被存儲後,數據庫就必須得到恢復,然後放到網上。

一旦所有的數據庫都已放在網上,所有需要訪問數據庫的應用程序就需要改變自身的鏈接。如果你不能將應用程序儘快指向剛剛恢復的數據庫,你就前功盡棄了。

一個SQL Server的實例能用於監控日誌轉移。這個實例可以在原始數據庫、備份數據庫或單獨的數據庫中。任何一種版本的SQL Server都能用於SQL Server監控。

註釋:數據庫登錄必須在原始數據庫與備份數據庫之間同時進行。