全部產品
Search
文件中心

ApsaraDB RDS:WAL日誌管理

更新時間:Aug 17, 2024

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。

操作步驟

  1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。

  2. 在左側導覽列單擊日誌管理

  3. 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核心計算所得。

    計算方法

    SELECT pg_size_pretty(
      pg_wal_lsn_diff(
        pg_current_wal_insert_lsn(), 
        restart_lsn)
    	) AS wal_delay 
    FROM pg_replication_slots;

    Replication Slot造成的WAL日誌堆積量,單位為MB。

    邏輯訂閱延遲

    無對應欄位。

    該參數取值由RDS核心計算所得。

    計算方法

    SELECT *, CAST(extract(epoch FROM replay_lag) AS BIGINT) 
    AS sub_replay_lag 
    FROM pg_stat_replication;

    當前Replication Slot對應訂閱端的邏輯訂閱的具體延遲,單位為秒(s)。

    是否活躍

    active

    Replication Slot當前是否被使用。

    • INACTIVE:不活躍

    • ACTIVE:活躍

  4. (可選)如果某個Replication Slot的是否活躍列為INACTIVE,則會造成WAL日誌不斷堆積,請及時處理,處理方法如下:

    • 在業務中使用此Slot,使其狀態變為ACTIVE

    • 如果此Slot是冗餘的,請單擊操作列的刪除

說明

瞭解更多Slot的相關用法及如何建立Slot,請參見:

相關OpenAPI

  • 查詢執行個體所有Replication Slot相關資訊:DescribeSlots

  • 刪除執行個體Replication Slot:DeleteSlot