以 Aurora 進行 PostgreSQL 邏輯複寫的概觀 - Amazon Aurora

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

以 Aurora 進行 PostgreSQL 邏輯複寫的概觀

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

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

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

所有目前可用的 Aurora PostgreSQL 版本都支援邏輯複寫。如需詳細資訊,請參閱《Aurora PostgreSQL 版本資訊》中的 Amazon Aurora PostgreSQL 更新

從下列版本 Babelfish for Aurora PostgreSQL 支援邏輯複寫:

  • 15.7 及更新版本

  • 16.3 及更新版本

注意

除了在 PostgreSQL 10 中引進的原生 PostgreSQL 邏輯複寫功能之外,Aurora PostgreSQL 也支援 pglogical 延伸模組。如需詳細資訊,請參閱使用 pglogical 跨執行個體同步資料

如需 PostgreSQL 邏輯複寫的詳細資訊,請參閱 PostgreSQL 文件中的邏輯複寫邏輯解碼概念

注意

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