強制服務 (有遺失資料的可能)

資料庫鏡像會提供強制服務 (有遺失資料的可能) 做為損毀復原方法,以便讓您將鏡像伺服器當做暖待命伺服器使用。只有當主體伺服器在鏡像工作階段中與鏡像伺服器中斷連接時,才能進行強制服務。由於強制服務會面臨可能遺失資料的風險,所以應該小心並謹慎使用。

強制服務的支援會根據工作階段的作業模式和狀態而定,如下所示:

  • 一般而言,每當主體伺服器中斷連接時,高效能模式就可支援強制服務。不過,高效能模式工作階段的見證可以存在 (非必要)。在此情況下,強制服務會要求鏡像伺服器和見證彼此連接。

  • 每當主體伺服器中斷連接時,不含自動容錯移轉的高安全性模式就可支援強制服務。

  • 每當鏡像伺服器和見證彼此連接,而且它們都沒有連接至主體伺服器時 (只要鏡像伺服器上次連接至主體時,它並不在回復鏡像資料庫的處理序中),具有自動容錯移轉的高安全性模式就可支援強制服務。

只有在您必須立即還原資料庫的服務,並且願意承擔遺失資料的風險時,才建議使用強制服務。強制服務的效果類似於在可能遺失資料的風險下移除鏡像,不過在繼續進行鏡像作業時,強制服務可方便您重新同步處理資料庫。強制服務會將主體角色平順地轉換至鏡像資料庫。鏡像伺服器將擔任主體伺服器的角色,並立即提供其資料庫副本來服務用戶端。新的主體資料庫會在沒有鏡像的情況下執行 (亦即,公開執行)。

重要事項重要事項

如果主體伺服器僅與資料庫鏡像工作階段中斷連接,但它仍在執行時,某些用戶端可能會繼續存取原始的主體資料庫。在您進行強制服務之前,請務必防止用戶端存取原始的主體伺服器。否則,在強制服務之後,原始的主體資料庫和目前的主體資料庫可能會彼此獨立更新。

強制服務的一般情況

下圖將說明強制服務的一般情況 (有遺失資料的可能)。

正在強迫有遺失資料之可能的服務

在該圖中,原始的主體伺服器 Partner_A 無法讓鏡像伺服器 Partner_B 使用,進而導致鏡像資料庫中斷連接。在確定用戶端無法使用 Partner_A 後,資料庫管理員便在 Partner_B 上進行強制服務 (有遺失資料的可能)。Partner_B 成為主體伺服器,並「公開」執行資料庫 (亦即,未鏡像)。此時,用戶端可以重新連接至 Partner_B

Partner_A 可以使用後,它就會重新連接至新的主體伺服器,並重新加入工作階段和擔任鏡像角色。鏡像工作階段會立即暫停,而不會與新的鏡像資料庫進行同步處理。暫停工作階段可讓資料庫管理員決定要繼續進行工作階段 (在極端情況下),還是移除鏡像並嘗試搶救之前主體資料庫中的資料。在這個情況中,資料庫管理員選擇繼續進行鏡像。此時,Partner_A 會接管鏡像伺服器的角色並將之前的主體資料庫回復至上次成功同步處理交易的時間點。如果進行強制服務之前,任何已認可的交易未寫入鏡像伺服器的磁碟,這些交易就會遺失。然後,Partner_A 會藉由套用自從之前鏡像伺服器成為新主體伺服器以來在新主體資料庫上進行的所有變更,向前復原新的鏡像資料庫。

[!附註]

雖然高效能模式不需要見證,但是如果設定了見證,則只有在見證目前已連接到鏡像伺服器時,才能進行強制服務。

強制服務的風險

您必須了解,強制服務可能會導致資料遺失。由於鏡像伺服器無法與主體伺服器進行通訊,而且無法保證兩個資料庫會同步處理,所以可能會遺失資料。此外,強制服務會啟動新的復原分岔。由於原始的主體資料庫和鏡像資料庫位於不同的復原分岔,所以每個資料庫現在可能會包含其他資料庫沒有的資料:原始的主體資料庫會包含尚未從傳送佇列傳送至之前鏡像資料庫的所有變更 (未傳送記錄),而之前的鏡像資料庫會包含強制服務之後進行的所有變更。

[!附註]

如需有關復原分岔的詳細資訊,請參閱<復原路徑>。

如果因為主體伺服器故障而進行強制服務,潛在資料遺失就會根據故障之前是否有任何交易記錄未傳送至鏡像伺服器而定。在高安全性模式下,只有在鏡像資料庫同步處理後才會發生這種情況。在高效能模式下,累積未傳送的記錄永遠是可能的。

強制服務的含意會部分根據工作階段是否具有見證而定:

  • 如果見證不存在,只要夥伴中斷連接 (例如,由於網路連接中斷),就可以進行強制服務。如果原始的主體伺服器仍在執行,這兩個夥伴就會同時擁有主體角色。連接至新主體伺服器的用戶端將會存取目前的資料庫版本,而連接至原始主體伺服器的用戶端則會存取原始的主體資料庫。這種情況就會增加資料遺失的可能性。如果允許夥伴重新連接,原始的主體伺服器就會擔任鏡像角色並將它的資料庫狀態變更為「正在復原」,然後再暫停鏡像。如果繼續進行工作階段,就會遺失自最近中斷連接以來位於原始主體資料庫上而記錄位於傳送佇列中的交易。此外,在強制服務後發生的所有交易也會遺失。

  • 如果見證存在,當鏡像伺服器同時與主體伺服器和見證中斷連接後,只要後面兩者保持相互連接的狀態,主體就會公開執行。如果主體伺服器之後與見證中斷連接,它就會停止服務資料庫。之後,當鏡像伺服器重新連接至見證時,就可以進行強制服務。如果進行強制服務,當原始的主體伺服器重新連接時,在原始主體伺服器公開執行時進行的所有變更都會遺失。

如需詳細資訊,請參閱此主題後面的「管理潛在資料遺失」。

管理潛在資料遺失

在強制服務之後,一旦之前的主體伺服器可以使用,假設其資料庫未損毀,您就可以嘗試管理潛在資料遺失。管理潛在資料遺失的可用方法會根據原始的主體伺服器是否已重新連接至夥伴並重新加入鏡像工作階段而定。假設原始的主體伺服器可以存取新的主體執行個體,就會自動且透明地進行重新連接。

原始的主體伺服器已重新連接

一般而言,在發生故障後,當原始的主體伺服器重新啟動時,它就會迅速重新連接至夥伴。重新連接後,原始的主體伺服器就會成為鏡像伺服器。它的資料庫會成為鏡像資料庫並進入正在復原的狀態,然後再暫停工作階段。除非您繼續進行鏡像,否則鏡像資料庫不會回復。

不過,正在復原的資料庫無法存取。因此,您無法檢查資料庫,以便評估繼續進行鏡像時哪些資料會遺失。因此,要繼續進行或移除鏡像的決定會根據您是否願意完全接受任何資料遺失而定。

  • 如果您無法接受遺失任何資料,就應該移除鏡像以便搶救資料。

    移除鏡像可讓資料庫管理員復原原始的主體資料庫並嘗試復原已經遺失的資料。不過,當之前的鏡像資料庫成為線上狀態時,之前的夥伴將會服務相同名稱但內容不同的資料庫。資料庫管理員必須讓其中一個資料庫無法供用戶端存取,藉以避免資料庫分歧擴大並防止用戶端容錯移轉問題發生。

  • 如果您可以接受遺失任何資料,就可以繼續進行鏡像。

    繼續進行鏡像會導致新的鏡像資料庫回復至同步處理資料庫的第一個步驟。如果發生故障時,有任何記錄檔記錄正在傳送佇列中等候,就會遺失對應的交易,即使這些交易已認可也一樣。

原始的主體伺服器尚未重新連接

如果您可以暫時防止原始主體伺服器透過網路重新連接至新的主體伺服器,就可以檢查原始的主體伺服器,以便評估繼續進行鏡像時哪些資料會遺失。

  • 如果可以接受潛在資料遺失

    請允許原始的主體伺服器重新連接至夥伴。重新連接會導致鏡像暫停。若要繼續進行鏡像,只要繼續進行工作階段即可。之前的主體伺服器會擔任鏡像角色。新的鏡像伺服器會卸除原始的復原分岔,並遺失從未傳送至之前鏡像伺服器或由它接收的任何交易。

  • 如果無法接受資料遺失

    如果原始主體資料庫包含繼續工作階段後便會遺失的重要資料,您可以移除鏡像,以便將這些資料保存在原始主體伺服器上。建議您在這個時候嘗試備份主體記錄的結尾。接著,您可以從原始主體資料庫匯出要搶救的資料,再將它匯入目前的主體資料庫中,以便更新目前的主體 (先前的鏡像資料庫)。我們建議您儘快建立更新資料庫的完整資料庫備份。

    若要使用更新資料庫做為初始主體資料庫來重新建立鏡像,請使用此備份 (以及至少一個後續記錄備份) 來建立新的鏡像資料庫。移除鏡像之後建立的每個記錄備份都必須套用。因此,我們建議延遲主體資料庫的其他記錄備份,直到新的鏡像工作階段啟動為止。