跳至內容

當我的 Amazon RDS for Microsoft SQL Server 資料庫執行個體發生鎖死事件時,我該如何收到通知?

2 分的閱讀內容
0

我有一個執行 Microsoft SQL Server 的 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體。我想在 RDS 資料庫執行個體發生鎖死事件時立即收到通知。

簡短說明

SQL Server 鎖死監視器偵測到鎖死事件時,監視器會將其中一個交易選為受害者。監視器會回復受害者交易,並在錯誤日誌中發出錯誤碼 1205。

若要解決此問題,請先啟用鎖死追蹤旗標 1222 和 1204,以在 SQL Server 錯誤日誌中擷取鎖死事件。接著,將 SQL Server 錯誤日誌發佈至 Amazon CloudWatch Logs。最後,建立 CloudWatch 警示和 Amazon Simple Notification Service (Amazon SNS) 通知,以便在發生鎖死事件時傳送警示。

解決方法

透過 RDS 參數群組啟用追蹤旗標

完成以下步驟:

**注意:**如果您已有自訂參數群組,請前往步驟 5。

  1. 開啟 Aurora and RDS console (Aurora 和 RDS 主控台),然後在導覽窗格中選擇 Parameter groups (參數群組)。
  2. 選擇 Create parameter group (建立參數群組)。
  3. Parameter group family (參數群組系列),選擇您要使用的 SQL Server 版本和版本類型。例如,SQL Server 2016 Enterprise Edition 使用 sqlserver-ee-13.0
  4. 輸入群組名稱和描述,然後選擇 Create (建立)。
  5. Parameter groups (參數群組) 頁面上,選取群組。
  6. 選擇 Edit parameters (編輯參數),然後選取 12041222
  7. 將 1204 和 1222 的值變更為 1
  8. 選擇 Preview changes (預覽變更),然後選擇 Save changes (儲存變更)。
  9. 在導覽窗格中,選擇 Databases (資料庫)。
  10. DB identifier (資料庫識別碼) 區段中,選取您的資料庫執行個體。
  11. 選擇 Modify (修改)。
  12. Database options (資料庫選項) 區段中,於 DB parameter group (資料庫參數群組),選擇該參數群組。
  13. 重新啟動資料庫執行個體,讓變更生效。

將 SQL Server 錯誤日誌推送至 CloudWatch Logs

完成以下步驟:

  1. 開啟 Aurora and RDS console (Aurora 和 RDS 主控台),然後在導覽頁面中選擇 Databases (資料庫)。
  2. 選取資料庫執行個體,然後選擇 Modify (修改)。
  3. Log exports (日誌匯出) 中,選取 Error log (錯誤日誌),然後選擇 Continue (繼續)。
  4. Scheduling of modifications (修改排程) 區段中,選擇 Apply immediately (立即套用),然後選擇 Modify DB Instance (修改資料庫執行個體)。
    注意:您的資料庫執行個體目前處於正在修改狀態。請等到狀態返回可用
  5. Databases (資料庫) 頁面上,選擇您的資料庫執行個體,然後選擇 Actions (動作)。
  6. 如果您已建立新的參數群組,請重新啟動資料庫執行個體,讓變更生效。

資料庫執行個體上線後,請在資料庫執行個體上執行 DBCC TRACESTATUS (1222, 1204),確認鎖死追蹤狀態。如果 Global trace 命令在輸出視窗中傳回 1,表示已啟用鎖死追蹤。

模擬鎖死交易

若要確認 SQL Server 監視器是否已將鎖死受害者查詢寫入錯誤日誌,請在資料庫執行個體上模擬鎖死交易。您可以在資料庫執行個體上執行以下查詢,以檢查 SQL Server 錯誤日誌中的鎖死事件:

sp_readerrorlog 0, 1, 'deadlock'

建立篩選模式和 CloudWatch 警示

完成以下步驟:

  1. 開啟 CloudWatch console (CloudWatch 主控台)。
  2. Logs (日誌) 區段中,選擇 Log groups (日誌群組)。
  3. 選取資料庫執行個體的 SQL Server 錯誤日誌。日誌會以下列格式列出:(/aws/rds/instance/<Your-RDS-Instance-Name>/error)
  4. 選擇 Create metric filter (建立指標篩選條件)。
  5. Define Logs Metric Filter (定義日誌指標篩選條件) 頁面上,於 Filter Pattern (篩選條件模式) 區段中輸入 deadlock
  6. 選擇 Assign metric (指派指標)。
  7. Filter Name (篩選條件名稱) 和 Metric Name (指標名稱) 欄位中,輸入 deadlock
  8. 選擇 Create Filter (建立篩選條件),然後選擇 Create alarm (建立警示)。
  9. Specify metric and conditions (指定指標和條件) 頁面上,於 Metric name (指標名稱) 下輸入 deadlock
  10. Statistic (統計資料) 下,輸入 minimum
  11. Period (期間) 下,從下拉式清單中選擇警示的期間,例如 1 minute
  12. Conditions (條件) 區段中,選擇以下設定:
    Threshold type: Static
    Whenever Deadlock is: Greater > threshold
    Than: 0
  13. 選擇 Next (下一步)。
  14. Notification (通知) 區段中,於 Alarm state trigger (警示狀態觸發程序) 下選擇 In alarm (警示中)。
  15. 訂閱 Amazon SNS 主題,或建立新主題。使用您要接收警示的電子郵件地址。
  16. 選擇 Next (下一步)。
  17. Name and description (名稱和描述) 區段中,輸入警示名稱和警示描述,然後選擇 Next (下一步)。
  18. Preview and create (預覽和建立) 頁面上,檢閱警示組態,然後選擇 Create alarm (建立警示)。

使用前述程序,為其他 SQL Server 嚴重錯誤和登入失敗錯誤建立 CloudWatch 警示。

相關資訊

MySQL 資料庫日誌檔案

AWS 官方已更新 2 年前