Postgresql
備用伺服器上的 pg_wal 目錄不會自動清除
我有一個經典的主從 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 文件無限期保留在備機上