適用於:SQL Server
只要為資料庫鏡像工作階段設定見證伺服器,就需要仲裁。 仲裁是資料庫鏡像工作階段中的多個伺服器執行個體彼此連接時所存在的關係。 一般而言,仲裁機制通常由三個相互連接的伺服器執行個體組成。 設定見證後,必須具備法定人數,資料庫才能可供使用。 仲裁是為支援自動容錯移轉的高安全性模式所設計,可確保資料庫一次只會由其中一個夥伴擁有。
如果特定的伺服器執行個體與鏡像工作階段的連接中斷,該執行個體便會失去仲裁。 如果沒有任何伺服器執行個體已連線,工作階段就會失去法定數目,而資料庫也會變得無法使用。 仲裁機制可分為三種類型:
完整法定人數包括雙方和見證人。
見證與夥伴的法定人數組合由見證和任一夥伴組成。
夥伴對夥伴法定人數由兩個夥伴組成。
下圖顯示這些仲裁類型。
只要目前的主伺服器具有仲裁,該伺服器便擁有主體角色,並繼續提供資料庫服務,除非資料庫擁有者執行手動容錯移轉。 如果主體伺服器失去了仲裁,就會停止為資料庫服務。 只有在主資料庫失去仲裁時,才可能發生自動容錯移轉,這可保證該主資料庫已不再提供資料庫服務。
中斷連接的伺服器執行個體會將其最新的角色儲存在工作階段中。 通常,已中斷連線的伺服器執行個體會在重新啟動並重新取得法定節點數後,重新連線到工作階段。
重要
只有當您想要使用具有自動容錯移轉的高安全性模式時,才需要設定見證。 在不需要見證的高效能模式中,強烈建議您將 WITNESS 屬性設為 OFF。 如需見證對高效能模式影響的資訊,請參閱 資料庫鏡像作業模式。
高安全性模式工作階段中的法定人數
在高安全性模式中,仲裁機制可藉由提供一種情境,讓具有仲裁的伺服器執行個體裁定哪個夥伴擁有主體角色,從而支援自動容錯移轉。 如果主要伺服器達到法定節點數,便會提供資料庫服務。 如果主伺服器在已同步的鏡像伺服器與見證伺服器仍保有仲裁時失去仲裁,就會發生自動容錯移轉。
高安全性模式的仲裁狀況如下:
由雙方夥伴和見證人組成的完整法定人數。
一般情況下,三個伺服器執行個體皆會參與三方仲裁機制,稱為 完整仲裁。 在完整仲裁下,主伺服器及鏡像伺服器會繼續各自執行其角色(除非發生手動容錯移轉)。
由見證和任一夥伴所組成的見證與夥伴法定人數。
如果由於失去其中一個夥伴,而失去夥伴之間的網路連接,則可能會發生以下狀況:
鏡像伺服器已遺失,而主伺服器與見證伺服器仍保有仲裁。
在這種情況下,主體將其資料庫設定為 DISCONNECTED,並且在鏡像設為 SUSPENDED 的狀態中執行。 (這稱為在未受保護狀態下執行,因為資料庫目前未進行鏡像。)當鏡像伺服器重新加入工作階段時,該伺服器會重新以鏡像身分取得仲裁,並開始重新同步其資料庫副本。
主伺服器已失效,而見證伺服器與鏡像伺服器仍保有仲裁。
在此情況下,會自動進行容錯移轉。 如需詳細資訊,請參閱 Database Mirroring Operating Modes。
所有伺服器執行個體全都失去仲裁,但隨後鏡像和見證會重新連線。 在這種情況下,將不會提供資料庫。
極少數情況下,容錯移轉夥伴之間的網路連線會中斷,但雙方仍同時與見證伺服器維持連線。 在此事件中,存在兩個彼此獨立的見證者與夥伴之間的仲裁群組,而見證者則作為居中聯絡者。 見證通知鏡像伺服器,主體伺服器仍然連接。 因此,不會發生自動容錯移轉。 相反地,鏡像伺服器會保留鏡像角色,並等待重新連線到主體伺服器。 如果此時重做佇列中包含日誌記錄,鏡像伺服器會繼續向前復原鏡像資料庫。 重新連線後,鏡像伺服器會重新同步鏡像資料庫。
「夥伴對夥伴仲裁」,由兩個夥伴組成。
只要夥伴仍保有仲裁,資料庫就會持續處於 SYNCHRONIZED 狀態,且仍可進行手動容錯移轉。 若無見證伺服器,就無法進行自動容錯移轉;但當見證伺服器重新取得仲裁票數時,工作階段會恢復正常運作,並再次支援自動容錯移轉。
工作階段失去法定人數。
如果所有伺服器執行個體彼此失去連線,則表示該工作階段已失去仲裁。 當伺服器執行個體彼此重新連線時,它們會重新取得法定節點數。
如果主體伺服器與其他任一伺服器執行個體重新連接,資料庫便可使用。
如果主伺服器仍處於中斷連線狀態,但鏡像伺服器與見證伺服器重新互相連線,則無法進行自動容錯移轉,因為可能會發生資料遺失。 因此,資料庫仍將無法使用,直到主要伺服器重新加入工作階段為止。
當三個伺服器執行個體都重新連線後,即可重新取得完整仲裁,且工作階段也會恢復正常運作。
重要
當工作階段採用夥伴對夥伴仲裁票數時,如果任一夥伴失去仲裁票數,該工作階段也會失去仲裁票數。 因此,如果您預期見證會有較長一段時間維持中斷連線,我們建議您暫時將見證從工作階段中移除。 移除見證便會移除對仲裁的需求。 然後,如果鏡像伺服器中斷連線,主要伺服器仍可繼續為資料庫提供服務。 如需如何加入或移除見證的資訊,請參閱 資料庫鏡像見證。
仲裁機制如何影響資料庫可用性
下圖顯示見證與夥伴如何共同合作以確保在指定時間內,只有一個夥伴可擁有主體角色,而且只有目前的主體伺服器可使其資料庫上線。 這兩種情境一開始都具備完整法定人數,且 Partner_A 擔任主要角色,Partner_B 擔任鏡像角色。
情境 1 顯示,原始主伺服器 (Partner_A) 發生故障後,見證伺服器與鏡像伺服器一致認定主伺服器 Partner_A 已無法使用,並形成法定人數。 接著,由鏡像 Partner_B 承擔主要角色。 會發生自動容錯移轉,而 Partner_B 會使其資料庫副本上線。 接著 Partner_B 會關閉,且資料庫會離線。 稍後,先前的主體伺服器 Partner_A 會重新連線到見證並重新取得仲裁,但在與見證通訊時,Partner_A 得知它無法讓其資料庫複本上線,因為 Partner_B 目前擁有主體角色。 當 Partner_B 重新加入工作階段時,它會讓資料庫重新上線。
在情境 2 中,見證端失去法定人數,而夥伴 Partner_A 和 Partner_B 彼此之間仍保有法定人數,且資料庫仍維持上線狀態。 接著,合作夥伴也會失去仲裁多數,而資料庫也會離線。 稍後,主要伺服器 Partner_A 會重新連線到見證,重新取得法定人數。 見證伺服器確認 Partner_A 仍擁有主要角色,且 Partner_A 會使資料庫重新上線。