Sql-Server

手動將 SQL 實例移動到另一個節點會導致立即數據庫鏡像故障轉移

  • March 7, 2013

我有一個兩節點 SQL 集群(2008 R2)。

該 SQL 實例中的一些數據庫使用具有自動故障轉移的高安全性鏡像到遠端站點上的另一台伺服器。這些數據庫的鏡像連接超時值設置為 90 秒。

當我將 SQL 從集群中的一個節點移動到另一個節點時,使用故障轉移集群管理器應用程序的“將此服務或應用程序移動到另一個節點”選項,被鏡像的數據庫會立即故障轉移到鏡像。

這是不受歡迎的行為。我設置鏡像連接超時值的原因是,我只想在集群完全失敗並且沒有正常執行的節點時故障轉移到數據庫鏡像。

有什麼辦法可以做到這一點?感覺好像它應該是可能的,否則混合集群和自動故障轉移數據庫鏡像的概念將不可行,因為集群中的每個節點故障轉移都會觸發鏡像故障轉移。

謝謝。

防止鏡像故障轉移的一種方法是:

  1. 暫停鏡像ALTER DATABASE XYZ SET PARTNER SUSPEND
  2. 移動 SQL 實例
  3. 恢復鏡像ALTER DATABASE XYZ SET PARTNER RESUME

該實例正在故障轉移到鏡像,因為見證和輔助都無法再看到主實例。

聽起來您正試圖通過結合鏡像和集群來重新創建 SQL Server 2012 可用性組。

數據庫鏡像只在所謂的“軟”錯誤上超時。諸如集群故障轉移之類的硬錯誤會立即報告給鏡像會話,從而導致立即故障轉移。在http://msdn.microsoft.com/en-us/library/ms190913.aspx閱讀更多資訊

硬錯誤的可能原因包括(但不限於)以下情況:

A broken connection or wire

A bad network card

A router change

Changes in the firewall

Endpoint reconfiguration

Loss of the drive where the transaction log resides

Operating system or process failure

可能導致鏡像超時的情況包括(但不限於)以下情況:

Network errors such as TCP link time-outs, dropped or corrupted packets, 
   or packets that are in an incorrect order.

A hanging operating system, server, or database state.

A Windows server timing out.

Insufficient computing resources, such as a CPU or disk overload, the transaction 
   log filling up, or the system is running out of memory or threads. In these 
   cases, you must increase the time-out period, reduce the workload, or change 
   the hardware to handle the workload. 

有關鏡像和潛在問題的更多資訊,您可能希望查看我的問題What can cause a mirroring session to timeout then failover? SQL 伺服器 2005

引用自:https://dba.stackexchange.com/questions/36090