RDS PostgreSQL支援通過控制台或API查看和刪除Replication Slot,實現WAL日誌管理。
背景
Replication Slot是PostgreSQL資料庫中的一種機制,用於在流複製中儲存狀態。使用Replication Slot可以避免在流複製中出現資料丟失或重複復制的問題,提高資料複製的效率和可靠性。
當非活躍的Replication Slot較多而未及時清理時,會導致WAL日誌不斷堆積,佔用大量儲存空間,甚至可能寫滿磁碟導致執行個體鎖定,執行個體鎖定時無法寫入資料,從而影響業務。
RDS PostgreSQL支援通過控制台或API來刪除非活躍的Replication Slot,減少WAL日誌對磁碟空間的佔用。
注意事項
Replication Slot狀態為ACTIVE時,不允許刪除該條Slot。
Replication Slot狀態為INACTIVE時,如果不及時處理,可能會導致WAL日誌不斷堆積,當WAL日誌寫滿磁碟空間時,將會導致執行個體鎖定,無法寫入資料,從而影響業務。
影響
狀態為INACTIVE的Replication Slot被刪除後,將會造成以下影響:
執行個體先前因INACTIVE Slot堆積而無法清理的WAL日誌將被自動清理。
業務中無法再使用已刪除的Slot。
操作步驟
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列單擊日誌管理。
在WAL日誌管理頁簽即可看到所有Replication Slot相關資訊。
Replication Slot資訊中各參數與PostgreSQL的
pg_replication_slots
表中各欄位對應,對應關係及解釋如下:WAL日誌管理參數
pg_replication_slots表對應欄位
說明
Slot名稱
slot_name
Replication Slot的名稱。
Slot類型
slot_type
Replication Slot的類型,Slot類型包括:
physical
logical
外掛程式(plugin)
plugin
RDS PostgreSQL預設支援三種外掛程式:
test_decoding
pgoutput
wal2json
臨時Slot(temporary)
temporary
是否為臨時Slot。臨時Slot是一種特殊類型的Slot,它僅在當前資料庫會話期間存在,並在會話結束時自動刪除。
true:臨時Slot
false:永久Slot
資料庫名稱
database
Replication Slot所處的資料庫。
WAL堆積量
無對應欄位。
該參數取值由RDS核心計算所得。
Replication Slot造成的WAL日誌堆積量,單位為MB。
邏輯訂閱延遲
無對應欄位。
該參數取值由RDS核心計算所得。
當前Replication Slot對應訂閱端的邏輯訂閱的具體延遲,單位為秒(s)。
是否活躍
active
Replication Slot當前是否被使用。
INACTIVE:不活躍
ACTIVE:活躍
(可選)如果某個Replication Slot的是否活躍列為INACTIVE,則會造成WAL日誌不斷堆積,請及時處理,處理方法如下:
在業務中使用此Slot,使其狀態變為ACTIVE。
如果此Slot是冗餘的,請單擊操作列的刪除。
相關OpenAPI
查詢執行個體所有Replication Slot相關資訊:DescribeSlots
刪除執行個體Replication Slot:DeleteSlot