

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

# 使用 Amazon OpenSearch Service 叢集做為 的目標 AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch"></a>

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

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

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

以適用於您遷移範圍的運算和儲存資源設定 OpenSearch Service 叢集。建議您考慮以下因素，視您想要使用的複寫任務而定：
+ 若為完全資料載入，請考慮您希望遷移的總資料量，以及傳輸速度。
+ 若為複寫持續的變更，請考慮更新頻率，以及您的端對端延遲要求。

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

**多執行緒完全載入任務設定**

為了協助提高傳輸速度， AWS DMS 支援對 OpenSearch Service 目標叢集的多執行緒完全載入。 AWS DMS 支援此多執行緒的任務設定包括下列項目：
+ `MaxFullLoadSubTasks`：使用此選項，指出要平行載入的來源資料表數目上限。DMS 會使用專用子任務，將每個資料表載入到其對應的 OpenSearch Service 目標索引。預設值為 8；最大值為 49。
+ `ParallelLoadThreads` – 使用此選項來指定 AWS DMS 用來將每個資料表載入其 OpenSearch Service 目標索引的執行緒數目。OpenSearch Service 目標的最大值為 32。您可以要求提高此上限。
**注意**  
如果您未將 `ParallelLoadThreads` 變更為預設值 (0) 以外的值，則 AWS DMS 一次傳送單一記錄。此方法可將過度的載入放置在 OpenSearch Service 叢集上。確定您將此選項設定為 1 或以上。
+ `ParallelLoadBufferSize`：使用此選項指定平行載入執行緒，將資料載入至 OpenSearch Service 目標時，緩衝區中儲存的記錄數量上限。預設值為 50。最大值為 1000。使用此設定搭配 `ParallelLoadThreads`；`ParallelLoadBufferSize`，只有在有多個執行緒時才有效。

如需 DMS 如何使用多執行緒載入 OpenSearch Service 叢集的詳細資訊，請參閱 AWS 部落格文章 [Scale Amazon OpenSearch Service for AWS Database Migration Service migrations](https://aws.amazon.com/blogs/database/scale-amazon-elasticsearch-service-for-aws-database-migration-service-migrations/)。

**多執行緒 CDC 載入任務設定**

您可以使用任務設定來修改 `PutRecords` API 呼叫行為，改善 OpenSearch Service 目標叢集的變更資料擷取 (CDC) 效能。若要執行此操作，您可以指定並行執行緒數目、每個執行緒的佇列數，以及使用 `ParallelApply*` 任務設定儲存在緩衝區中的記錄數目。例如，假設您要執行 CDC 載入並平行套用 32 個執行緒。您也想要每個執行緒存取 64 個佇列，且每個緩衝區儲存 50 筆記錄。
**注意**  
在 CDC 到 Amazon OpenSearch Service 目標端點期間使用`ParallelApply*`任務設定的支援可在 3.4.0 版和更高 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 索引
<a name="CHAP_Target.Elasticsearch.RDBMS2Elasticsearch"></a>

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

AWS DMS 支援下列 OpenSearch Service 純量資料類型：
+ Boolean 
+ Date
+ Float
+ Int
+ String

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

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

## 使用 Amazon OpenSearch Service 做為 目標的先決條件 AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch.Prerequisites"></a>

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

------
#### [ JSON ]

****  

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

------

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

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "es:ESHttpDelete",
        "es:ESHttpGet",
        "es:ESHttpHead",
        "es:ESHttpPost",
        "es:ESHttpPut"
      ],
      "Resource": "*"
    }
  ]
}
```

------

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

## 使用 OpenSearch Service 做為 目標時的端點設定 AWS DMS
<a name="CHAP_Target.Elasticsearch.Configuration"></a>

您可以使用端點設定來設定 OpenSearch Service 目標資料庫，類似於使用額外的連線屬性。當您使用 AWS DMS 主控台或使用 中的 `create-endpoint`命令搭配 `--elasticsearch-settings '{"{{EndpointSetting"}}: {{"value"}}, {{...}}}'` JSON 語法來建立目標端點時[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)，您可以指定設定。

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


| 屬性名稱 | 有效值 | 預設值和描述 | 
| --- | --- | --- | 
| `FullLoadErrorPercentage`  | 正整數大於 0，但不超過 100。 | 10 – 針對完全載入任務，此屬性決定判定任務失敗的錯誤閾值。例如，假設來源端點有 1,500 個資料列，而此參數設為 10。然後，如果寫入目標端點時 AWS DMS 遇到超過 150 個錯誤 （列計數的 10%)，任務會失敗。 | 
|  `ErrorRetryDuration`  | 正整數大於 0。 | 300 – 如果目標端點發生錯誤， 會 AWS DMS 重試這幾秒鐘。否則，任務失敗。 | 
| `UseNewMappingType` | true 或 false | `false`，但若要使用 opensearch v2.x，應設定為 。 `true` | 

## 使用 Amazon OpenSearch Service 做為 目標的限制 AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch.Limitations"></a>

使用 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 Serverless。
+ OpenSearch Service 不支援將資料寫入預先存在的索引。
+ 複寫任務設定`TargetTablePrepMode:TRUNCATE_BEFORE_LOAD`不支援與 OpenSearch 目標端點搭配使用。
+ 使用 將資料遷移至 Amazon Elasticsearch 時 AWS DMS，來源資料必須具有主索引鍵或唯一識別符欄。如果來源資料沒有主索引鍵或唯一識別符，您需要使用 define-primary-key 轉換規則來定義。

## Amazon OpenSearch Service 的目標資料類型
<a name="CHAP_Target.Elasticsearch.DataTypes"></a>

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


| AWS DMS 資料類型 | OpenSearch Service 資料類型 | 
| --- | --- | 
| Boolean | boolean | 
| 日期 | string | 
| 時間 | date | 
| 時間戳記 | date | 
| INT4 | integer | 
| Real4 | float | 
| UINT4 | integer | 

如需 AWS DMS 資料類型的詳細資訊，請參閱 [AWS Database Migration Service 的資料類型](CHAP_Reference.DataTypes.md)。