

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

# 以 Aurora 進行 PostgreSQL 邏輯複寫的概觀
<a name="AuroraPostgreSQL.Replication.Logical"></a>

透過將 PostgreSQL 的邏輯複寫功能與 Aurora PostgreSQL 資料庫叢集搭配使用，您可以複寫和同步個別資料表，而不是整個資料庫執行個體。邏輯複寫會使用發佈與訂閱模型，將來源中的變更複寫到一或多個收件人。其運作方式為使用 PostgreSQL 預寫日誌 (WAL) 中的變更記錄。來源 (或*發佈者*) 會將所指定資料表的 WAL 資料傳送給一或多個收件人 (*訂閱者*)，進而複寫變更，並讓訂閱者的資料表與發行者的表格保持同步。來自發佈者的變更集是使用*發佈*來識別的。訂閱者取得變更的方式為建立*訂閱*，定義與發佈者資料庫及其發佈的連線。*複寫插槽*是此結構描述中用來追蹤訂閱進度的機制。

對於 Aurora PostgreSQL 資料庫叢集，WAL 記錄會儲存在 Aurora 儲存體上。在邏輯複寫案例中做為發佈者的 Aurora PostgreSQL 資料庫叢集會從 Aurora 儲存體讀取 WAL 資料、將其解碼，然後將其傳送給訂閱者，以便可將變更套用至該執行個體上的資料表。發佈者會使用*邏輯解碼器*來解碼資料以供訂閱者使用。根據預設，Aurora PostgreSQL 資料庫叢集會在傳送資料時使用原生 PostgreSQL `pgoutput` 外掛程式。還有其他邏輯解碼器可供使用。例如，Aurora PostgreSQL 也支援將 WAL 資料轉換為 JSON 的 `[wal2json](https://github.com/eulerto/wal2json)` 外掛程式。

從 Aurora PostgreSQL 14.5、13.8、12.12 和 11.17 版起，Aurora 使用*直接寫入式快取*來擴增 PostgreSQL 邏輯複寫程序，以提升效能。WAL 交易日誌會在緩衝區中進行本機快取，以減少磁碟 I/O 的數量，亦即在邏輯解碼期間從 Aurora 儲存體進行讀取。每當您針對 Aurora PostgreSQL 資料庫叢集使用邏輯複寫時，預設會使用直接寫入式快取。Aurora 提供數個您可以用來管理快取的功能。如需詳細資訊，請參閱[監控 Aurora PostgreSQL 邏輯複寫全部寫入快取](AuroraPostgreSQL.Replication.Logical-monitoring.md#AuroraPostgreSQL.Replication.Logical-write-through-cache)。

所有目前可用的 Aurora PostgreSQL 版本都支援邏輯複寫。如需詳細資訊，請參閱《Aurora PostgreSQL 版本資訊》**中的 [Amazon Aurora PostgreSQL 更新](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html)。

從下列版本 Babelfish for Aurora PostgreSQL 支援邏輯複寫：
+ 15.7 及更新版本
+ 16.3 及更新版本

**注意**  
除了在 PostgreSQL 10 中引進的原生 PostgreSQL 邏輯複寫功能之外，Aurora PostgreSQL 也支援 `pglogical` 延伸模組。如需詳細資訊，請參閱[使用 pglogical 跨執行個體同步資料](Appendix.PostgreSQL.CommonDBATasks.pglogical.md)。

如需 PostgreSQL 邏輯複寫的詳細資訊，請參閱 PostgreSQL 文件中的[邏輯複寫](https://www.postgresql.org/docs/current/logical-replication.html)和[邏輯解碼概念](https://www.postgresql.org/docs/current/logicaldecoding-explanation.html)。

**注意**  
PostgreSQL 16 新增支援從僅供讀取複本進行邏輯解碼。Aurora PostgreSQL 不支援此功能。