自從SQL Server 2000以來,你已經能夠通過使用復制來創建一個備用的服務器、傳輸日志,以及備份和重新存儲了——但是現在微軟又引入了一個內建的工具,它可以實現自動的錯誤恢復。數據庫鏡像是SQL Server 2005的一個新特性,它允許你將一個SQL Server中的數據庫內容鏡像到另一個SQL Server上。它還讓你可以在發生錯誤的時候,通過鏡像數據庫來進行錯誤恢復。
Edgewood Solutions 的Greg Robidoux 回答了我們一些SQL Server 2005中有關數據庫鏡像的常見問題,同時還解釋了為什麼你現在就應該開始測試這個內建的功能來看看它最終是否會給你的環境帶來好處。
什麼是數據庫鏡像?
Robidoux:數據庫鏡像是將數據庫事務處理從一個SQL Server數據庫移動到不同SQL Server環境中的另一個SQL Server數據庫中。鏡像的拷貝是一個備用的拷貝,不能直接訪問;它只用在錯誤恢復的情況下。
因為是在SQL Server 2005中新引入的特性,這個功能只能用在,這個版本的軟件中。在某種程度上說,它是復制和日志傳輸的混合體:你所有的事物都在事物級別(復制)上移動(日志傳輸)到你的數據庫的一個鏡像拷貝上,同時減少了你在實現日志傳輸或者復制的時候可能會面臨的問題。
復制包括大量的移動部分,並且如果你的數據庫計劃經常改變的話,要保證你的復制運行得流暢也是困難重重。對於日志傳輸,為了保證同步,同樣需要實現很多的處理,例如創建備份、拷貝備份,以及備份重存。如果有一個進程崩潰了,整個處理過程就崩潰了。
數據庫鏡像的工作方式是什麼?
Robidoux :要進行數據庫鏡像所需的最小需求包括了兩個不同的SQL Server運行環境。主服務器被稱為“基本的”,第二個服務器被稱作“鏡像的”。基本數據庫就是你實際用著的數據庫,鏡像數據庫就是你的數據庫的備用拷貝。當事務寫入你的基本服務器的時候,他們也同樣被傳送到並寫入你的鏡像數據庫中。
除了基本和鏡像之外,你還可以引入另一個可選的組件,名為“證人”。證人數據庫是第三個SQL Server 2005運行實例,它是在判斷什麼時候進行錯誤恢復的時候,用於基本和鏡像之間內部交流。只有當你想實現自動錯誤恢復的時候用到這個選項。它實現了2比1投票的能力,當我的一個組件不可達,並因此需要進行錯誤恢復的時候。證人服務器只有在你想實現自動錯誤恢復的時候才需要用到。
實現的方式是什麼?
Robidoux :數據庫鏡像提供了三種實現的方式。根據你想要用什麼方式來進行錯誤恢復處理來進行選擇。
高可用性:這個操作模式選項允許你在兩台服務器上同步事務寫入,並支持自動錯誤恢復。要使用這個選項,你必須還要使用一個證人服務器。
高保護:這個選項可以讓你在兩台服務器上同步事物寫入,但是錯誤恢復是手工的。因為自動的錯誤恢復不是這個選項的一部分,所以也不會用到證人服務器。
高性能:這個選項不關心兩台服務器上的寫入是否是同步的,因此在性能上有所提高。當使用這個選項的時候,你只能假設鏡像服務器上的所有事情都是成功完成。這個選項只允許手工的錯誤恢復,因此不會用到證人服務器。
時刻記住將你的數據自動恢復到第二個拷貝才是數據庫鏡像的真正好處。因此,大多數的實現可能都是使用的高可達性方式。其他的選項仍然提供了內建的錯誤恢復過程,但是前提是你在發生錯誤的時候對進行自動的錯誤恢復懷有極大的興趣。
數據庫鏡像可以工作在哪幾個版本上?
Robidoux :數據庫鏡像只能在標准版、開發版和企業版的SQL Server 2005中找到。基本服務器和鏡像服務器的SQL Server運行實例都需要是這幾個版本。證人服務器可以運行在任何版本的SQL Server上。此外,還有其他的一些特性是SQL Server的開發版和企業版上特有的,但是標准版具有最基本的功能。
總結
現如今,SQL Server 2005的數據庫鏡像已經關掉了,但是所有的功能仍然存在。數據庫鏡像可以通過使用檢索標志來打開——但是微軟現在並不支持這個功能了,所以不要在你的產品環境中運行它。數據庫鏡像將會在本年年末完全實現並被支持。
要打開這個特性並開始你的測試,你可以看看以前的專家知識解答。微軟正在尋找額外的反饋,所以你可以看看它是否可以作為你的SQL Server環境的候選。