Postgresql

Patroni:如何處理與主伺服器長時間斷開連接的副本?

  • April 23, 2021

假設我在 Postgres 10.4 和 Patroni 1.4.4 的 3 節點集群中使用具有以下配置的非同步流複製

   bootstrap:
     dcs:
       ttl: 30
       loop_wait: 10
       retry_timeout: 10
       maximum_lag_on_failover: 1048576
       postgresql:
         use_pg_rewind: true
         use_slots: true
         parameters:
           max_wal_senders: 10
           wal_keep_segments: 100
           max_replication_slots: 10

假設其中一個副本節點突然長時間失去與主節點的連接。

  1. 在這種情況下,我認為主伺服器上的 WAL 的大小將繼續增長,因為它沒有被斷開連接的副本的複制槽消耗。那麼,如果它在 x 時間段內與主伺服器斷開連接,是否有任何設置將刪除副本並刪除其複制槽?
  2. 處理這種情況的推薦方法是什麼?

我假設您正在監控您的數據庫集群執行狀況,因此很快就會出現失去的副本。此外,必須監視磁碟空間(用完磁碟空間可能會使您陷入不太容易解決的情況),因此也可以解決此問題(通常遲早)。

一旦你發現你有一個回退的副本,你必須調查它為什麼這樣做,並修復它 - 或者完全從 Patroni 中刪除主機。如果在磁碟空間壓力下,移除複製槽以釋放 WAL 空間。在雲設置中,通常只需終止主機即可通過啟動新主機來解決所有這些問題。在任何情況下,一旦您擁有一個正常執行的主機,您可能需要重新初始化 Patroni 節點。

另一方面,恐怕目前沒有機制來隔離似乎不會回來的副本(無論是從刪除複製槽到比這更複雜的任何實際實現)。

引用自:https://dba.stackexchange.com/questions/209281