Replication

Postgres 9.4 wal_level=logical 增加磁碟空間

  • June 8, 2020

我正在嘗試使用 AWS Database Migration Service 將數據從 RDS Postgres 實例遷移到 Aurora MySQL 實例。

數據庫遷移服務需要在源 Postgres DB 中將wal_level設置為邏輯。但是完成後,Postgres 開始消耗大量磁碟空間,以至於實例變得不可用。

WAL 日誌保留多長時間?是否可以啟用其他設置以限制磁碟空間使用?

這是一個 AWS DMS 問題。

DMS 最近添加了一個功能 WAL 心跳

$$ 1 $$(執行虛擬查詢)用於從 PostgreSQL 源進行複制,因此空閒的邏輯複製槽不會保留舊的 WAL 日誌,這可能會導致源上的儲存已滿。此心跳保持 restart_lsn 移動並防止儲存已滿情況。

  1. 登錄 DMS 控制台。
  2. 停止與源端點相關的所有任務
  3. 點擊左側選擇窗格中的“端點”。
  4. 根據任務選擇您正在使用的源端點。
  5. 點擊螢幕頂部的“修改”。
  6. 展開“高級”。
  7. 在額外的連接屬性下,請添加:

heartbeatenable=Y;heartbeatFrequency=1

HeartbeatEnable – 設置為 true(預設為 false) HeartbeatSchema – 心跳工件的架構(預設為公共) HeartbeatFrequency – 心跳頻率(以分鐘為單位)(預設為 5,最小值為 1)

  1. 點擊“修改”。您將被自動重定向到端點螢幕。
  2. 再次選擇端點並點擊“測試連接”。
  3. 它應該自動開始測試。等待它顯示“成功”。

單獨停止任務不會清除複製槽,所以當任務處於停止狀態時儲存使用量仍然會增加,您需要刪除任務才能清除槽。

要清除複製槽,請使用以下命令 -

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

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