すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:論理デコーディング (wal2json)

最終更新日:Nov 09, 2025

RDS PostgreSQL は、論理ログファイルを JSON フォーマットで出力して簡単に表示できる wal2json プラグインを提供します。

前提条件

  • インスタンスは RDS PostgreSQL 10 以降です。

    RDS PostgreSQL 16 の場合、マイナーバージョンは 20240830 以降である必要があります。

    説明

    RDS PostgreSQL 17 は現在このプラグインをサポートしていません。

  • インスタンスパラメーター 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');
    説明

    wal2json プラグインは CREATE EXTENSION を介して作成する必要はありません。代わりに、論理レプリケーションスロットを介してロードされて使用されます。

  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');