

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

# 設定傳輸 PostgreSQL 資料庫
<a name="PostgreSQL.TransportableDB.Setup"></a>

開始之前，請確定 RDS for PostgreSQL 資料庫執行個體符合下列要求：
+ 來源與目的地的 RDS for PostgreSQL 資料庫執行個體都必須執行相同的 PostgreSQL 版本。
+ 目的地資料庫不能具有與要傳輸的來源資料庫名稱相同的資料庫。
+ 用於執行傳輸作業的帳戶在來源資料庫和目的地資料庫上均需要 `rds_superuser` 權限。
+ 來源資料庫執行個體的安全群組必須允許來自目的地資料庫執行個體的傳入存取。如果來源和目的地資料庫執行個體位於 VPC 中，則可能已經存在這種情況。如需安全群組的詳細資訊，請參閱[使用安全群組控制存取](Overview.RDSSecurityGroups.md)。

將資料庫從來源資料庫執行個體傳輸至目的地資料庫執行個體，需要對與每個執行個體相關聯的資料庫參數群組進行多次變更。這意味著您必須為來源資料庫執行個體建立自訂資料庫參數群組，並為目的地資料庫執行個體建立自訂資料庫參數群組。

**注意**  
如果您的資料庫執行個體已使用自訂資料庫參數群組進行設定，則可從下列程序中的步驟 2 開始。

**設定用於傳輸資料庫的自訂資料庫群組參數**

若要執行以下步驟，請使用具有 `rds_superuser` 權限的帳戶。

1. 如果來源和目的地資料庫執行個體使用預設的資料庫參數群組，則需要使用執行個體的適當版本來建立自訂資料庫參數群組。您可以執行此操作，以便變更數個參數的值。如需詳細資訊，請參閱 [Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

1. 在自訂資料庫參數群組中，變更下列參數的值：
   + `shared_preload_libraries`：將 `pg_transport` 新增至程式庫清單中。
   + `pg_transport.num_workers`：預設值為 3。根據資料庫的需要增加或減少此值。對於 200 GB 的資料庫，建議此值不大於 8。請記住，如果增加此參數的預設值，還應同時增加 `max_worker_processes` 的值。
   + `pg_transport.work_mem`：預設值為 128 MB 或 256 MB，具體取決於 PostgreSQL 版本。預設設定通常可保持不變。
   + `max_worker_processes` – 需要使用以下計算設定此參數值：

     ```
     (3 * pg_transport.num_workers) + 9
     ```

     目的地需要此值來處理傳輸中涉及的各種後台工作程序。如要進一步了解 `max_worker_processes,`，請參閱 PostgreSQL 文件中的[資源耗用](https://www.postgresql.org/docs/current/runtime-config-resource.html)。

   如需 `pg_transport` 參數的詳細資訊，請參閱 [可傳輸資料庫參數參考](PostgreSQL.TransportableDB.Parameters.md)。

1. 重新啟動來源 RDS for PostgreSQL 資料庫執行個體和目的地執行個體，以便讓參數的設定生效。

1. 連接至 RDS for PostgreSQL 來源資料庫執行個體。

   ```
   psql --host=source-instance.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. 從資料庫執行個體的公有架構中移除無關的擴充功能。在實際傳輸操作期間僅允許 `pg_transport` 擴充功能。

1. 安裝 `pg_transport` 擴充功能，如下所示：

   ```
   postgres=> CREATE EXTENSION pg_transport;
   CREATE EXTENSION
   ```

1. 連接至 RDS for PostgreSQL 目的地資料庫執行個體。刪除任何無關的擴充功能，然後安裝 `pg_transport` 擴充功能。

   ```
   postgres=> CREATE EXTENSION pg_transport;
   CREATE EXTENSION
   ```