使用 Amazon OpenSearch Service 叢集作為 AWS Database Migration Service 的目標 - AWS Database Migration Service

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

使用 Amazon OpenSearch Service 叢集作為 AWS Database Migration Service 的目標

您可以使用 AWS DMS 將資料遷移到 Amazon OpenSearch Service (OpenSearch Service)。OpenSearch Service 是一項受管服務,可讓您輕鬆地部署、操作和擴展 OpenSearch Service 叢集。

在 OpenSearch Service 中,您可以使用索引和文件。索引是文件的集合,文件是包含純量值、陣列和其他物件的 JSON 物件。OpenSearch 提供以 JSON 為基礎的查詢語言,讓您可以查詢索引中的資料並擷取對應的文件。

當 AWS DMS 為 OpenSearch Service 的目標端點建立索引時,其會為來源端點的每份資料表建立一個索引。建立 OpenSearch Service 索引的成本因數項因素而異。分別是建立的索引數、這些索引的總資料量,以及 OpenSearch 針對每份文件存放的少量中繼資料。

以適用於您遷移範圍的運算和儲存資源設定 OpenSearch Service 叢集。建議您考慮以下因素,視您想要使用的複寫任務而定:

  • 若為完全資料載入,請考慮您希望遷移的總資料量,以及傳輸速度。

  • 若為複寫持續的變更,請考慮更新頻率,以及您的端對端延遲要求。

此外,進行 OpenSearch 叢集的索引設定,密切注意文件計數。

多執行緒完整載入任務設定

為了協助提高傳輸速度,AWS DMS 支援 OpenSearch Service 目標叢集的多執行緒完全載入。AWS DMS 透過任務設定支援此多執行緒,其中包括下列項目:

  • MaxFullLoadSubTasks:使用此選項,指出要平行載入的來源資料表數目上限。DMS 會使用專用子任務,將每個資料表載入到其對應的 OpenSearch Service 目標索引。預設值為 8;最大值為 50。

  • ParallelLoadThreads:使用此選項,指定 AWS DMS 將每個資料表載入至其 OpenSearch Service 目標索引時所使用的執行緒數目。OpenSearch Service 目標的最大值為 32。您可以要求提高此上限。

    注意

    如果您未將 ParallelLoadThreads 變更為預設值 (0) 以外的值,則 AWS DMS一次傳送單一記錄。此方法可將過度的載入放置在 OpenSearch Service 叢集上。確定您將此選項設定為 1 或以上。

  • ParallelLoadBufferSize:使用此選項指定平行載入執行緒,將資料載入至 OpenSearch Service 目標時,緩衝區中存放的記錄數量上限。預設值為 50。最大值為 1000。使用此設定搭配 ParallelLoadThreadsParallelLoadBufferSize,只有在有多個執行緒時才有效。

如需 DMS 如何使用多執行緒來載入 OpenSearch Service 叢集的詳細資訊,請參閱 AWS 部落格文章針對 AWS Database Migration Service 遷移擴展 Amazon OpenSearch Service

多執行緒 CDC 載入任務設定

您可以使用任務設定來修改 PutRecords API 呼叫行為,改善 OpenSearch Service 目標叢集的變更資料擷取 (CDC) 效能。若要執行此操作,您可以指定並行執行緒數目、每個執行緒的佇列數,以及使用 ParallelApply* 任務設定存放在緩衝區中的記錄數目。例如,假設您要執行 CDC 載入並平行套用 32 個執行緒。您也想要每個執行緒存取 64 個佇列,且每個緩衝區存放 50 筆記錄。

注意

ParallelApply* 3.4.0 版及更高版本提供在 CDC 期間,對 Amazon OpenSearch Service 目標端點使用 AWS DMS 任務設定的支援。

為提升 CDC 效能,AWS DMS 支援下列任務設定:

  • ParallelApplyThreads:指定 CDC 載入期間 AWS DMS 用將資料記錄推送至 OpenSearch Service 目標端點的並行執行緒數目。預設值為零 (0),最大值為 32。

  • ParallelApplyBufferSize:指定每個緩衝區佇列中存放的最大記錄數目,以便並行執行緒在 CDC 載入期間推送至 OpenSearch Service 目標端點。預設值為 100,最大值為 1,000。ParallelApplyThreads 指定多個執行緒時,請使用此選項。

  • ParallelApplyQueuesPerThread:指定每個執行緒存取的佇列數目,以便從佇列中取出資料記錄,並在 CDC 期間產生 OpenSearch Service 端點的批次載入。

在使用 ParallelApply* 任務設定時,partition-key-type 預設是資料表的 primary-key,而非 schema-name.table-name

從關聯式資料庫資料表遷移到 OpenSearch Service 索引

AWS DMS 支援將資料遷移到 OpenSearch Service 的純量資料類型。從 Oracle 或 MySQL 等關聯式資料庫遷移到 OpenSearch Service 時,您可能想要重組此資料的存放方式。

AWS DMS 支援下列 OpenSearch Service 純量資料類型:

  • 布林值

  • Date

  • Float

  • Int

  • 字串

AWS DMS 將 Date 資料類型轉換成 String 類型。您可以指定自訂映射解譯這些日期。

AWS DMS 不支援遷移 LOB 資料類型。

使用 Amazon OpenSearch Service 作為 AWS Database Migration Service 目標的先決條件

在您開始使用 OpenSearch Service 資料庫作為 AWS DMS 目標之前,請務必建立 AWS Identity and Access Management (IAM) 角色。這個角色應該讓 AWS DMS 存取目標端點的 OpenSearch Service 索引。以下 IAM 政策顯示最低的存取許可集。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

遷移到 OpenSearch Service 所用的角色必須擁有下列許可。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpDelete", "es:ESHttpGet", "es:ESHttpHead", "es:ESHttpPost", "es:ESHttpPut" ], "Resource": "arn:aws:es:region:account-id:domain/domain-name/*" } ] }

在上述範例中,以 AWS 區域識別符取代 region、以 AWS 帳戶 ID 取代 account-id,並以 Amazon OpenSearch Service 網域名稱取代 domain-name。範例為 arn:aws:es:us-west-2:123456789012:domain/my-es-domain

使用 OpenSearch Service 作為 AWS DMS 目標時的端點設定

您可以使用端點設定來設定 OpenSearch Service 目標資料庫,類似於使用額外的連線屬性。您可以在使用 AWS DMS 主控台建立目標端點時指定設定,或使用 AWS CLI 中的 create-endpoint 命令,以 --elasticsearch-settings '{"EndpointSetting": "value", ...}' JSON 語法指定設定。

下列資料表顯示您可以將 OpenSearch Service 作為目標使用的端點設定。

屬性名稱 有效值 預設值和描述

FullLoadErrorPercentage

正整數大於 0,但不超過 100。

10 – 針對完全載入任務,此屬性決定判定任務失敗的錯誤閾值。例如,假設來源端點有 1,500 個資料列,而此參數設為 10。寫入目標端點時,如果 AWS DMS 發生超過 150 個錯誤 (資料列計數的 10%),則任務失敗。

ErrorRetryDuration

正整數大於 0。

300 – 如果錯誤發生在目標端點,AWS DMS 會重試這麼多秒。否則,任務失敗。

使用 Amazon OpenSearch Service 作為 AWS Database Migration Service 目標時的限制

使用 Amazon OpenSearch Service 作為目標時,有下列限制:

  • OpenSearch Service 使用動態對應 (自動猜測),以決定遷移資料所用的資料類型。

  • OpenSearch Service 會以不重複的 ID 存放每個文件。以下是範例 ID。

    "_id": "D359F8B537F1888BC71FE20B3D79EAE6674BE7ACA9B645B0279C7015F6FF19FD"

    每個文件 ID 是都 64 位元組長,所以這預計為儲存需求。例如,如果您從 AWS DMS 來源遷移 100,000 個資料列,則產生的 OpenSearch Service 索引需要額外的 6,400,000 位元組儲存。

  • 使用 OpenSearch Service 時,您無法更新主索引鍵屬性。此限制在使用變更資料擷取 (CDC) 持續複寫時十分重要,因為它會導致目標出現不需要的資料。在 CDC 模式下,主索引鍵會映射到 SHA256 值,這有 32 位元組長。這些都會轉換成人類可讀的 64 位元組字串,作為 OpenSearch Service 文件 ID 使用。

  • 如果 AWS DMS 發生任何項目無法遷移的狀況,其會將錯誤訊息寫入 Amazon CloudWatch Logs。此行為與其他 AWS DMS 目標端點的行為不同,其他端點會將錯誤寫入例外狀況資料表。

  • AWS DMS 不支援對以下 Amazon ES 叢集的連線;此叢集已啟用對主要使用者和密碼的精細分級的存取控制。

  • AWS DMS 不支援 OpenSearch Service 無伺服器。

  • OpenSearch Service 不支援將資料寫入至預先存在的索引。

Amazon OpenSearch Service 的目標資料類型

當 AWS DMS 從異質資料庫中遷移資料時,服務會將來源資料庫的資料類型映射到稱為 AWS DMS 資料類型的中繼資料類型。然後,此服務會將中繼資料類型映射到目標資料類型。下表顯示每種 AWS DMS 資料類型以及其對應至 Amazon OpenSearch Service 的資料類型。

AWS DMS 資料類型 OpenSearch Service 資料類型

布林值

布林值

Date

字串

時間

日期

時間戳記

日期

INT4

integer

Real4

float

UINT4

integer

如需 AWS DMS 資料類型的詳細資訊,請參閱AWS Database Migration Service 的資料類型