全部產品
Search
文件中心

ApsaraDB RDS:邏輯解碼(wal2json)

更新時間:Jun 19, 2024

RDS PostgreSQL提供wal2json外掛程式,可以將邏輯記錄檔輸出為JSON格式供您查看。

前提條件

  • 執行個體為RDS PostgreSQL 10或以上版本。

    說明

    RDS PostgreSQL 16暫不支援該外掛程式。

  • 已設定執行個體參數wal_level = logical。詳情請參見設定執行個體參數

背景資訊

wal2json是邏輯解碼外掛程式,使用該外掛程式可以訪問由INSERT和UPDATE產生的元組,解析WAL中的內容。

wal2json外掛程式會在每個事務中產生一個JSON對象。JSON對象中提供了所有新/舊元組,額外選項還可以包括事務時間戳記、限定架構、資料類型、事務ID等屬性。詳情請參見通過SQL擷取JSON對象

通過SQL擷取JSON對象

  1. 通過DMS登入RDS資料庫

  2. 執行如下命令建表及初始化外掛程式。

    CREATE TABLE table2_with_pk (a SERIAL, b VARCHAR(30), c TIMESTAMP NOT NULL, PRIMARY KEY(a, c));
    CREATE TABLE table2_without_pk (a SERIAL, b NUMERIC(5,2), c TEXT);
    
    SELECT 'init' FROM pg_create_logical_replication_slot('test_slot', 'wal2json');
  3. 執行如下命令變更資料。

    BEGIN;
    INSERT INTO table2_with_pk (b, c) VALUES('Backup and Restore', now());
    INSERT INTO table2_with_pk (b, c) VALUES('Tuning', now());
    INSERT INTO table2_with_pk (b, c) VALUES('Replication', now());
    DELETE FROM table2_with_pk WHERE a < 3;
    INSERT INTO table2_without_pk (b, c) VALUES(2.34, 'Tapir');
    UPDATE table2_without_pk SET c = 'Anta' WHERE c = 'Tapir';
    COMMIT;
  4. 執行如下命令輸出JSON格式的日誌資訊。

    SELECT data FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'pretty-print', '1');

    解析日誌

    說明

    如果需要停止輸出並釋放資源,請執行如下命令:

    SELECT 'stop' FROM pg_drop_replication_slot('test_slot');