全部產品
Search
文件中心

PolarDB:訂閱管理

更新時間:Apr 09, 2025

為了有效管理WAL日誌,PolarDB PostgreSQL版支援通過控制台查看邏輯複製槽(Logical Replication Slots)。

背景

當非活躍的邏輯複製槽較多而未及時清理時,將導致WAL日誌不斷堆積,佔用大量儲存空間,甚至可能寫滿磁碟導致叢集鎖定,叢集鎖定時無法寫入資料,從而影響業務。

PolarDB PostgreSQL版支援通過控制台查看邏輯複製槽(Logical Replication Slots),便於查看邏輯複製槽的活躍狀態,然後手動刪除非活躍的邏輯複製槽來清理WAL日誌。

前提條件

對於集中式PolarDB PostgreSQL版叢集(產品版本企業版標準版),您可以通過控制台設定wal_level參數logical,修改該參數後叢集將會重啟,請在修改參數前做好業務安排,謹慎操作。

說明

PolarDB PostgreSQL分布式版叢集的wal_level參數預設為logical,無需關注。

查看邏輯複製槽

說明
  • 如叢集中不存在邏輯複製槽,請先建立相關資源。

  • 如您需要通過控制台查看邏輯複製槽,請聯絡我們處理。

  1. 登入PolarDB控制台,選擇叢集所在地區,在叢集列表中單擊目的地組群ID進入詳情頁。

  2. 在左側導覽列選擇配置與管理 > 訂閱管理,在WAL日誌管理頁簽可查看邏輯複製槽(Logical Replication Slots)資訊。

    WAL日誌管理參數

    說明

    Slot名稱

    邏輯複製槽名稱。

    Slot類型

    邏輯複製槽的類型,僅支援logical

    使用外掛程式(plugin)

    PolarDB PostgreSQL版預設支援以下外掛程式:

    • decoderbufs

    • decoder_raw

    • wal2json

    • pgoutput

    臨時Slot(temporary)

    是否為臨時Slot。臨時Slot是一種特殊類型的Slot,它僅在當前資料庫會話期間存在,並在會話結束時自動刪除。

    • true:臨時Slot。

    • false:永久Slot。

    資料庫名稱

    邏輯複製槽所處的資料庫。

    WAL堆積量

    邏輯複製槽造成的WAL日誌堆積量,單位為MB。

    邏輯訂閱延遲

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

    是否活躍

    邏輯複製槽當前是否被使用。

    • INACTIVE:不活躍。

    • ACTIVE:活躍。

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

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

    • 確認此Slot冗餘時,可使用SELECT pg_drop_replication_slot('slot_name');刪除。

(可選)建立邏輯複製槽

  1. 在發布端資料庫中建立發布。

    CREATE PUBLICATION <發布名稱> FOR TABLE <表名>;

    樣本:

    CREATE PUBLICATION pub1 FOR TABLE public.t1;
    說明

    您可通過SELECT * FROM pg_publication;查看當前叢集發布資訊。

  2. 在訂閱端建立新訂閱。此處發布端和訂閱端是同叢集不同資料庫。

    1. 使用高許可權帳號在發布端資料庫中建立邏輯複製槽。

      SELECT pg_create_logical_replication_slot('<slot_name>', 'pgoutput');
    2. 在訂閱端資料庫中,建立與待訂閱的發布端資料庫表具有相同結構和名稱的表。

    3. 在訂閱端資料庫中建立邏輯訂閱。

      CREATE SUBSCRIPTION my_subscription
      CONNECTION 'channel_name=localhost dbname=<發布端資料庫名> user=<高許可權帳號> password=<帳號密碼>'
      PUBLICATION pub1 WITH (create_slot=false,slot_name=<slot_name>);
      重要

      發布端資料庫和訂閱端資料庫位於相同的叢集時,必須使用WITH添加訂閱參數create_slot=false