

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

# 管理 RDS for PostgreSQL 的邏輯槽同步
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical.slot.synchronization"></a>

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

從 RDS for PostgreSQL 17 開始提供這些功能。典型的設定將具有主要執行個體及其[僅供讀取複本](USER_PostgreSQL.Replication.ReadReplicas.md)，以及主要執行個體的邏輯複寫訂閱者。

確保已建立訂閱，並將容錯移轉選項設定為 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)
```

透過啟用槽同步，主要執行個體上的所有容錯移轉邏輯複寫槽都會在實體待命上自動建立，並定期同步。確定已透過[參數群組](USER_WorkingWithParamGroups.Associating.md)設定下列值：
+ `rds.logical_replication` 必須是 `1` 以啟用邏輯複寫
+ `hot_standby_feedback` 必須 `1` 以處於待命狀態
+ 待命上的 `rds.logical_slot_sync_dbname` 必須設定為有效的資料庫名稱

  參數的預設值為 `postgres`。如果邏輯發佈執行個體具有 `postgres` 資料庫，則不需要變更預設參數。
+ 主要執行個體上的 `synchronized_standby_slots` 必須設定為待命的實體複寫槽，以處於同步狀態
+ `sync_replication_slots` 必須是 `1` 以啟用自動同步

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