全部产品
Search
文档中心

ApsaraDB RDS:Dekode logis (wal2json)

更新时间:Nov 10, 2025

RDS PostgreSQL menyediakan plugin wal2json yang menghasilkan file log logis dalam format JSON untuk kemudahan pembacaan.

Prasyarat

  • Instans harus berupa RDS PostgreSQL 10 atau yang lebih baru.

    Untuk RDS PostgreSQL 16, versi minor harus 20240830 atau yang lebih baru.

    Catatan

    RDS PostgreSQL 17 saat ini tidak mendukung plugin ini.

  • Parameter instans wal_level harus disetel ke logis. Untuk informasi lebih lanjut, lihat Setel parameter instans.

Informasi latar belakang

wal2json adalah plugin dekode logis yang memungkinkan Anda mengakses tupel yang dihasilkan oleh operasi INSERT dan UPDATE serta mengurai konten dalam WAL.

Plugin wal2json menghasilkan objek JSON untuk setiap transaksi. Objek JSON mencakup semua tupel baru/lama, dan opsi tambahan dapat mencakup cap waktu transaksi, kualifikasi skema, tipe data, ID transaksi, dan properti lainnya. Untuk informasi lebih lanjut, lihat Dapatkan objek JSON melalui SQL.

Dapatkan objek JSON melalui SQL

  1. Masuk ke database RDS melalui DMS.

  2. Jalankan perintah berikut untuk membuat tabel dan menginisialisasi plugin.

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

    Plugin wal2json tidak perlu dibuat melalui CREATE EXTENSION. Sebagai gantinya, ia dimuat melalui slot replikasi logis untuk digunakan.

  3. Jalankan perintah berikut untuk mengubah data.

    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. Jalankan perintah berikut untuk mengeluarkan informasi log dalam format JSON.

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

    解析日志

    Catatan

    Untuk menghentikan keluaran dan melepaskan sumber daya, jalankan perintah berikut:

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