

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

# 針對 Aurora PostgreSQL 資料庫叢集設定邏輯複寫
<a name="AuroraPostgreSQL.Replication.Logical.Configure"></a>

設定邏輯複製需要 `rds_superuser` 權限。您的 Aurora PostgreSQL 資料庫叢集必須設定為使用自訂資料庫叢集參數群組，以便您可以依下列程序所述設定必要的參數。如需詳細資訊，請參閱[Amazon Aurora 資料庫叢集的資料庫叢集參數群組](USER_WorkingWithDBClusterParamGroups.md)。

**針對 Aurora PostgreSQL 資料庫叢集設定 PostgreSQL 邏輯複寫**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 Aurora PostgreSQL 資料庫叢集。

1. 開啟 **Configuration** (組態) 索引標籤。在執行個體詳細資訊中找出**參數群組**連結，並於**類型**清單中選擇**資料庫叢集參數群組**。

1. 選擇連結以開啟與 Aurora PostgreSQL 資料庫叢集相關聯的連結。

1. 在 **Parameters** (參數) 搜尋欄位中，輸入 `rds` 以尋找 `rds.logical_replication` 參數。此參數的預設值為 `0`，表示預設為關閉。

1. 選擇 **Edit parameters** (編輯參數) 以存取屬性值，然後從選取器中選擇 `1` 以開啟功能。根據您預期的使用情況，您可能也需要變更下列參數的設定。不過，在許多情況下，預設值就足夠了。
   + `max_replication_slots` – 將此參數設定為至少等於您規劃之邏輯複寫發佈與訂閱總數的值。如果您使用的是 AWS DMS，此參數應至少等於您從叢集規劃的變更資料擷取任務，以及邏輯複寫出版物和訂閱。
   + `max_wal_senders` 和 `max_logical_replication_workers` – 將這些參數設定為至少等於您要作用中的邏輯複寫槽數目，或變更資料擷取的作用中 AWS DMS 任務數目的值。讓邏輯複寫槽處於非作用中會導致清理無法從資料表移除已淘汰的元組，因此建議您監控複寫槽並視需要移除非作用中的複寫槽。
   + `max_worker_processes` – 將此參數設定為至少等於 `max_logical_replication_workers`、`autovacuum_max_workers`、和 `max_parallel_workers` 值總計的值。在小型資料庫執行個體類別上，背景工作者程序可能影響應用程式工作負載，因此，如果您將 `max_worker_processes` 設為高於預設值，請監控資料庫的效能。(預設值是 `GREATEST(${DBInstanceVCPU*2},8}` 的結果，表示依預設，這是 8 或是資料庫執行個體類別對等 CPU 的兩倍，以較大者為準)。
**注意**  
您可修改客戶建立的資料庫參數群組中的參數值；但無法變更預設資料庫參數群組中的參數值。

1. 選擇**儲存變更**。

1. 重新啟動 Aurora PostgreSQL 資料庫叢集的寫入器執行個體，以便您的變更生效。在 Amazon RDS 主控台中，選擇叢集的主要資料庫執行個體，然後從 **Actions** (動作) 中選擇 **Reboot** (重新啟動)。

1. 當執行個體可用時，您可以驗證邏輯複寫是否已開啟，如下所示。

   1. 使用 `psql` 連線到 Aurora PostgreSQL 資料庫叢集的寫入器執行個體。

      ```
      psql --host=your-db-cluster-instance-1.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
      ```

   1. 使用下列命令驗證是否已啟用邏輯複寫。

      ```
      labdb=> SHOW rds.logical_replication;
       rds.logical_replication
      -------------------------
       on
      (1 row)
      ```

   1. 驗證 `wal_level` 是否已設為 `logical`。

      ```
      labdb=> SHOW wal_level;
        wal_level
      -----------
       logical
      (1 row)
      ```

如需使用邏輯複寫，讓資料庫表格與來源 Aurora PostgreSQL 資料庫叢集中的變更保持同步的範例，請參閱 [範例：搭配 Aurora PostgreSQL 資料庫叢集使用邏輯複寫](AuroraPostgreSQL.Replication.Logical.PostgreSQL-Example.md)。