RDS PostgreSQL fournit le plugin wal2json, qui génère des journaux logiques au format JSON pour une consultation simplifiée.
Prérequis
-
L'instance doit exécuter RDS PostgreSQL 10 ou une version ultérieure.
Pour RDS PostgreSQL 16, la version mineure doit être 20240830 ou une version ultérieure.
RemarqueRDS PostgreSQL 17 ne prend pas actuellement en charge ce plugin.
Définissez le paramètre d'instance
wal_levelsurlogical. Pour plus d'informations, consultez la rubrique Définir les paramètres d'instance.
Contexte
wal2json est un plugin de décodage logique qui permet d'accéder aux tuples générés par les opérations INSERT et UPDATE, ainsi que d'analyser le contenu du WAL (Write-Ahead Log).
Le plugin wal2json génère un objet JSON pour chaque transaction. Cet objet contient tous les tuples nouveaux et anciens ; il peut également inclure, selon les options choisies, l'horodatage de la transaction, les qualifications de schéma, les types de données, les ID de transaction et d'autres propriétés. Pour plus d'informations, consultez la section Obtenir des objets JSON via SQL.
Obtenir des objets JSON via SQL
-
Exécutez les commandes suivantes pour créer les tables et initialiser le 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');RemarqueIl n'est pas nécessaire de créer le plugin wal2json via
CREATE EXTENSION. Le système le charge automatiquement lors de l'utilisation d'un slot de réplication logique. -
Exécutez les commandes suivantes pour modifier les données.
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; -
Exécutez la commande suivante pour afficher les informations du journal au format JSON.
SELECT data FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'pretty-print', '1');
RemarquePour arrêter la sortie et libérer les ressources, exécutez la commande suivante :
SELECT 'stop' FROM pg_drop_replication_slot('test_slot');