監控 AWS DMS 任務 - AWS 資料庫遷移服務

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

監控 AWS DMS 任務

監控是維護 和 AWS 解決方案的可靠性、可用性 AWS DMS 和效能的重要部分。您應該從 AWS 解決方案的所有部分收集監控資料,以便在發生多點失敗時更輕鬆地偵錯。 AWS 提供數種工具來監控您的 AWS DMS 任務和資源,以及回應潛在事件:

AWS DMS 事件和通知

AWS DMS 使用 Amazon Simple Notification Service (Amazon SNS) 在 AWS DMS 事件發生時提供通知,例如建立或刪除複寫執行個體。 會將事件 AWS DMS 分組為您可以訂閱的類別,因此當該類別發生事件時,您可以收到通知。例如,如果您訂閱指定複寫執行個體的建立類別,當發生會影響複寫執行個體的建立相關事件時,您就會收到通知。您可以採用 Amazon SNS 為 AWS 區域支援的任何形式使用這些通知,例如電子郵件訊息、文字訊息或對 HTTP 端點的呼叫。如需詳細資訊,請參閱 在 AWS Database Migration Service中處理 Amazon SNS 的事件和通知

任務狀態

您可以透過檢查任務狀態及監控任務的控制資料表,來監控您任務的進度。任務狀態表示 AWS DMS 任務的條件及其相關聯的資源。其包含如果正在建立、啟動、執行或停止任務的指示。其也包含任務正在移轉之表格的目前狀態,例如表格的完整載入已開始或正在進行中,以及表格的插入、刪除和更新次數等詳細資訊。如需監視任務及任務資源狀況的詳細資訊,請參閱 任務狀態任務期間的資料表狀態。如需控制資料表的詳細資訊,請參閱控制資料表任務設定

Amazon CloudWatch 警示和日誌

您可以使用 Amazon CloudWatch 警示,在指定的期間內監看一或多個任務指標。如果指標超過指定的閾值,則會傳送一則通知至 Amazon SNS 主題。CloudWatch 警示不會因為處於特定狀態而叫用動作。相反地,狀態必須已變更並維持在指定的期間數。 AWS DMS 也會在遷移過程中使用 CloudWatch 記錄任務資訊。您可以使用 AWS CLI 或 AWS DMS API 來檢視任務日誌的相關資訊。如需搭配 CloudWatch 使用的詳細資訊 AWS DMS,請參閱使用 Amazon CloudWatch 監控複寫任務。如需監控 AWS DMS 指標的詳細資訊,請參閱 AWS Database Migration Service 指標。如需使用 AWS DMS 任務日誌的詳細資訊,請參閱 檢視和管理 DMS AWS 任務日誌

時間歷程日誌

若要記錄和偵錯複寫任務,您可以使用 AWS DMS Time Travel。您可以透過這種方法,使用 Amazon S3 儲存日誌並使用加密金鑰加密日誌。您可以使用日期時間篩選條件擷取 S3 日誌,然後視需要檢視、下載和混淆日誌。您可以透過這樣做,「回到過去的時間」來調查資料庫活動。

您可以使用時間歷程搭配支援 DMS 的 PostgreSQL 來源端點,以及支援 DMS 的 PostgreSQL 和 MySQL 目標端點。您只能針對完全載入和 CDC 任務,以及僅限 CDC 的任務開啟「時間歷程」。若要開啟「時間歷程」或修改任何現有的「時間歷程」設定,請確保任務已停止。

如需時間歷程日誌的詳細資訊,請參閱時間歷程任務設定。如需使用時間歷程日誌的最佳實務,請參閱使用時間歷程針對複寫任務進行疑難排解

AWS CloudTrail 日誌

AWS DMS 已與 整合 AWS CloudTrail,此服務提供使用者、IAM 角色或服務在 AWS 中採取動作的記錄 AWS DMS。CloudTrail 會將 的所有 API 呼叫擷取 AWS DMS 為事件,包括從 AWS DMS 主控台和從程式碼呼叫到 AWS DMS API 操作的呼叫。如果您建立線索,您可以啟用 CloudTrail 事件持續交付至 Amazon S3 儲存貯體,包括 的事件 AWS DMS。即使您未設定追蹤,依然可以透過 CloudTrail 主控台中的事件歷史記錄檢視最新事件。使用 CloudTrail 所收集的資訊,您可以判斷提出的請求 AWS DMS、提出請求的 IP 地址、提出請求的人員、提出請求的時間,以及其他詳細資訊。如需詳細資訊,請參閱使用 記錄 AWS DMS API 呼叫 AWS CloudTrail

資料庫日誌

您可以使用 或資料庫服務的 API,來檢視 AWS Management Console AWS CLI、下載和監看任務端點的 AWS 資料庫日誌。如需詳細資訊,請參閱 AWS 文件中的資料庫服務文件。

如需詳細資訊,請參閱下列主題。

任務狀態

任務狀態會指出任務的條件。下表顯示任務可能具有的狀態:

任務狀態 描述

正在建立

AWS DMS 正在建立任務。

執行中

任務正在執行所指定的遷移工作。

已停止

任務已停止。

Stopping (正在停止)

任務正在停止中。這通常表示使用者已介入操作任務。

正在刪除

任務正在刪除中 (通常是因為使用者操作的請求)。

失敗

任務已失敗。請參閱任務日誌檔案以取得詳細資訊。

錯誤

由於發生錯誤,任務已停止。概觀索引標籤的最後一個失敗訊息區段中提供任務錯誤的簡短說明。

執行時出現錯誤

任務正在執行時出現錯誤狀態。這通常表示無法遷移任務中的一或多個資料表。此任務會根據選擇規則繼續載入其他資料表。

啟動

任務正在連線到複寫執行個體,以及來源和目標端點。正在套用任何篩選條件及轉換。

備妥

任務已準備好執行。此狀態通常會在「正在建立」狀態之後出現。

Modifying (正在修改)

任務正在修改中,通常是因為修改任務設定的使用者動作。

移動

此任務正在移至另一個複寫執行個體。此複寫會一直維持在此狀態,直到移動完成。刪除任務是複寫任務正在移動時唯一允許的操作。

失敗的移動

任務移動因任何原因而失敗,例如目標複寫執行個體上的儲存空間不足。當複寫任務處於此狀態時,就可以啟動、修改、移動或刪除該任務。

測試

正在測試針對此任務指定的資料庫遷移,以回應 StartReplicationTaskAssessmentRun 或 StartReplicationTaskAssessment 操作的執行。

任務狀態列會顯示任務進度的估計。此估計的品質取決於來源資料庫資料表統計資料的品質;資料表統計資料越佳,估計越準確。若任務只有一個沒有估計資料列統計資料的資料表,我們無法提供任何種類的完成百分比估計。在這種情況下,可以使用任務狀態和所指出已載入的資料列來確認任務確實正在執行中,並在進度上有所進展。

請注意,DMS 主控台中的「上次更新時間」一欄只會指出 AWS DMS 上次為資料表更新資料表統計資料記錄的時間。它不會指出資料表的最後更新時間。

除了使用 DMS 主控台之外,您還可以如下列範例所示,使用 AWS CLI 中的 aws dms describe-replication-tasks 命令來輸出目前複寫任務的描述,包括任務狀態。

{ "ReplicationTasks": [ { "ReplicationTaskIdentifier": "moveit2", "SourceEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:6GGI6YPWWGAYUVLKIB732KEVWA", "TargetEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:EOM4SFKCZEYHZBFGAGZT3QEC5U", "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:T3OM7OUB5NM2LCVZF7JPGJRNUE", "MigrationType": "full-load", "TableMappings": ...output omitted... , "ReplicationTaskSettings": ...output omitted... , "Status": "stopped", "StopReason": "Stop Reason FULL_LOAD_ONLY_FINISHED", "ReplicationTaskCreationDate": 1590524772.505, "ReplicationTaskStartDate": 1590619805.212, "ReplicationTaskArn": "arn:aws:dms:us-east-1:123456789012:task:K55IUCGBASJS5VHZJIINA45FII", "ReplicationTaskStats": { "FullLoadProgressPercent": 100, "ElapsedTimeMillis": 0, "TablesLoaded": 0, "TablesLoading": 0, "TablesQueued": 0, "TablesErrored": 0, "FreshStartDate": 1590619811.528, "StartDate": 1590619811.528, "StopDate": 1590619842.068 } } ] }

任務期間的資料表狀態

DMS AWS 主控台會更新遷移期間資料表狀態的相關資訊。下表顯示可能的狀態值:

AWS Database Migration Service 複寫執行個體
描述

Table does not exist (資料表不存在)

AWS DMS 在來源端點上找不到資料表。

Before load (載入前)

已啟用完整載入程序,但尚未啟動。

Full load (完整載入)

正在進行完整載入程序。

Table completed (資料表已完成)

完整載入已完成。

Table cancelled (資料表已取消)

已取消載入資料表。

Table error (資料表錯誤)

載入資料表期間發生錯誤。

使用 Amazon CloudWatch 監控複寫任務

您可以使用 Amazon CloudWatch 警示或事件更緊密地追蹤您的遷移。如需 Amazon CloudWatch 的詳細資訊,請參閱《Amazon CloudWatch 使用者指南》中的什麼是 Amazon CloudWatch、Amazon CloudWatch Events 及 Amazon CloudWatch Logs?。請注意,使用 Amazon CloudWatch 需支付費用。

如果複寫任務未建立 CloudWatch 日誌,請參閱疑難排解指南中的 AWS DMS 不會建立 CloudWatch 日誌

AWS DMS 主控台會顯示每個任務的基本 CloudWatch 統計資料,包括任務狀態、完成百分比、經過時間和資料表統計資料,如下所示。選取複寫任務,然後選取 CloudWatch 指標索引標籤。

若要檢視和修改 CloudWatch 任務日誌設定,請選擇修改任務記錄。如需詳細資訊,請參閱記錄任務設定

AWS DMS 監控

當您選取資料表統計資料索引標籤時,DMS AWS 主控台會顯示每個資料表的效能統計資料,包括插入、刪除和更新的數量。

AWS DMS 監控

此外,若您從複寫執行個體頁面選取複寫執行個體,您可以透過選擇 CloudWatch 指標索引標籤來檢視執行個體的效能指標。

AWS DMS 監控

AWS Database Migration Service 指標

AWS DMS 提供下列項目的統計資料:

  • 主機指標 – 由 Amazon CloudWatch 提供的複寫主機效能和使用率統計資料。如需可用指標的完整清單,請參閱複寫執行個體指標

  • 複寫任務指標 – 複寫任務的統計資料包含傳入及遞交的變更,以及複寫主機和來源及目標資料庫間的延遲。如需可用指標的完整清單,請參閱複寫任務指標

  • 資料表指標 – 正在遷移資料表的統計資料,包含插入、更新、刪除和完成的 DDL 陳述式數量。

任務指標分為複寫主機和來源端點間的統計資料,以及複寫主機和目標端點間的統計資料。您可以透過一起新增兩個相關的統計資料,來判斷任務的整體統計資料。例如,您可以藉由合併 CDCLatencySourceCDCLatencyTarget 的值,判斷任務的總延遲或複本延遲。

任務指標的值會受到來源資料庫上目前的活動影響。例如,若交易已開始,但尚未遞交,則 CDCLatencySource 指標會繼續成長,直到遞交該交易為止。

針對複寫執行個體,FreeableMemory 指標需要進行釐清。可釋放的記憶體不會指出實際的可用記憶體。它是目前正在使用中,可以進行釋放以供其他用途使用的記憶體;它是複寫執行個體上使用中緩衝區和快取的組合。

雖然 FreeableMemory 指標不會反映實際的可用記憶體,FreeableMemory 搭配 SwapUsage 指標仍然可以指出複寫執行個體是否超載。

請針對下列狀況監控這兩個指標:

  • FreeableMemory 指標接近零。

  • SwapUsage 指標增加或變動。

若您發生這兩種狀況中的任何一種,即表示您應考慮移動到較大的複寫執行個體。建議您也考慮減少複寫執行個體上執行的任務數量及類型。相較於僅複寫變更,完整載入任務需要較多記憶體。

若要大致估計 AWS DMS 遷移任務的實際記憶體需求,您可以使用下列參數。

LOB 資料欄

遷移範圍中每個資料表的平均 LOB 資料欄數目。

Maximum number of tables to load in parallel (要平行載入之資料表的數量上限)

在一個任務中平行 AWS DMS 載入的資料表數目上限。

預設值為 8。

LOB 區塊大小

LOB 區塊的大小,以 KB 為單位, AWS DMS 用於將資料複寫至目標資料庫。

完全載入時的遞交率

AWS DMS 可平行傳輸的記錄數目上限。

預設值為 10,000。

LOB 大小

個別 LOB 的大小上限 (以 KB 為單位)。

大量陣列大小

端點驅動程式擷取或處理的資料列數目上限。此值取決於驅動程式設定。

預設值為 1,000。

確定這些值之後,您可以使用下列其中一種方法,來預估遷移任務所需的記憶體容量。這些方法取決於您在遷移任務中為 LOB 資料欄設定所選擇的選項。

  • 對於完整 LOB 模式,請使用下列公式。

    Required memory = (LOB columns) * (Maximum number of tables to load in parallel) * (LOB chunk size) * (Commit rate during full load)

    設想以下範例,即來源資料表平均包含 2 個 LOB 資料欄,而 LOB 區塊的大小為 64 KB。如果您使用 Maximum number of tables to load in parallelCommit rate during full load 的預設值,則任務所需的記憶體數量如下。

    Required memory = 2 * 8 * 64 * 10,000 = 10,240,000 KB

    注意

    若要在完全載入期間降低遞交率的值,請開啟 AWS DMS 主控台,選擇資料庫遷移任務,然後建立或修改任務。展開進階設定,然後輸入完全載入時的遞交率的值。

  • 針對有限 LOB 模式使用下列公式。

    Required memory = (LOB columns) * (Maximum number of tables to load in parallel) * (LOB size) * (Bulk array size)

    設想以下範例,即來源資料表平均包含 2 個 LOB 資料欄,而個別 LOB 的大小上限為 4,096 KB。如果您使用 Maximum number of tables to load in parallelBulk array size 的預設值,則任務所需的記憶體數量如下。

    Required memory = 2 * 8 * 4,096 * 1,000 = 65,536,000 KB

若要 AWS DMS 讓 以最佳方式執行轉換,CPU 必須在轉換發生時可用。超載 CPU 且沒有足夠的 CPU 資源可能會導致遷移速度緩慢。 AWS DMS 可能會耗費大量 CPU,尤其是在執行異質遷移和複寫時,例如從 Oracle 遷移到 PostgreSQL。在這些情況下使用 C4 複寫執行個體類別便是個良好的選擇。如需詳細資訊,請參閱為您的遷移選擇正確的 AWS DMS 複寫執行個體

複寫執行個體指標

複寫執行個體監控包含下列統計資料的 Amazon CloudWatch 指標。

指標

描述

AvailableMemory

預估有多少記憶體可用於啟動新應用程式,而不需要交換。如需詳細資訊,請參閱 Linux 手冊頁 /proc/memInfo 區段中的 MemAvailable 值。

單位:位元組

CPUAllocated

配置給任務的 CPU 百分比上限 (0 表示沒有限制)。

AWS DMS 根據 CloudWatch 主控台ReplicationTaskIdentifierReplicationInstanceIdentifer和 的合併維度來提升此指標。使用 ReplicationInstanceIdentifier, ReplicationTaskIdentifier 類別來檢視此指標。

單位:百分比

CPUUtilization

執行個體上目前正在使用的已配置 vCPU (虛擬 CPU) 百分比。

單位:百分比

DiskQueueDepth

等待存取磁碟的未完成讀/寫請求 (I/O) 數量。

單位:計數

FreeStorageSpace

可用的儲存空間的數量。

單位:位元組

FreeMemory

可供應用程式、頁面快取以及核心本身資料結構使用的實體記憶體容量。如需詳細資訊,請參閱 Linux 手冊頁 /proc/memInfo 區段中的 MemFree 值。

單位:位元組

FreeableMemory

可用的隨機存取記憶體的數量。

單位:位元組

MemoryAllocated

任務的配置記憶體上限 (0 表示沒有限制)。

AWS DMS 根據 CloudWatch 主控台ReplicationTaskIdentifierReplicationInstanceIdentifer和 的合併維度來提升此指標。使用 ReplicationInstanceIdentifier, ReplicationTaskIdentifier 類別來檢視此指標。

單位:MiB

WriteIOPS

磁碟寫入輸入/輸出操作的每秒平均次數。

單位:計數/秒

ReadIOPS

磁碟讀取輸入/輸出操作的每秒平均次數。

單位:計數/秒

WriteThroughput

平均每秒寫入磁碟的位元組數目。

單位:位元組/秒

ReadThroughput

平均每秒從磁碟讀取的位元組數目。

單位:位元組/秒

WriteLatency

平均每次磁碟 I/O (輸出) 操作耗用的時間量。

單位:毫秒

ReadLatency

平均每次磁碟 I/O (輸入) 操作耗用的時間量。

單位:毫秒

SwapUsage

複寫執行個體上使用的交換空間量。

單位:位元組

NetworkTransmitThroughput

複寫執行個體的傳出 (傳輸) 網路流量,包括客戶資料庫流量及用於監控與複寫的 AWS DMS 流量。

單位:位元組/秒

NetworkReceiveThroughput

複寫執行個體的傳入 (接收) 網路流量,包括客戶資料庫流量及用於監控與複寫的 AWS DMS 流量。

單位:位元組/秒

複寫任務指標

複寫任務監控包含下列統計資料的指標。

指標

描述

FullLoadThroughputBandwidthTarget

從完全載入之目標中傳輸的傳出資料 (單位為每秒 KB 數)。

FullLoadThroughputRowsTarget

完全載入中目標的傳出變更 (單位為每秒資料列數)。

CDCIncomingChanges

某個時間點等待套用至目標的變更事件總數。請注意,這和來源端點交易變更率的測量不同。若此指標的數字較大,通常表示 AWS DMS 無法及時套用擷取的變更,因而造成較高的目標延遲。

CDCChangesMemorySource

記憶體中累積並等待從來源遞交的資料列數。您可以檢視此指標以及 CDCChangesDiskSource。

CDCChangesMemoryTarget

記憶體中累積並等待遞交到目標的資料列數。您可以檢視此指標以及 CDCChangesDiskTarget。

CDCChangesDiskSource

磁碟上累積並等待從來源遞交的資料列數。您可以檢視此指標以及 CDCChangesMemorySource。

CDCChangesDiskTarget

磁碟上累積並等待遞交到目標的資料列數。您可以檢視此指標以及 CDCChangesMemoryTarget。

CDCThroughputBandwidthTarget

針對目標傳輸的傳出資料 (單位為每秒 KB 數)。CDCThroughputBandwidth 會記錄抽樣點上傳輸的傳出資料。若找不到任務網路流量,則該值為零。因為 CDC 不會發出長時間執行的交易,因此可能不會記錄網路流量。

CDCThroughputRowsSource

來自來源的傳入任務變更 (單位為每秒資料列數)。

CDCThroughputRowsTarget

目標的傳出任務變更 (單位為每秒資料列數)。

CDCLatencySource

從來源端點擷取到的最後一個事件,與 AWS DMS 執行個體目前系統時間戳記之間的間隔 (秒)。CDCLatencySource 代表來源與複寫執行個體之間的延遲。高 CDCLatencySource 意味著從來源擷取變更的過程遭到延遲。若要識別進行中複寫中的延遲,您可以與 CDCLatencyTarget 一起檢視此指標。如果 CDCLatencySource 和 CDCLatencyTarget 都很高,請先調查 CDCLatencySource。

當來源與複寫執行個體之間沒有複寫延遲時,CDCSourceLatency 可以是 0。當複寫任務嘗試讀取來源交易日誌中的下一個事件,而且與上次從來源讀取相比沒有新事件時,CDCSourceLatency 也可能變成零。當發生此狀況時,此任務便會將 CDCSourceLatency 重設為 0。

CDCLatencyTarget

等待遞交到目標的第一個事件時間戳記,與 AWS DMS 執行個體目前時間戳記間的間隔 (秒)。目標延遲是指複寫執行個體伺服器時間與轉送至目標元件的最舊未確認事件識別碼之間的差異。換句話說,目標延遲是複寫執行個體與 TRG 端點套用但尚未確認的最舊事件 (99%) 之間的時間戳記差異。當 CDCLatencyTarget 很高時,表示將變更事件套用至目標的程序已延遲。若要識別進行中複寫中的延遲,您可以與 CDCLatencySource 一起檢視此指標。如果 CDCLatencyTarget 很高,但 CDCLatencySource 不高,請調查是否有以下情況:

  • 目標中沒有主索引鍵或索引

  • 目標或複寫執行個體中發生資源瓶頸

  • 複寫執行個體和目標之間存在網路問題

CPUUtilization

任務跨多個核心使用的 CPU 百分比。任務 CPUUtilization 的語義與複寫 CPUUtilizaiton 略有不同。如果已完整使用 1 個 vCPU,則表示 100%,但如果有多個 vCPU 正在使用中,則該值可能高於 100%。

單位:百分比

SwapUsage

任務使用的交換空間量。

單位:位元組

MemoryUsage

任務消耗的 memory.usage_in_bytes 控制群組 (cgroup)。DMS 使用 cgroup 來控制系統資源 (例如記憶體和 CPU) 的使用情況。此指標代表為該任務配置之 cgroup 內的任務記憶體使用量 (MB)。cgroup 限制是根據 DMS 複寫執行個體類別可用的資源而定。memory.usage_in_bytes 由常駐集大小 (RSS)、快取和交換記憶體元件組成。如有需要,作業系統可以回收快取記憶體。我們建議您同時監控複寫執行個體指標 (AvailableMemory)。

AWS DMS 根據 CloudWatch 主控台ReplicationTaskIdentifierReplicationInstanceIdentifer和 的合併維度來提升此指標。使用 ReplicationInstanceIdentifier, ReplicationTaskIdentifier 類別來檢視此指標。

檢視和管理 DMS AWS 任務日誌

您可以使用 Amazon CloudWatch 在 AWS DMS 遷移過程中記錄任務資訊。您需要在選取任務設定時啟用日誌記錄。如需詳細資訊,請參閱記錄任務設定

若要檢視已執行之任務的日誌,請按照下列步驟進行:

  1. 開啟 AWS DMS 主控台,然後從導覽窗格中選擇資料庫遷移任務。[Database migration tasks] (資料庫遷移任務) 對話方塊隨即顯示。

  2. 選取您的任務名稱。[Overview details] (概觀詳細資料) 對話方塊隨即顯示。

  3. 找出 Migration task logs (遷移任務日誌) 區段,然後選擇 View CloudWatch Logs (檢視 CloudWatch 日誌)

此外,您可以使用 AWS CLI 或 AWS DMS API 來檢視任務日誌的相關資訊。若要這樣做,請使用 describe-replication-instance-task-logs AWS CLI 命令或 AWS DMS API 動作 DescribeReplicationInstanceTaskLogs

例如,下列 AWS CLI 命令會以 JSON 格式顯示任務日誌中繼資料。

$ aws dms describe-replication-instance-task-logs \ --replication-instance-arn arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY

命令的範例回應如下。

{ "ReplicationInstanceTaskLogs": [ { "ReplicationTaskArn": "arn:aws:dms:us-east-1:237565436:task:MY34U6Z4MSY52GRTIX3O4AY", "ReplicationTaskName": "mysql-to-ddb", "ReplicationInstanceTaskLogSize": 3726134 } ], "ReplicationInstanceArn": "arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY" }

在此回應中,有一個與複寫執行個體相關聯的單一任務日誌 (mysql-to-ddb)。此日誌的大小為 3,726,124 的位元組。

您可以使用 describe-replication-instance-task-logs 傳回的資訊來診斷及故障診斷任務日誌的問題。例如,如果您啟用任務的詳細偵錯記錄,任務日誌會快速成長 — 可能會耗用複寫執行個體上所有可用的儲存體,並造成執行個體狀態變更為 storage-full。透過描述任務日誌,您可以判斷您不需要哪些項目;然後,您便可以刪除他們,釋放儲存體空間。

若要刪除任務的任務日誌,請將任務設定 DeleteTaskLogs 設為 true。例如,以下 JSON 會在 AWS CLI modify-replication-task使用 命令或 AWS DMS API ModifyReplicationTask動作修改任務時刪除任務日誌。

{ "Logging": { "DeleteTaskLogs":true } }
注意

對於每個複寫執行個體, 會 AWS DMS 刪除超過 10 天的日誌。

使用 記錄 AWS DMS API 呼叫 AWS CloudTrail

AWS DMS 已與 整合 AWS CloudTrail,此服務提供使用者、角色或服務在 AWS 中採取動作的記錄 AWS DMS。CloudTrail 會將 的所有 API 呼叫擷取 AWS DMS 為事件,包括從 AWS DMS 主控台和從程式碼呼叫到 AWS DMS API 操作的呼叫。如果您建立線索,您可以啟用 CloudTrail 事件持續交付至 Amazon S3 儲存貯體,包括 的事件 AWS DMS。即使您未設定追蹤,依然可以透過 CloudTrail 主控台中的事件歷史記錄檢視最新事件。使用 CloudTrail 所收集的資訊,您可以判斷提出的請求 AWS DMS、提出請求的 IP 地址、提出請求的人員、提出請求的時間,以及其他詳細資訊。

若要進一步了解 CloudTrail,請參閱AWS CloudTrail 《使用者指南》

AWS DMS CloudTrail 中的資訊

當您建立 AWS 帳戶時,會在您的帳戶上啟用 CloudTrail。當活動在 中發生時 AWS DMS,該活動會記錄於 CloudTrail 事件,以及事件歷史記錄中的其他服務 AWS 事件。您可以在 AWS 帳戶中檢視、搜尋和下載最近的事件。如需詳細資訊,請參閱使用 CloudTrail 事件歷史記錄檢視事件

若要持續記錄您 AWS 帳戶中的事件,包括 的事件 AWS DMS,請建立追蹤。線索能讓 CloudTrail 將日誌檔案交付至 Amazon S3 儲存貯體。根據預設,當您在主控台中建立追蹤時,追蹤會套用至所有 AWS 區域。追蹤會記錄 AWS 分割區中所有 AWS 區域的事件,並將日誌檔案交付至您指定的 Amazon S3 儲存貯體。此外,您可以設定其他 AWS 服務,以進一步分析 CloudTrail 日誌中收集的事件資料並對其採取行動。如需詳細資訊,請參閱:

CloudTrail 會記錄所有 AWS DMS 動作,並記錄在 AWS Database Migration Service API 參考中。例如,對 CreateReplicationInstanceTestConnectionStartReplicationTask 動作發出的呼叫會在 CloudTrail 記錄檔案中產生專案。

每一筆事件或日誌專案都會包含產生請求者的資訊。身分資訊可協助您判斷下列事項:

  • 該請求是否使用根或 IAM 使用者憑證提出。

  • 提出該請求時,是否使用了特定角色或聯合身分使用者的暫時安全憑證。

  • 請求是否由其他 AWS 服務提出。

如需詳細資訊,請參閱 CloudTrail userIdentity 元素

了解 AWS DMS 日誌檔案項目

追蹤是一種組態,能讓事件以日誌檔案的形式交付到您指定的 Amazon S3 儲存貯體。CloudTrail 日誌檔案包含一或多個日誌專案。一個事件為任何來源提出的單一請求,並包含請求動作、請求的日期和時間、請求參數等資訊。CloudTrail 日誌檔案並非依公有 API 呼叫追蹤記錄的堆疊排序,因此不會以任何特定順序出現。

以下範例顯示的是展示 RebootReplicationInstance 動作的 CloudTrail 日誌項目。

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:johndoe", "arn": "arn:aws:sts::123456789012:assumed-role/admin/johndoe", "accountId": "123456789012", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-08-01T16:42:09Z" }, "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:role/admin", "accountId": "123456789012", "userName": "admin" } } }, "eventTime": "2018-08-02T00:11:44Z", "eventSource": "dms.amazonaws.com", "eventName": "RebootReplicationInstance", "awsRegion": "us-east-1", "sourceIPAddress": "72.21.198.64", "userAgent": "console.amazonaws.com", "requestParameters": { "forceFailover": false, "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE" }, "responseElements": { "replicationInstance": { "replicationInstanceIdentifier": "replication-instance-1", "replicationInstanceStatus": "rebooting", "allocatedStorage": 50, "replicationInstancePrivateIpAddresses": [ "172.31.20.204" ], "instanceCreateTime": "Aug 1, 2018 11:56:21 PM", "autoMinorVersionUpgrade": true, "engineVersion": "2.4.3", "publiclyAccessible": true, "replicationInstanceClass": "dms.t2.medium", "availabilityZone": "us-east-1b", "kmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/f7bc0f8e-1a3a-4ace-9faa-e8494fa3921a", "replicationSubnetGroup": { "vpcId": "vpc-1f6a9c6a", "subnetGroupStatus": "Complete", "replicationSubnetGroupArn": "arn:aws:dms:us-east-1:123456789012:subgrp:EDHRVRBAAAPONQAIYWP4NUW22M", "subnets": [ { "subnetIdentifier": "subnet-cbfff283", "subnetAvailabilityZone": { "name": "us-east-1b" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-d7c825e8", "subnetAvailabilityZone": { "name": "us-east-1e" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-6746046b", "subnetAvailabilityZone": { "name": "us-east-1f" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-bac383e0", "subnetAvailabilityZone": { "name": "us-east-1c" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-42599426", "subnetAvailabilityZone": { "name": "us-east-1d" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-da327bf6", "subnetAvailabilityZone": { "name": "us-east-1a" }, "subnetStatus": "Active" } ], "replicationSubnetGroupIdentifier": "default-vpc-1f6a9c6a", "replicationSubnetGroupDescription": "default group created by console for vpc id vpc-1f6a9c6a" }, "replicationInstanceEniId": "eni-0d6db8c7137cb9844", "vpcSecurityGroups": [ { "vpcSecurityGroupId": "sg-f839b688", "status": "active" } ], "pendingModifiedValues": {}, "replicationInstancePublicIpAddresses": [ "18.211.48.119" ], "replicationInstancePublicIpAddress": "18.211.48.119", "preferredMaintenanceWindow": "fri:22:44-fri:23:14", "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE", "replicationInstanceEniIds": [ "eni-0d6db8c7137cb9844" ], "multiAZ": false, "replicationInstancePrivateIpAddress": "172.31.20.204", "patchingPrecedence": 0 } }, "requestID": "a3c83c11-95e8-11e8-9d08-4b8f2b45bfd5", "eventID": "b3c4adb1-e34b-4744-bdeb-35528062a541", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

AWS DMS 內容記錄

AWS DMS 使用內容記錄來為您提供有關進行中的遷移的資訊。內容記錄會將下列資訊寫入任務的 CloudWatch 日誌:

  • 任務連線至來源和目標資料庫的相關資訊。

  • 複寫任務行為。您可以使用任務日誌來診斷複寫問題。

  • SQL AWS DMS 陳述式不含在來源和目標資料庫上執行的資料。您可以使用 SQL 日誌來診斷非預期的遷移行為。

  • 串流每個 CDC 事件的位置詳細資訊。

內容記錄僅適用於 3 AWS DMS .5.0 版或更新版本。

AWS DMS 預設會開啟內容記錄。若要控制內容記錄,請將 EnableLogContext 任務設定設為 truefalse,或透過在主控台中修改任務。

AWS DMS 每三分鐘將內容日誌資訊寫入 CloudWatch 日誌的複寫任務。請確定複寫執行個體有足夠的空間,可容納其應用程式日誌。如需使用管理任務日誌的詳細資訊,請參閱檢視和管理 DMS AWS 任務日誌

物件類型

AWS DMS 會在 CloudWatch 中為下列物件類型產生內容記錄。

物件類型 描述
TABLE_NAME 這些日誌項目包含目前任務對應規則範圍內之資料表的相關資訊。您可以使用這些項目來檢查遷移期間特定持續時間的資料表事件。
SCHEMA_NAME 這些日誌項目包含目前任務對應規則所使用之結構描述的相關資訊。您可以使用這些項目來判斷在遷移期間特定期間內 AWS DMS 使用哪個結構描述。
TRANSACTION_ID 這些項目包含從來源資料庫擷取之每個 DML/DDL 變更的交易識別碼。您可以使用這些記錄項目來判斷指定交易期間發生的變更。
CONNECTION_ID 這些項目包含連線 ID。您可以使用這些日誌項目來判斷每個遷移步驟 AWS DMS 使用哪些連線。
STATEMENT 這些項目包含用來擷取、處理和套用每個遷移變更的 SQL 程式碼。
STREAM_POSITION 這些項目包含來源資料庫上每個遷移動作在交易日誌檔中的位置。這些項目的格式會因來源資料庫引擎類型而有所不同。您也可以使用此資訊來判斷在設定僅限 CDC 複寫時復原檢查點的起始位置。

記錄範例

本節包含可用來監控複寫和診斷複寫問題的日誌記錄範例。

連線日誌範例

本節包含日誌範例 (內含連線識別碼)。

2023-02-22T10:09:29 [SOURCE_CAPTURE ]I: Capture record 1 to internal queue from Source {operation:START_REGULAR (43), connectionId:27598, streamPosition:0000124A/6800A778.NOW} (streamcomponent.c:2920) 2023-02-22T10:12:30 [SOURCE_CAPTURE ]I: Capture record 0 to internal queue from Source {operation:IDLE (51), connectionId:27598} (streamcomponent.c:2920) 2023-02-22T11:25:27 [SOURCE_CAPTURE ]I: Capture record 0 to internal queue from Source {operation:IDLE (51), columnName:region, connectionId:27598} (streamcomponent.c:2920)

任務行為日誌範例

本節包含複寫任務日誌行為的相關日誌範例。您可以使用此資訊來診斷複寫問題,例如處於 IDLE 狀態的任務。

下列 SOURCE_CAPTURE 日誌指出沒有可從來源資料庫日誌檔讀取的事件,而且包含的 TARGET_APPLY 記錄指出沒有從 AWS DMS CDC 元件接收到、可套用至目標資料庫的事件。這些事件也包含先前套用的事件相關內容詳細資訊。

2023-02-22T11:23:24 [SOURCE_CAPTURE ]I: No Event fetched from wal log (postgres_endpoint_wal_engine.c:1369) 2023-02-22T11:24:29 [TARGET_APPLY ]I: No records received to load or apply on target , waiting for data from upstream. The last context is {operation:INSERT (1), tableName:sales_11, schemaName:public, txnId:18662441, connectionId:17855, statement:INSERT INTO "public"."sales_11"("sales_no","dept_name","sale_amount","sale_date","region") values (?,?,?,?,?),

SQL 陳述式日誌範例

此區段包含日誌範例,示範在來源和目標資料庫上執行的 SQL 陳述式。您在日誌中看到的 SQL 陳述式只會顯示 SQL 陳述式,而不會顯示資料。下列 TARGET_APPLY 日誌顯示在目標上執行的 INSERT 陳述式。

2023-02-22T11:26:07 [TARGET_APPLY ]I: Applied record 2193305 to target {operation:INSERT (1), tableName:sales_111, schemaName:public, txnId:18761543, connectionId:17855, statement:INSERT INTO "public"."sales_111"("sales_no","dept_name","sale_amount","sale_date","region") values (?,?,?,?,?),

限制

下列限制適用於 AWS DMS 內容記錄:

  • 雖然 會為所有端點類型 AWS DMS 建立最少記錄,但大量引擎特定內容記錄僅適用於下列端點類型。建議您在使用這些端點類型時開啟內容記錄。

    • MySQL

    • PostgreSQL

    • Oracle

    • Microsoft SQL Server

    • MongoDB/Amazon DocumentDB

    • Amazon S3