我的 AWS Database Migration Service (AWS DMS) 任務成功,但未從 Amazon Simple Storage Service (Amazon S3) 來源端點遷移資料。我想對此問題進行疑難排解。
解決方法
導致 AWS DMS 任務成功但未遷移資料的原因有很多。完成您使用案例的解決方案。
任務狀態為「載入完成,正在複寫」,但 AWS DMS 任務未在目標上載入資料
確認您為來源端點定義的 S3 路徑正確。在複寫日誌中,找出顯示 AWS DMS 無法在 S3 路徑中找到資料檔案的項目。
複寫日誌項目範例:
[SOURCE_UNLOAD ]I: Unload finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows sent. (streamcomponent.c:3396)
[TARGET_LOAD ]I: Load finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows received. 0 rows skipped. Volume transferred 0. (streamcomponent.c:3667)
Amazon S3 會用以下格式儲存完全載入階段的資料檔案 (data.csv) 和持續變更的資料檔案 (change_data.csv):
- S3-bucket/dms-folder/sub-folder/dms_schema/dms_table/data.csv
- S3-bucket/dms-folder/sub-folder/dms-cdc-path/dms-cdc-sub-path/change_data.csv
若要尋找資料檔案,S3 來源端點會使用儲存貯體資料夾、變更資料擷取 (CDC) 路徑和資料表結構欄位。
在上述範例檔案路徑中,dms-folder/sub-folder 即為儲存貯體資料夾。建立 S3 來源端點時輸入的 CDC 路徑是 dms-cdc-path/dms-cdc-sub-path。
使用範例檔案路徑的範例資料表結構:
{
"TableCount": 1,
"Tables": [
{
"TableColumns": […],
"TableColumnsTotal": "1",
"TableName": "dms_table",
"TableOwner": "dms_schema",
"TablePath": "dms_schema/dms_table/"
}
]
}
重要: 請勿在資料表結構的 TablePath 中包含 dms-folder/sub-folder 儲存貯體資料夾路徑。
當您指定 Endpoint 組態時,儲存貯體資料夾是選擇性的。如果指定儲存貯體資料夾,則 CDC 路徑和 TablePath 必須位於 Amazon S3 中的相同資料夾中。如果不指定儲存貯體資料夾,則 TablePath 和 CDC 路徑直接位於 S3 儲存貯體下。
S3 來源端點的儲存貯體資料夾可以是儲存貯體名稱和資料表結構的結構描述名稱之間的任何資料夾目錄。在前面的範例資料表結構中,資料夾目錄是 dms-schema。如果儲存貯體下方沒有資料夾階層,則請將該欄位保留為空。
注意: 儲存貯體資料夾和 CDC 路徑可以是單獨的資料夾,也可以包含子資料夾,例如 dms-folder 或 dms-folder/sub-folder。
如果您的 DMS 任務設定使用 S3 來源端點,則必須在資料表對應中包含結構描述和資料表。需要結構描述和資料表才能成功將資料遷移到目標。如需詳細資訊,請參閱將 Amazon S3 的外部資料表定義為 AWS DMS 的來源。
如果使用刪除目標的資料表做為任務的資料表準備模式,則 DMS 會建立 dms_schema.dms_table 目標資料表。
建立目標資料表的命令範例:
CREATE TABLE 'dms_schema'.'dms_table' (...);
注意: 在 Amazon S3 的資料夾及物件名稱會區分大小寫。在 S3 端點中指定資料夾和物件名稱時使用正確的大小寫。
任務狀態為「載入完成,正在複寫」,但資料表統計資料區段沒有資料表
當您使用在目標模式下刪除資料表時,AWS DMS 可能未在目標端點中建立資料表。不正確的 S3 路徑或不受支援的資料類型可能會導致此問題。
確認來源端點的 S3 路徑正確。然後,確認您的 S3 端點是否支援該資料類型。
檢查 DMS 任務的資料表對應定義的篩選器是否導致資料表遺失。確保在 S3 來源端點的資料表結構中,已定義任務資料表對應中所需的資料表。
任務狀態為「正在執行」,且 DMS 任務在目標端點中建立了資料表,但未載入資料
如果 AWS DMS 無法從 S3 路徑取得資料,則使用複寫日誌尋找錯誤。若要取得詳細日誌,請將 SOURCE_CAPTURE 日誌等級從預設變更為詳細偵錯。
日誌範例:
[SOURCE_CAPTURE ]E: No response body. Response code: 403 [1001730] (transfer_client.cpp:589)
[SOURCE_CAPTURE ]E: failed to download file </dms-folder/sub-folder/dms_schema/dms_table/data.csv> from bucket <dms-test> as </rdsdbdata/data/tasks/NKMBA237MEB4UFSRDF5ZAF3EZQ/bucketFolder/dms-folder/sub-folder/dms_schema/dms_table/data.csv>,
status = 4 (FAILED) [1001730] (transfer_client.cpp:592)
您在複寫日誌中收到「無回應內文」錯誤
當 S3 來源端點的 AWS Identity and Access Management (IAM) 角色沒有正確的權限時,會出現無回應內文錯誤。若要解決此問題,請確認錯誤訊息的 S3 路徑存在資料檔案。然後,確認 IAM 使用者具有 s3:GetObject 的權限。
注意: 如果您在來源儲存貯體上啟動了版本控制,那麼您也必須授予 s3:GetObjectVersion 權限。
相關資訊
使用 Amazon S3 作為 AWS DMS 的來源