

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

# 在 與資料庫執行個體之間傳輸 PostgreSQL 資料庫
<a name="PostgreSQL.TransportableDB"></a>

針對 Amazon RDS 使用 PostgreSQL 可傳輸資料庫，您可以在兩個資料庫執行個體之間移動 PostgreSQL 資料庫。這是在不同資料庫執行個體之間遷移大型資料庫的一種非常快速的方法。若要使用此方式，您的資料庫執行個體必須皆執行相同的 PostgreSQL 主要版本。

此功能要求您在來源資料庫執行個體和目的地資料庫執行個體上都安裝 `pg_transport` 擴充功能。`pg_transport` 擴充功能提供實體傳輸機制，使用最少的方式移動資料庫檔案。此機制移動資料的速度比傳統的傾印和載入程序更快，而且停機時間更短。

**注意**  
RDS for PostgreSQL 11.5 版和更高版本、RDS for PostgreSQL 10.10 版和更高版本中提供 PostgreSQL 可傳輸資料庫。

若要將 PostgreSQL 資料庫執行個體從一個 RDS for PostgreSQL 資料庫執行個體傳輸到另一個執行個體，請先設定來源和目的地執行個體，如 [ 設定用於傳輸的資料庫執行個體](PostgreSQL.TransportableDB.Setup.md) 中所述。然後，您可以使用 [ 傳輸 PostgreSQL 資料庫](PostgreSQL.TransportableDB.Transporting.md) 中描述的函數傳輸資料庫。

**Topics**
+ [資料庫傳輸期間發生的事](#PostgreSQL.TransportableDB.DuringTransport)
+ [使用 PostgreSQL 可傳輸資料庫的限制](#PostgreSQL.TransportableDB.Limits)
+ [設定傳輸 PostgreSQL 資料庫](PostgreSQL.TransportableDB.Setup.md)
+ [將 PostgreSQL 資料庫從來源傳輸至目的地](PostgreSQL.TransportableDB.Transporting.md)
+ [可傳輸資料庫函數參考](PostgreSQL.TransportableDB.transport.import_from_server.md)
+ [可傳輸資料庫參數參考](PostgreSQL.TransportableDB.Parameters.md)

## 資料庫傳輸期間發生的事
<a name="PostgreSQL.TransportableDB.DuringTransport"></a>

PostgreSQL 可傳輸資料庫功能使用提取模式將資料庫從來源匯入目的地資料庫執行個體。`transport.import_from_server` 功能在目的地資料庫執行個體上建立傳輸中資料庫。無法存取傳輸進行期間目的地資料庫執行個體上的傳輸中資料庫。

當傳輸開始時，所有目前來源資料庫上的工作階段皆會終止。任何其他不在來源資料庫執行個體上的資料庫，不會受到傳輸的影響。

來源資料庫會變成特定的唯讀模式。當進入此模式時，您可以連接來源資料庫且執行唯獨模式查詢。然而，會封鎖寫入啟用查詢和其他類型的命令。只有開始進行傳輸的特定來源資料庫會受到此限制的影響。

傳輸期間，您不能重新恢復目的地資料庫執行個體的還原時間點。這是因為傳輸並非交易，且不會使用 PostgreSQL 預寫紀錄來紀錄變更。如果目的地資料庫執行個體有啟用自動備份，會在傳輸完成後自動進行備份。還原時間點會在備份完成*後*可用。

如果傳輸失敗，`pg_transport` 擴充套件會試圖對來源和目的地資料庫執行個體重做所有變更。這包含移除目的地已經部分傳輸的資料庫。根據錯誤的類型，來源資料庫可能會持續拒絕寫入啟用查詢。若發生這種情況，請使用下列命令以允許寫入啟用查詢。

```
ALTER DATABASE {{db-name}} SET default_transaction_read_only = false;
```

## 使用 PostgreSQL 可傳輸資料庫的限制
<a name="PostgreSQL.TransportableDB.Limits"></a>

可傳輸的資料庫有以下限制：
+ **僅供讀取複本** – 您無法使用傳送僅供讀取複本或僅供讀取複本的上層執行個體資料庫。
+ **不支援的欄位類型** – 您無法在任何計畫使用此方法傳輸的資料庫表格中使用 `reg` 資料類型。這些類型取決於系統上目錄物件 ID (OIDs)，通常會在傳輸時變更。
+ **資料表空間** – 所有來源資料庫物件必須在預設 `pg_default` 資料表空間中。
+ **相容性** – 來源與目的地資料庫執行個體都必須執行相同的 PostgreSQL 主要版本。
+ **擴充功能**：來源資料庫執行個體只能安裝 `pg_transport`。
+ **角色和 ACL** – 來源資料庫的存取權和擁有者資訊，不會一併傳輸至目的地資料庫。所有資料庫物件會由傳輸目的地的使用者建立和擁有。
+ **並行傳輸**：如果工作者程序設定正確，單個資料庫執行個體最多可支援 32 個並行傳輸，包括匯入和匯出。
+ **僅限 RDS for PostgreSQL 資料庫執行個體**：僅 RDS for PostgreSQL 資料庫執行個體上支援 PostgreSQL 可傳輸資料庫。您無法將其與內部部署資料庫或在 Amazon EC2 上執行的資料庫搭配使用。