

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

# 在 中使用 PostgreSQL 資料庫做為同質資料遷移的來源 AWS DMS
<a name="dm-data-providers-source-postgresql"></a>

在 AWS DMS中使用 PostgreSQL 資料庫作為 [同質資料遷移](data-migrations.md) 的來源。在這種情況下，您的來源資料提供者可以是內部部署、Amazon EC2 或 RDS for PostgreSQL 資料庫。

若要執行同質資料遷移，請為您 AWS DMS 為 PostgreSQL 來源資料庫在 中指定的資料庫使用者授予超級使用者許可。資料庫使用者必須具有超級使用者許可，才能存取來源中的複寫特定功能。若要進行完全載入的資料遷移，您的資料庫使用者需要有資料表的 `SELECT` 許可才能遷移資料。

使用下列指令碼在 PostgreSQL 來源資料庫中建立具有所需權限的資料庫使用者。為您遷移到的所有資料庫執行`GRANT`查詢 AWS。

```
CREATE USER your_user WITH LOGIN PASSWORD 'your_password';
ALTER USER your_user WITH SUPERUSER;
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO your_user;
```

在上述範例中，將每個*使用者輸入預留位置*取代為您自己的資訊。

AWS DMS 支援對具有主索引鍵的 PostgreSQL 資料表進行 CDC。如果資料表沒有主索引鍵，則預先寫入日誌 (WAL) 不包含資料庫資料列的前映像。您可以在此使用其他組態設定，並使用資料表複本身分識別作為因應措施。但是，這種方法可能會產生額外的日誌。我們建議您僅在仔細測試之後，才使用資料表複本身分識別作為因應措施。如需詳細資訊，請參閱[使用 PostgreSQL 資料庫作為 DMS 來源時的其他組態設定](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Advanced)。

下列各節說明自我管理和 AWS管理 PostgreSQL 資料庫的特定組態先決條件。

**Topics**
+ [在 中使用自我管理的 PostgreSQL 資料庫做為同質資料遷移的來源 AWS DMS](#dm-data-providers-source-postgresql-sm)
+ [在 中使用 AWS受管 PostgreSQL 資料庫做為同質資料遷移的來源 AWS DMS](#dm-data-providers-source-postgresql-aws)
+ [使用 PostgreSQL 相容資料庫作為同質資料遷移來源的限制](#dm-data-providers-source-postgresql-limitations)

## 在 中使用自我管理的 PostgreSQL 資料庫做為同質資料遷移的來源 AWS DMS
<a name="dm-data-providers-source-postgresql-sm"></a>

本節說明如何設定託管於內部部署或 Amazon EC2 執行個體上的 PostgreSQL 資料庫。

請檢查來源 PostgreSQL 資料庫的版本。請確定 AWS DMS 支援您的來源 PostgreSQL 資料庫版本，如中所述[DMS 同質資料遷移的來源](CHAP_Introduction.Sources.md#CHAP_Introduction.Sources.HomogeneousDataMigrations)。

同質資料遷移可支援使用邏輯複寫的變更資料擷取 (CDC)。若要在自我管理 PostgreSQL 來源資料庫上開啟邏輯複寫，請在 `postgresql.conf` 組態檔案中設定下列參數和值：
+ 將 `wal_level` 設定為 `logical`。
+ 將 `max_replication_slots` 設為大於 1 的值。

  將 `max_replication_slots` 值設定為您想要執行的任務數量。例如，若要執行 5 項任務，則需要設定至少 5 個插槽。只要任務啟動並保持開啟，插槽立即自動開啟，即使任務不再執行。請務必手動刪除開啟的插槽。
+ 將 `max_wal_senders` 設為大於 1 的值。

  `max_wal_senders` 參數設定可以同時執行的任務數量。
+ `wal_sender_timeout` 參數會將失效超過指定毫秒數的複寫連線結束。預設為 60000 毫秒 (60 秒)。將值設定為 0 (零) 會停用逾時機制，且此設定對 DMS 有效。

某些參數是靜態值，您只能在伺服器啟動時進行設定。在重新啟動伺服器之前，對於組態檔案項目所做的任何變更都會忽略。如需詳細資訊，請參閱 [PostgreSQL 文件](https://www.postgresql.org/docs/current/intro-whatis.html)。

## 在 中使用 AWS受管 PostgreSQL 資料庫做為同質資料遷移的來源 AWS DMS
<a name="dm-data-providers-source-postgresql-aws"></a>

本節說明如何設定您的 Amazon RDS for PostgreSQL 資料庫執行個體。

使用 PostgreSQL 資料庫執行個體 AWS 的主要使用者帳戶做為 PostgreSQL 來源資料提供者的使用者帳戶，以進行同質資料遷移 AWS DMS。主要使用者帳戶擁有能讓它設定 CDC 所需要的角色。如果您使用主要使用者帳戶以外的帳戶，則此帳戶必須有 `rds_superuser` 角色和 `rds_replication` 角色。授權來管理邏輯槽和利用邏輯槽來串流資料的 `rds_replication` 角色

使用下列程式碼範例授與 `rds_superuser` 和 `rds_replication` 角色。

```
GRANT rds_superuser to your_user;
GRANT rds_replication to your_user;
```

在上述範例中，請將 *your\$1user* 取代為您的資料庫使用者名稱。

若要開啟邏輯複寫，請將資料庫參數群組中的 `rds.logical_replication` 參數設定為 1。此靜態參數需要重新啟動資料庫執行個體才會生效。

## 使用 PostgreSQL 相容資料庫作為同質資料遷移來源的限制
<a name="dm-data-providers-source-postgresql-limitations"></a>

使用 PostgreSQL 相容資料庫作為同質資料遷移的來源時，存在下列限制：
+ 用於連線到資料來源的使用者名稱具有以下限制：
  + 長度可有 2 到 64 個字元。
  + 不能有空格。
  + 可以包含以下字元：a-z、A-Z、0-9 和底線 (\$1)。
  + 必須以 a-z 或 A-Z 開頭。
+ 您用來連線到資料來源的密碼具有以下限制：
  + 長度可有 1 到 128 個字元。
  + 不能包含下列任何項目：單引號 (')、雙引號 (「)、分號 (;) 或空格。