Postgresql

如何禁用或限制 Postgres 複製創建導致生成太多 WAL 文件?

  • October 5, 2019

在 AWS RDS PostgreSQL 10.7 上,我為一個特定的表打開了邏輯複製。

在出版商上:

CREATE PUBLICATION mypublication FOR TABLE <mytable>;

在訂閱者上:

CREATE SUBSCRIPTION mysub
        CONNECTION 'host=... port=... user=foo dbname=foodb'
       PUBLICATION mypublication;

然而,這導致了一些有趣的錯誤,其中生成的 WAL 文件佔用了我複制的表大小的 100 倍以上,我不得不將其關閉。我開始按照 AWS 指導進行故障排除:https ://aws.amazon.com/premiumsupport/knowledge-center/diskfull-error-rds-postgresql/

在 AWS RDS 上,這由TransactionLogsDiskUsage指標表示。

它似乎幾乎是在嘗試為數據庫的任何更改生成 WAL 文件,而不僅僅是該表。OldestReplicationSlotLag當寫入任何表而不是指定表時,這通過增加來表示。

我嘗試查看 RDS 上的 postgres 錯誤日誌,但仍然無法真正理解原因。有沒有辦法限制邏輯複製創建的 WAL 文件?

數據庫為整個數據庫實例生成 WAL。邏輯發送者的工作是對它們進行分類以限制和建構發送的內容。我認為沒有辦法讓邏輯發件人繼續工作。你應該看看它為什麼落後,而不是為什麼有很多 WAL。

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