Amazon S3 目標資料驗證 - AWS Database Migration Service

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

Amazon S3 目標資料驗證

AWS DMS 支援驗證 Amazon S3 目標中的複寫資料。AWS DMS 會將複寫的資料作為一般檔案存放在 Amazon S3 中,因此我們使用 Amazon Athena CREATE TABLE AS SELECT (CTAS) 查詢來驗證資料。

Amazon S3 中存放之資料上的查詢需要大量運算。因此,在變更資料擷取 (CDC) 期間,AWS DMS 只會在 UTC 午夜 (00:00) 每天執行一次 Amazon S3 資料驗證。AWS DMS 執行的每個每日驗證稱為間隔驗證。在間隔驗證期間,AWS DMS 會驗證過去 24 小時內遷移到目標 Amazon S3 儲存貯體的所有變更記錄。如需間隔驗證限制的詳細資訊,請參閱使用 S3 目標驗證的限制

Amazon S3 目標驗證使用 Amazon Athena,因此需支付額外費用。如需詳細資訊,請參閱 Amazon Athena 定價

注意

S3 目標驗證需要 AWS DMS 3.5.0 版或更新版本。

S3 目標驗證先決條件

在使用 S3 目標驗證之前,請檢查下列設定和許可:

  • 將端點 S3SettingsDataFormat 值設為 parquet。如需詳細資訊,請參閱 S3 的 Parquet 設置

  • 對於用來建立遷移任務的使用者帳戶,請確定指派給此帳戶的角色具有正確的許可集。請參閱以下許可

對於使用持續複寫 (CDC) 的任務,請檢查下列設定:

使用 S3 目標驗證的許可

若要為使用 S3 目標驗證設定存取,對於用來建立遷移任務的使用者帳戶,請確定指派給此帳戶的角色具有以下許可集。使用您自己的值來取代範例值。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:CreateWorkGroup" ], "Resource": "arn:aws:athena:<endpoint_region_code>:<account_id>:workgroup/dms_validation_workgroup_for_task_*" }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetTables", "glue:CreateTable", "glue:DeleteTable", "glue:GetTable" ], "Resource": [ "arn:aws:glue:<endpoint_region_code>:<account_id>:catalog", "arn:aws:glue:<endpoint_region_code>:<account_id>:database/aws_dms_s3_validation_*", "arn:aws:glue:<endpoint_region_code>:<account_id>:table/aws_dms_s3_validation_*/*", "arn:aws:glue:<endpoint_region_code>:<account_id>:userDefinedFunction/aws_dms_s3_validation_*/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucketMultipartUploads", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::<bucket_name>", "arn:aws:s3:::<bucket_name>/*" ] } ] }

使用 S3 目標驗證的限制

檢視使用 S3 目標驗證時適用的下列其他限制。如需了解適用於所有驗證的限制,請參閱限制

  • DatePartitionSequence 值需要「天」元件。S3 目標驗證不支援該 YYYYMM 格式。

  • 當間隔驗證在 CDC 期間執行時,您可能會在 awsdms_validation_failures_v1 資料表中看到錯誤的驗證錯誤。之所以發生這些錯誤,是因為 AWS DMS 會將間隔驗證期間到達的變更遷移至次日的分割區資料夾。通常會將這些變更寫入當天的分割區資料夾中。這些錯誤是驗證從動態來源資料庫複寫到靜態目標 (例如 Amazon S3) 的限制。若要調查這些錯誤,請檢查接近驗證時段 (00:00 UTC) 結束的記錄,也就是通常會出現這些錯誤的時間。

    若要將錯誤的數目降到最低,請確定任務的 CDCLatencySource 數量很少。如需監控延時的相關資訊,請參閱複寫任務指標

  • failedstopped 狀態中的任務不會驗證前一天的變更。若要盡量減少因未預期失敗而導致的驗證錯誤,請建立僅具有相同資料表對應、以及來源和目標端點的個別僅驗證任務。如需僅驗證任務的詳細資訊,請參閱使用僅驗證任務搭配 S3 目標驗證

  • 資料表統計資料中的驗證狀態資料欄會反映最近一次間隔驗證的狀態。因此,具有不相符項目的資料表可能會在次日的間隔驗證後顯示為已驗證。檢查目標 Amazon S3 儲存貯體中的 s3_validation_failures folder 是否有超過一天前發生的不相符項目。

  • S3 驗證使用亞 Amazon Athena 的分組表格功能。這可讓 S3 驗證建立目標資料表資料的分組副本。這表示資料表資料的副本會分割成符合 DMS 驗證內部磁碟分割的子集。Athena 分組的桌子上限為 100,000 個桶。S3 驗證嘗試驗證超過此限制的任何表將失敗驗證。S3 驗證嘗試建立的儲存貯體數目等於以下幾點:

    (#records in the table) / (validation partition size setting)

    若要解決此限制,請增加驗證磁碟分割大小設定,讓 S3 驗證所建立的儲存貯體數目少於 100,000 個。如需有關分段的詳細資訊,請參閱 Amazon Athena Athena 使用者指南中的在 Athena 中進行分割和分段

使用僅驗證任務搭配 S3 目標驗證

僅驗證任務會對要遷移的資料執行驗證,而不執行遷移。

即使遷移任務停止,僅驗證任務仍會繼續執行,這樣可確保 AWS DMS 不會錯過 00:00 UTC 間隔驗證時段。

使用僅驗證任務搭配 Amazon S3 目標端點時有下列限制:

  • 支援啟用「僅驗證」設定的完全載入任務的 Amazon S3 驗證,但與其他端點的「完全載入」和「僅驗證」任務的操作方式不同。對於將 S3 作為目標,此類型的任務只會根據 S3 目標中的完全載入資料進行驗證,而不會驗證任何在 CDC 遷移過程中遷移的資料。僅使用此功能來驗證僅限完全載入任務所建立的資料。使用此模式來驗證目標中的資料不會產生有效的驗證 (該目標中有執行的作用中 CDC 任務)。

  • 僅驗證任務只會驗證自上次間隔驗證時段 (UTC 00:00) 以來的變更。僅驗證任務不會驗證前幾天的完全載入資料或 CDC 資料。