如何同步我的 RDS for SQL Server 多可用區執行個體中的主要和次要主機之間的 SQL Server Agent 作業?

2 分的閱讀內容
0

我想要同步我的 Amazon Relational Database (Amazon RDS) for Microsoft SQL Server 多可用區執行個體中的主要和次要主機之間的 SQL Server Agent 作業。要怎麼做?

簡短描述

Amazon RDS for SQL Server 會在後台使用永不間斷/鏡像進行多可用區設定。SQL Server Agent 作業存放在 msdb 系統資料庫中。此系統資料庫不會做為多可用區部署的一部分進行複寫。因此,SQL Server Agent 作業不會自動進行同步。容錯移轉之後,您必須在新的主要執行個體上重新建立作業。但是,作業會存在於最初建立它們的舊主要執行個體上。如果您將執行個體復原到上一個主要執行個體 (最初建立作業的位置),您仍會看到這些作業。要在多可用區中建立作業,請先在主要 (作用中) 執行個體中建立作業。接著,容錯移轉 RDS 執行個體,並在新的主要執行個體上建立相同的作業。

若要避免在新的主要執行個體上手動建立作業,請開啟 SQL Agent Job replication (SQL Agent 作業複寫)。在多可用區環境中開啟作業複寫時,SQL Server Agent 作業會自動從主要主機複製到次要主機。您不需要在新的主要複本上手動建立作業,因為它們會透過代理程式複寫功能進行同步。這些作業在這兩個複本中均可用。

如需詳細資訊,請參閱適用於 Amazon RDS for Microsoft SQL Server 的多可用區部署

解決方案

開啟 SQL 代理程式複寫功能

使用主要執行個體上的管理員帳戶執行下列程序,以開啟 SQL Server Agent 作業複寫。

**重要注意事項:**請確定您執行此程序的執行個體具有所有可用的代理程式作業。如果沒有可用代理程式作業的執行個體變成主要執行個體,而您開啟此功能,則會刪除次要執行個體上的所有作業。另請注意,所有現有和新建立的作業都會複寫為此功能的一部分。

EXECUTE msdb.dbo.rds_set_system_database_sync_objects
@object_types = 'SQLAgentJob';

驗證是否已開啟 SQL 代理程式複寫功能

使用下列查詢以驗證是否已開啟複寫功能:

SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();

如果已開啟複寫功能,則上述查詢會將 SQLagentjob 傳回 object_class。如果查詢未傳回任何內容,則表示未開啟此功能。

驗證修改後的作業和新作業上次與次要複本同步的時間

使用下列查詢以檢查複寫的 last_sync_time

SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();

在查詢結果中,如果同步時間超過作業更新或建立時間,則作業會與次要複本同步。

**注意:**如果您不知道作業建立或更新的時間,請執行下列查詢以擷取時間戳記,然後執行前述查詢:

select name as 'JobName'
,JobStatus = CASE
    When enabled =1 Then 'Active'
    Else 'Inactive'
    END
,date_created As 'JobCreatedOn' ,date_modified as 'LastModified'
from msdb..sysjobs

**注意:**在複本之間同步作業需要幾分鐘的時間。

如果您想執行資料庫容錯移轉以確認作業已複寫,請先等待 last_sync_time 更新,然後才能繼續進行多可用區容錯移轉。

次要複本上的作業狀態

無論是否在次要複本上使用複寫功能,SQL Server Agent XP 均處於停用狀態。因此,作業不會在次要伺服器上執行。

代理程式作業複寫支援和不支援的作業類別

複製下列類別的作業:

  • [未分類 (本機)]
  • [未分類 (多伺服器)]
  • [未分類]
  • 資料收集器
  • 資料庫引擎調校顧問
  • 資料庫維護
  • 全文

**注意:**只會複寫使用步驟類型為 T-SQL 的作業。

以下是不支援複寫的類別:

  • 具有 SQL Server Integration Services (SSIS)、SQL Server Reporting Services (SSRS)、複寫和 PowerShell 等步驟類型的作業。
  • 使用資料庫郵件和伺服器層級的物件的作業。

關閉 SQL Server Agent 作業複寫

要關閉 SQL Server Agent 作業複寫,請執行下列命令:

EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = '';

關閉複寫之後,對現有和新建立的作業的修改將不再與其他複本同步。


AWS 官方
AWS 官方已更新 2 年前