

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

# 以 Amazon Aurora PostgreSQL 進行複寫
<a name="AuroraPostgreSQL.Replication"></a>

在下文中，您可以找到如何使用 Amazon Aurora PostgreSQL 進行複寫的相關資訊，其中包括如何監控和使用邏輯複寫。

**Topics**
+ [使用 Aurora 複本](#AuroraPostgreSQL.Replication.Replicas)
+ [改善 Aurora 複本的讀取可用性](#AuroraPostgreSQL.Replication.Replicas.SRO)
+ [監控 Aurora PostgreSQL 複寫](#AuroraPostgreSQL.Replication.Monitoring)
+ [以 Aurora 進行 PostgreSQL 邏輯複寫的概觀](AuroraPostgreSQL.Replication.Logical.md)
+ [針對 Aurora PostgreSQL 資料庫叢集設定邏輯複寫](AuroraPostgreSQL.Replication.Logical.Configure.md)
+ [關閉邏輯複寫](AuroraPostgreSQL.Replication.Logical.Stop.md)
+ [監控 Aurora PostgreSQL 邏輯複寫的全部寫入快取和邏輯槽](AuroraPostgreSQL.Replication.Logical-monitoring.md)
+ [範例：搭配 Aurora PostgreSQL 資料庫叢集使用邏輯複寫](AuroraPostgreSQL.Replication.Logical.PostgreSQL-Example.md)
+ [範例：使用 Aurora PostgreSQL 和 進行邏輯複寫 AWS Database Migration Service](AuroraPostgreSQL.Replication.Logical.DMS-Example.md)
+ [設定邏輯複寫連線的 IAM 身分驗證](AuroraPostgreSQL.Replication.Logical.IAM-auth.md)

## 使用 Aurora 複本
<a name="AuroraPostgreSQL.Replication.Replicas"></a>

*Aurora 複本*是 Aurora 資料庫叢集中的獨立端點，最適合用於擴展讀取操作和提高可用性。Aurora 資料庫叢集最多可包含 15 個 Aurora 複本，位於 Aurora 資料庫叢集 AWS 區域的可用區域。

資料庫叢集磁碟區由資料庫叢集的多個資料副本組成。然而，叢集磁碟區中的資料是以單一邏輯磁碟區的形式呈現給主要執行個體，以及資料庫叢集中的 Aurora 複本。如需 Aurora 複本的詳細資訊，請參閱 [Aurora 複本](Aurora.Replication.md#Aurora.Replication.Replicas)。

Aurora 複本很適合讀取擴展，因為完全專用於叢集磁碟區上的讀取操作。寫入器資料庫執行個體會管理寫入操作。Aurora PostgreSQL 資料庫叢集中的所有執行個體將共用叢集磁碟區。因此，不需要額外的工作來複寫每個 Aurora 複本的資料複本。

有了 Aurora PostgreSQL，在刪除 Aurora 複本時，隨即會移除其執行個體端點，並且會從讀取器端點移除 Aurora 複本。如果在要刪除的 Aurora 複本上有陳述式正在執行，則會有三分鐘的寬限期。現有陳述式在寬限期期間可以從容地完成。在寬限期結束時，Aurora 複本會關閉並刪除。

Aurora PostgreSQL 資料庫叢集使用 Aurora 全域資料庫，支援不同 AWS 區域中的 Aurora 複本。如需詳細資訊，請參閱[使用 Amazon Aurora 全球資料庫](aurora-global-database.md)。

**注意**  
透過讀取可用性功能，您必須手動執行才可重新啟動資料庫叢集中的 Aurora 複本。對於在此功能之前建立的資料庫叢集，重新啟動寫入器資料庫執行個體會自動重新啟動 Aurora 複本。自動重新啟動會重新建立進入點，保證資料庫叢集之間讀取/寫入的一致性。

## 改善 Aurora 複本的讀取可用性
<a name="AuroraPostgreSQL.Replication.Replicas.SRO"></a>

Aurora PostgreSQL 透過在寫入器資料庫執行個體重新啟動時，或在 Aurora 複本無法跟上寫入流量時持續提供讀取請求，從而改善資料庫叢集中的讀取可用性。

根據預設，可在下列版本的 Aurora PostgreSQL 上使用讀取可用性功能：
+ 16.1 版和所有更新版本
+ 15.2 版和更新的 15 版本
+ 14.7 版和更新的 14 版本
+ 13.10 版和更新的 13 版本
+ 12.14 版和更新的 12 版本

Aurora 全球資料庫支援下列版本中的讀取可用性功能：
+ 16.1 版和所有更新版本
+ 15.4 版和更新的 15 版本
+ 14.9 版和更新的 14 版本
+ 13.12 版和更新的 13 版本
+ 12.16 版和更新的 12 版本

若要在此啟動之前針對在其中一個版本上建立的資料庫叢集使用讀取可用性功能，請重新啟動資料庫叢集的寫入器執行個體。

修改 Aurora PostgreSQL 資料庫叢集的靜態參數時，您必須重新啟動寫入器執行個體，以便參數變更生效。例如，設定 `shared_buffers` 的值時，您必須重新啟動寫入器執行個體。使用 Aurora 複本讀取可用性功能時，資料庫叢集能維持更佳的可用性，在寫入器執行個體重新啟動時降低對叢集的影響。讀取器執行個體不會重新啟動，並繼續回應讀取請求。若要套用靜態參數變更，請重新啟動每個個別的讀取器執行個體。

Aurora PostgreSQL 資料庫叢集的 Aurora 複本可從複寫錯誤 (例如寫入器重新啟動、容錯移轉、緩慢複寫和網路問題) 中復原，方法為在與寫入器重新連線之後快速復原至記憶體資料庫狀態。此方法可讓 Aurora 複本執行個體在用戶端資料庫仍然可用時，與最新的儲存體更新達成一致性。

與複寫復原發生衝突的進行中交易可能會收到錯誤，但是在讀取器趕上寫入器之後，用戶端可以重試這些交易。

### 監控 Aurora 複本
<a name="AuroraPostgreSQL.Replication.Replicas.SRO.monitoring"></a>

從寫入器中斷連線復原時，您可以監控 Aurora 複本。使用以下指標檢查讀取器執行個體是否有最新的相關資訊，以及追蹤進行中的唯讀交易。
+ `aurora_replica_status` 函數會更新，以在讀取器執行個體仍然連線時，傳回該執行個體的最新資訊。資料列若對應至查詢執行所在的資料庫執行個體，`aurora_replica_status` 中的最後一個更新時間戳記一律為空白。這表示讀取器執行個體具有最新的資料。
+ 當 Aurora 複本中斷與寫入器執行個體的連線並重新連線時，系統會發送下列資料庫事件：

  `Read replica has been disconnected from the writer instance and reconnected.`
+ 當唯讀查詢由於復原衝突而遭到取消時，您可能會在資料庫錯誤日誌中看到一或多個下列錯誤訊息：

  `Canceling statement due to conflict with recovery`.

  `User query may not have access to page data to replica disconnect.`

  `User query might have tried to access a file that no longer exists.`

  `When the replica reconnects, you will be able to repeat your command.`

### 限制
<a name="AuroraPostgreSQL.Replication.Replicas.SRO.limitations"></a>

下列限制適用於具有讀取可用性功能的 Aurora 複本：
+ 如果在複寫復原期間無法從寫入器執行個體串流資料，則次要資料庫叢集的 Aurora 複本就可能會重新啟動。
+ 如果 Aurora 複本已在進行中，則它不支援線上複寫復原，並將重新啟動。
+ 當您的資料庫執行個體接近交易 ID 包圍時，Aurora 複本將重新啟動。如需交易 ID 包圍的詳細資訊，請參閱[避免交易 ID 包圍失敗](https://www.postgresql.org/docs/current/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND                     )。
+ 在特定情況下，當複寫程序遭到封鎖時，Aurora 複本可以重新啟動。

## 監控 Aurora PostgreSQL 複寫
<a name="AuroraPostgreSQL.Replication.Monitoring"></a>

讀取擴展和高可用性取決於最短延遲時間。您可以監控 Amazon CloudWatch `ReplicaLag` 指標，以監控 Aurora 複本落後 Aurora PostgreSQL 資料庫叢集之寫入器資料庫執行個體的程度。因為 Aurora 複本會從與寫入器資料庫執行個體所在的相同叢集磁碟區讀取，`ReplicaLag` 指標對 Aurora PostgreSQL 資料庫叢集有不同的意義。Aurora 複本的 `ReplicaLag` 指標指出 Aurora 複本的頁面快取落後於寫入器資料庫執行個體的頁面快取的程度。

如需監控 RDS 執行個體和 CloudWatch 指標的詳細資訊，請參閱 [在 Amazon Aurora 叢集中監控指標](MonitoringAurora.md)。