Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Decodificação lógica (wal2json)

Última atualização: Oct 09, 2026

O RDS for PostgreSQL oferece o plugin wal2json para gerar arquivos de log lógico no formato JSON.

Pré-requisitos

  • A instância executa o RDS for PostgreSQL 10 ou posterior.

    Para o RDS for PostgreSQL 16, a versão secundária deve ser 20240830 ou posterior.

    Nota

    Atualmente, o RDS for PostgreSQL 17 não oferece suporte a este plugin.

  • Defina o parâmetro da instância wal_level como logical. Para mais informações, consulte Set instance parameters.

Informações básicas

O wal2json é um plugin de decodificação lógica que acessa tuplas geradas por operações INSERT e UPDATE ao analisar o WAL.

Esse plugin gera um objeto JSON para cada transação com todas as tuplas novas e antigas. Você também pode incluir propriedades adicionais, como timestamp da transação, schema, tipos de dados e ID da transação. Para mais informações, consulte Get JSON objects using SQL.

Obtenha objetos JSON usando SQL

  1. Log on to an RDS for PostgreSQL database using DMS.

  2. Execute os comandos a seguir para criar tabelas e inicializar o 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');
    Nota

    Não é necessário criar o plugin wal2json com CREATE EXTENSION. O plugin é carregado para uso por meio de um slot de replicação lógica.

  3. Execute os comandos a seguir para modificar os dados.

    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. Execute o comando a seguir para gerar os dados de log no formato JSON.

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

    O comando retorna dados de log WAL no formato JSON. Esses dados detalham a operação de inserção na tabela de destino com campos como "kind": "insert", "schema": "public", "table": "table2_with_pk", "columnnames": ["a", "b", "c"] e "columntypes": ["integer", "character varying(30)", "timestamp without time zone"].

    Nota

    Para interromper a saída e liberar recursos, execute o comando a seguir:

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