Replication
Postgres 9.4 wal_level=logical 增加磁碟空間
我正在嘗試使用 AWS Database Migration Service 將數據從 RDS Postgres 實例遷移到 Aurora MySQL 實例。
數據庫遷移服務需要在源 Postgres DB 中將wal_level設置為邏輯。但是完成後,Postgres 開始消耗大量磁碟空間,以至於實例變得不可用。
WAL 日誌保留多長時間?是否可以啟用其他設置以限制磁碟空間使用?
這是一個 AWS DMS 問題。
DMS 最近添加了一個功能 WAL 心跳
$$ 1 $$(執行虛擬查詢)用於從 PostgreSQL 源進行複制,因此空閒的邏輯複製槽不會保留舊的 WAL 日誌,這可能會導致源上的儲存已滿。此心跳保持 restart_lsn 移動並防止儲存已滿情況。
- 登錄 DMS 控制台。
- 停止與源端點相關的所有任務
- 點擊左側選擇窗格中的“端點”。
- 根據任務選擇您正在使用的源端點。
- 點擊螢幕頂部的“修改”。
- 展開“高級”。
- 在額外的連接屬性下,請添加:
heartbeatenable=Y;heartbeatFrequency=1
HeartbeatEnable – 設置為 true(預設為 false) HeartbeatSchema – 心跳工件的架構(預設為公共) HeartbeatFrequency – 心跳頻率(以分鐘為單位)(預設為 5,最小值為 1)
- 點擊“修改”。您將被自動重定向到端點螢幕。
- 再次選擇端點並點擊“測試連接”。
- 它應該自動開始測試。等待它顯示“成功”。
單獨停止任務不會清除複製槽,所以當任務處於停止狀態時儲存使用量仍然會增加,您需要刪除任務才能清除槽。
要清除複製槽,請使用以下命令 -
SELECT * FROM pg_replication_slots ; --finds all replication slots select pg_drop_replication_slot('NameOfSlot'); -- you will get the name of the slot from the first command
參考:
$$ 1 $$PostgreSQL 源 WAL 心跳 https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReleaseNotes.html#CHAP_ReleaseNotes.DMS230