Postgresql
如何禁用或限制 Postgres 複製創建導致生成太多 WAL 文件?
在 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。