Postgresql

備用伺服器上的 pg_wal 目錄不會自動清除

  • November 12, 2018

我有一個經典的主從 PG(版本 10)架構。儘管參數wal_keep_segments設置為 200,但備用伺服器上的 pg_wal 目錄並沒有被清除並不斷填充。您有什麼想法嗎?有關資訊,我在主伺服器上沒有這個問題。

主要和備用都具有相同的配置。

在主上:

從 pg_stat_replication 中選擇 * ;
-[ 記錄 1 ]----+---------------------------------------- ------
程序號 | 5399
使用sysid | 16387
使用者名 | 複製
應用程序名稱 | 接收器
客戶地址 | XXXXXXXXXXXX
客戶端主機名 | XXXXXXXXXXXX
客戶端埠 | 56780
後端開始 | 2018-11-05 10:18:50.280663+00
後端_xmin |
狀態 | 流媒體
發送_lsn | 71/E3000000
write_lsn | 71/E3000000
flush_lsn | 71/E3000000
重播_lsn | 71/E3000000
寫滯後 |
沖洗滯後 |
重播滯後 |
同步優先級 | 0
同步狀態 | 非同步
-[ 記錄 2 ]----+---------------------------------------- ------
程序號 | 10175
使用sysid | 16389
使用者名 | barman_replication
應用程序名稱 | barman_receive_wal
客戶地址 | XXXXXXXXXXXX
客戶端主機名 | XXXXXXXXXXXX
客戶端埠 | 42572
後端開始 | 2018-11-12 03:09:03.715933+00
後端_xmin |
狀態 | 流媒體
發送_lsn | 71/E3000000
write_lsn | 71/E3000000
flush_lsn | 71/E3000000
重播_lsn |
寫滯後 | 00:00:02.516016
沖洗滯後 | 00:00:02.516016
重播滯後 | 06:28:11.482478
同步優先級 | 0
同步狀態 | 非同步

待機時:

從 pg_replication_slots 中選擇 * ;
-[ 記錄 1 ]--------+------------
插槽名稱 | 酒保
外掛 |
插槽類型 | 身體的
數據線 |
數據庫 |
臨時| F
活躍 | F
active_pid |
最小 |
目錄_xmin |
重啟_lsn | 16/9F000000
確認_flush_lsn |

複製槽不應該存在於備用伺服器上,只能存在於主伺服器上。除非您使用級聯複製,否則您似乎沒有使用。

如果您在備用伺服器上有一個複制槽,但沒有人連接到它來讀取和推進它,這就解釋了保留。

請參閱https://www.postgresql.org/docs/9.6/continuous-archiving.html#BACKUP-BASE-BACKUP

從備份中省略集群的 pg_replslot/ 目錄中的文件通常是一個好主意,這樣主伺服器上存在的複制槽就不會成為備份的一部分。否則,後續使用備份創建備機可能會導致 WAL 文件無限期保留在備機上

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