Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 26, 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 suporta este plugin.

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

Informações de contexto

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 Obter objetos JSON usando SQL.

Obter objetos JSON usando SQL

  1. Faça login em um banco de dados RDS for PostgreSQL pelo 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, incluindo 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 seguinte comando:

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