管理 RDS Postgre 的邏輯槽同步SQL - Amazon Relational Database Service

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

管理 RDS Postgre 的邏輯槽同步SQL

從社群 PostgreSQL 17 開始,已透過 參數sync_replication_slots或相關函數 引入自動同步主要伺服器到待命伺服器邏輯複寫槽的新功能pg_sync_replication_slots(),該功能會在執行時手動同步槽。

這些功能從 RDS for PostgreSQL 17 開始提供。典型設定將具有主要執行個體及其僅供讀取複本,以及主要 的邏輯複寫訂閱者。

確保訂閱的建立,容錯移轉選項設定為 true:

CREATE SUBSCRIPTION subname CONNECTION 'host=...' PUBLICATION pubname WITH (failover = true);

這會在啟用容錯移轉的發佈者上建立邏輯插槽。

postgres=> SELECT slot_name, slot_type, failover FROM pg_catalog.pg_replication_slots; slot_name | slot_type | failover -----------+-----------+---------- subname | logical | t (1 row)

透過啟用槽同步,主要 上的所有容錯移轉邏輯複寫槽都會在實體待命上自動建立,並定期同步。確定已透過參數群組設定下列值:

  • rds.logical_replication 必須是 1才能啟用邏輯複寫

  • hot_standby_feedback 必須在待命1狀態

  • rds.logical_slot_sync_dbname 待命上的 必須設定為有效的資料庫名稱

    參數的預設值為 postgres。如果邏輯發佈執行個體具有postgres資料庫,則不需要變更預設參數。

  • synchronized_standby_slots 主要 上的 必須設定為待命的實體複寫槽,以同步方式呈現

  • sync_replication_slots 必須是 1才能啟用自動同步

使用啟用容錯移轉的訂閱槽和上述參數值,當待命提升時,訂閱者可以變更對此新提升執行個體的訂閱,並無縫地繼續邏輯複寫。