91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL Server數據庫鏡像基于可用性組故障轉移

發布時間:2020-07-12 21:00:39 來源:網絡 閱讀:3224 作者:UltraSQL 欄目:數據庫

SQL Server數據庫鏡像基于可用性組故障轉移

 

微軟從SQL Server 2005開始引入數據庫鏡像,很快成為一個流行的故障轉移解決方案。數據庫鏡像的一個大的問題是故障轉移是基于數據庫級別的,因此,如果某個數據庫故障,鏡像只會針對這個數據庫切換,但是,其他數據庫都仍然在主服務器上。缺點是越來越多的應用程序是基于多個數據庫來構建,所以,如果某一個數據庫故障轉移而其他數據庫仍然在主服務器上,那應用程序將無法工作。當這種情況發生的時候,我如何知曉?并執行該應用程序調用的所有數據庫一起故障轉移呢?

 

在SQL Server的所有功能中,有一種方式可以在數據庫鏡像故障發生時得到告警或者檢查發生的事件。用于數據庫鏡像的事件提醒并不如你想象的那樣直接,但它可以實現該功能。

 

對于數據庫鏡像,你可以選擇使用跟蹤事件,或者配置SQL Server告警來檢查對于數據庫鏡像狀態的改變的WMI(Windows Management Instrumentation)事件。

 

在開始之前,我們需要一些準備工作:

 

鏡像數據庫和msdb數據庫必需啟用service broker。可以使用如下查詢來檢查:

SELECT name, is_broker_enabled
FROM sys.databases

 

如果service broker的值不為1,你可以對每個數據庫使用以下命令開啟。

ALTER DATABASE msdb SET ENABLE_BROKER

 

如果SQL Server代理正在運行,那么這個命令將不會完成。你需要先停止SQL Server代理,運行以上命令,然后再次啟動SQL Server代理。

 

最后,如果SQL Server代理沒有運行,你需要啟動它。

 

創建告警

 

首先,我們來創建告警,與其他告警不同的是,我們會選擇”WMI event alert“類型。

 

使用SSMS連接到實例,展開SQL Server Agent,在Alerts上點擊右鍵,選擇“New Alert“。

SQL Server數據庫鏡像基于可用性組故障轉移

 

彈出”New Alert“界面,選擇“WMI event alert”。需要注意一下查詢的Namespace。默認,SQL Server會根據你操作的實例選擇正確的名稱空間。

SQL Server數據庫鏡像基于可用性組故障轉移

 

對于Query,使用以下查詢:

SELECT * FROM DATABASE_MIRRORING_STATE_CHANGE WHERE State = 7 OR State = 8

 

該數據從WMI獲取,當數據庫鏡像狀態變為7(手動故障轉移)或8(自動故障轉移)時,將會觸發作業或者提醒。

 

此外,你可以進一步對于每一個特定的數據庫定義查詢:

SELECT * FROM DATABASE_MIRRORING_STATE_CHANGE WHERE State = 8 AND DatabaseName = 'Test'

 

可以閱讀下聯機幫助中DATABASE_MIRRORING_STATE_CHANGE的內容。

以下是可以被監控到的不同狀態改變的列表。更多內容,可以從Database Mirroring State Change Event Class里找到。

  • 0 = Null Notification

  • 1 = Synchronized Principal with Witness

  • 2 = Synchronized Principal without Witness

  • 3 = Synchronized Mirror with Witness

  • 4 = Synchronized Mirror without Witness

  • 5 = Connection with Principal Lost

  • 6 = Connection with Mirror Lost

  • 7 = Manual Failover

  • 8 = Automatic Failover

  • 9 = Mirroring Suspended

  • 10 = No Quorum

  • 11 = Synchronizing Mirror

  • 12 = Principal Running Exposed

  • 13 = Synchronizing Principal

 

在Response界面,可以配置當事件發生時如何處理。你可以配置當告警觸發時執行一個作業,或者給操作者發送一個提醒。

SQL Server數據庫鏡像基于可用性組故障轉移

 

最后,如下所示可以配置額外的選項。

SQL Server數據庫鏡像基于可用性組故障轉移

 

配置示例

 

例如,一個應用程序有調用3個數據庫(Customer、Orders和Log),如果其中一個數據庫自動切換,你也想要兩外兩個數據庫也一起故障轉移。此外,這個鏡像配置了一個見證服務器,如果發生故障,會自動故障轉移。

 

以下展示了如何配置。

 

首先,我們只針對這3個數據庫配置告警。

SQL Server數據庫鏡像基于可用性組故障轉移

 

然后配置告警觸發后運行哪個作業。

SQL Server數據庫鏡像基于可用性組故障轉移

 

我們需要創建“Failover Databases”作業,用于當告警觸發的時候運行。

 

對于SQL Server代理的“Failover Databases”作業,作業步驟如下:

IF EXISTS (SELECT 1 FROM sys.database_mirroring WHERE db_name(database_id) = N'Customer' AND mirroring_role_desc = 'PRINCIPAL')
ALTER DATABASE Customer SET PARTNER FAILOVER
GO
IF EXISTS (SELECT 1 FROM sys.database_mirroring WHERE db_name(database_id) = N'Orders' AND mirroring_role_desc = 'PRINCIPAL')
ALTER DATABASE Orders SET PARTNER FAILOVER
GO
IF EXISTS (SELECT 1 FROM sys.database_mirroring WHERE db_name(database_id) = N'Log' AND mirroring_role_desc = 'PRINCIPAL')
ALTER DATABASE Log SET PARTNER FAILOVER
GO

 

以上的ALTER DATABASE命令對其他沒有自動轉移的數據庫強制故障轉移。這跟你再GUI界面上點擊“Failover”是一樣的。


參考:

https://msdn.microsoft.com/en-us/library/ms191502.aspx

https://msdn.microsoft.com/en-us/library/ms186449.aspx



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汶上县| 沽源县| 四会市| 牙克石市| 泰兴市| 黄冈市| 林口县| 内江市| 临邑县| 彰武县| 泊头市| 桑日县| 莱州市| 府谷县| 孟州市| 大关县| 延寿县| 清新县| 五常市| 云安县| 临高县| 淮北市| 东明县| 泰宁县| 湘乡市| 南召县| 天门市| 定安县| 揭东县| 三门县| 武川县| 大同县| 汉源县| 资源县| 界首市| 江西省| 讷河市| 沧源| 武鸣县| 榆社县| 六枝特区|