PolarDB PostgreSQL版的邏輯複製槽容錯移轉(Logical Replication Slot Failover)功能可以將所有的邏輯複製槽從主節點同步到Standby節點,從而實現邏輯複製槽的容錯移轉。
前提條件
支援的PolarDB PostgreSQL版的版本如下:
PostgreSQL 11(核心小版本1.1.27及以上)
您可以通過SHOW polar_version
查看核心小版本。如未滿足版本要求請升級版本。
背景資訊
在主節點建立的Replication Slot,不會通過流複製協議同步到Standby節點。當叢集發生主備切換,會造成Replication Slot丟失,進而導致邏輯訂閱中斷。PolarDB PostgreSQL版邏輯複製槽容錯移轉功能可以將所有的邏輯複製槽從主節點同步到Standby節點,實現邏輯複製槽的容錯移轉。
PolarDB PostgreSQL版當前只支援邏輯複製槽(Logical Replication Slot)的容錯移轉,物理複製槽(Physical Replication Slot)暫不支援。
邏輯複製槽(Logical Replication Slot)的更多資訊,請參見官方文檔。
開啟或關閉邏輯複製槽容錯移轉功能
您可通過控制台設定叢集參數polar_failover_slot_mode來開啟或關閉邏輯複製槽容錯移轉功能。取值如下:
sync:開啟邏輯複製槽容錯移轉功能,並設定為同步模式。
說明同步模式可以保證叢集HA後,邏輯複製不丟資料。
同步模式通過保證邏輯複製用戶端不會超前於Standby節點,來保證HA後邏輯複製不丟資料。如果發生Standby節點長時間中斷連線後重新串連,或者重搭,則會存在一定的時間視窗,在這段時間內,主備之間延遲比較大,且邏輯複製用戶端可能會超前於Standby節點。如果此時發生HA,無法保證邏輯複製不丟資料。此時丟失的資料,除了HA本身造成的資料丟失外,還可能會丟失HA後新主庫上新增的部分資料。
為避免上述資料丟失的情況,可聯絡我們設定polar_priority_replication_force_wait參數為on。Standby節點斷開期間,主節點會一直等待節點重新串連或者重搭完成,在此之前不會發送資料給邏輯複製用戶端。這樣會降低邏輯複製的可用性,請謹慎操作。
async(預設):開啟邏輯複製槽容錯移轉功能,並設定為非同步模式。
說明非同步模式,可以保證叢集HA後,邏輯複製不丟資料。但是有可能會給邏輯複製用戶端發送重複的資料。如果叢集HA後邏輯複製用戶端超前於新主節點,則邏輯複製用戶端上還可能保留有叢集HA時丟失的資料(如果HA時有資料丟失)。
除非您可以接受非同步模式下,HA後可能帶來的資料不一致問題,否則推薦使用同步模式。
off:關閉邏輯複製槽容錯移轉功能。