監控 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 topic. CloudWatch alarms,不會因為處於特定狀態而叫用動作。狀態必須已變更並維持在指定的期間數。 AWS DMS 也會在遷移過程中使用 CloudWatch 記錄任務資訊。您可以使用 AWS CLI 或 檢視 AWS DMS API任務日誌的相關資訊。如需 CloudWatch 搭配 使用 的詳細資訊 AWS DMS,請參閱 使用 Amazon 監控複寫任務 CloudWatch。如需監控 AWS DMS 指標的詳細資訊,請參閱 AWS Database Migration Service 指標。如需使用 AWS DMS 任務日誌的詳細資訊,請參閱 檢視和管理 AWS DMS 任務日誌

時間歷程日誌

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

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

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

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

資料庫日誌

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

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

任務狀態

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

任務狀態 描述

正在建立

AWS DMS 正在建立任務。

執行中

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

已停止

任務已停止。

Stopping (正在停止)

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

正在刪除

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

失敗

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

錯誤

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

執行時出現錯誤

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

啟動

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

備妥

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

Modifying (正在修改)

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

移動

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

失敗的移動

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

測試

正在測試為此任務指定的資料庫遷移,以回應執行 StartReplicationTaskAssessmentRunStartReplicationTaskAssessment操作。

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

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

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

{ "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 } } ] }

任務期間的資料表狀態

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

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 、Amazon CloudWatch Events 和 Amazon CloudWatch Logs?。 CloudWatch 請注意,使用 Amazon 需要付費 CloudWatch。

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

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

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

AWS DMS 監控

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

AWS DMS 監控

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

AWS DMS 監控

AWS Database Migration Service 指標

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

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

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

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

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

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

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

雖然FreeableMemory指標不會反映實際可用的可用記憶體,但 FreeableMemorySwapUsage指標的組合可以指示複寫執行個體是否超載。

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

  • 接近零的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

    注意

    若要在完全載入期間降低 Commit 速率的值,請開啟 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 遷移到 Postgre 時SQL。在這些情況下使用 C4 複寫執行個體類別便是個良好的選擇。如需詳細資訊,請參閱選擇正確的 AWS DMS移轉的複製執行個體

複寫執行個體指標

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

指標

描述

AvailableMemory

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

單位:位元組

CPUAllocated

為任務配置CPU的最大百分比 (0 表示沒有限制)。

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

單位:百分比

CPUUtilization

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

單位:百分比

DiskQueueDepth

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

單位:計數

FreeStorageSpace

可用的儲存空間的數量。

單位:位元組

FreeMemory

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

單位:位元組

FreeableMemory

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

單位:位元組

MemoryAllocated

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

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

單位:MiB

寫入IOPS

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

單位:計數/秒

讀取IOPS

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

單位:計數/秒

WriteThroughput

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

單位:位元組/秒

ReadThroughput

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

單位:位元組/秒

WriteLatency

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

單位:毫秒

ReadLatency

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

單位:毫秒

SwapUsage

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

單位:位元組

NetworkTransmitThroughput

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

單位:位元組/秒

NetworkReceiveThroughput

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

單位:位元組/秒

複寫任務指標

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

指標

描述

FullLoadThroughputBandwidthTarget

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

FullLoadThroughputRowsTarget

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

CDCIncomingChanges

等待套用至目標的 point-in-time變更事件總數。請注意,這和來源端點交易變更率的測量不同。若此指標的數字較大,通常表示 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%,但如果 vCPUs 使用多個 v,則值可能會超過 100%。

單位:百分比

SwapUsage

任務使用的交換空間量。

單位:位元組

MemoryUsage

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

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

檢視和管理 AWS DMS 任務日誌

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

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

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

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

  3. 尋找遷移任務日誌區段,然後選擇檢視 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。例如,當使用 命令或 AWS DMS API ModifyReplicationTask動作修改任務時,下列 會JSON AWS CLI modify-replication-task刪除任務日誌。

{ "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

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

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

所有 AWS DMS 動作都會由 記錄, CloudTrail 並記錄在AWS Database Migration Service API參考 中。例如, 呼叫 CreateReplicationInstanceTestConnectionStartReplicationTask動作會在 CloudTrail 日誌檔案中產生項目。

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

  • 請求是使用根憑證還是IAM使用者憑證提出。

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

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

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

了解 AWS DMS 日誌檔案項目

追蹤是一種組態,可讓您將事件作為日誌檔案交付至您指定的 Amazon S3 儲存貯體。 CloudTrail 日誌檔案包含一或多個日誌項目。事件代表來自任何來源的單一請求,並包含所請求動作、動作日期和時間、請求參數等資訊。 CloudTrail log 檔案不是公開API呼叫的有序堆疊追蹤,因此它們不會以任何特定順序顯示。

下列範例顯示示範 RebootReplicationInstance動作的 CloudTrail 日誌項目。

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:johndoe", "arn": "arn:aws:sts::123456789012:assumed-role/admin/johndoe", "accountId": "123456789012", "accessKeyId": "ASIAYFI33SINADOJJEZW", "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 日誌的複寫任務。請確定複寫執行個體有足夠的空間,可容納其應用程式日誌。如需使用管理任務日誌的詳細資訊,請參閱檢視和管理 AWS DMS 任務日誌

物件類型

AWS DMS 會產生 CloudWatch 下列物件類型的內容登入。

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

記錄範例

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

連線日誌範例

本節包含包含連線 的日誌範例IDs。

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 建立最少記錄,但大量引擎特定內容記錄僅適用於下列端點類型。建議您在使用這些端點類型時開啟內容記錄。

    • 我的SQL

    • PostgreSQL

    • Oracle

    • Microsoft SQL 伺服器

    • MongoDB/Amazon DocumentDB

    • Amazon S3