Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Décodage logique sur un réplica en lecture
RDS pour PostgreSQL prend en charge la réplication logique à partir d’instances de secours avec PostgreSQL 16.1. Cela vous permet de créer un décodage logique à partir d’une instance de secours en lecture seule qui réduit la charge sur l’instance de base de données principale. Vous pouvez améliorer la disponibilité de vos applications qui doivent synchroniser les données entre plusieurs systèmes. Cette fonctionnalité améliore les performances de votre entrepôt de données et de votre analytique des données.
De plus, les emplacements de réplication d’une instance de secours donnée permettent de continuer à promouvoir cette instance de secours en instance principale. Cela signifie qu’en cas de basculement d’une instance de base de données principale ou de promotion d’une instance de secours en tant que nouvelle instance principale, les emplacements de réplication seront conservés et les anciens abonnés de secours ne seront pas affectés.
Pour créer un décodage logique sur un réplica en lecture
-
Activer la réplication logique : pour créer un décodage logique sur une instance de secours, vous devez activer la réplication logique sur votre instance de base de données source et son réplica physique. Pour de plus amples informations, veuillez consulter Configuration de réplicas en lecture avec PostgreSQL.
-
Pour activer la réplication logique pour une instance de base de données RDS pour PostgreSQL nouvellement créée : créez un nouveau groupe de paramètres personnalisés de base de données et définissez le paramètre statique
rds.logical_replicationsur1. Associez ensuite ce groupe de paramètres de base de données à l’instance de base de données source et à sa réplica en lecture physique. Pour de plus amples informations, veuillez consulter Association d’un groupe de paramètres de base de données à une instance de base de données dans Amazon RDS. -
Pour activer la réplication logique pour une instance de base de données RDS pour PostgreSQL existante : modifiez le groupe de paramètres personnalisés de base de données de l’instance de base de données source et son réplica physique en lecture pour définir le paramètre statique
rds.logical_replicationsur1. Pour de plus amples informations, veuillez consulter Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.
Note
Vous pouvez redémarrer les instances de base de données pour appliquer ces modifications de paramètre.
Vous pouvez utiliser la requête suivante pour vérifier les valeurs pour
wal_leveletrds.logical_replicationsur l’instance de base de données source et son réplica en lecture physique.Postgres=>SELECT name,setting FROM pg_settings WHERE name IN ('wal_level','rds.logical_replication');name | setting -------------------------+--------- rds.logical_replication | on wal_level | logical (2 rows) -
-
Créez une table dans la base de données source : connectez-vous à la base de données dans votre instance de base de données source. Pour de plus amples informations, veuillez consulter Connexion à une instance de base de données exécutant le moteur de base de données PostgreSQL.
Utilisez les requêtes suivantes pour créer une table dans votre base de données source et pour insérer des valeurs :
Postgres=>CREATE TABLE LR_test (a int PRIMARY KEY);CREATE TABLEPostgres=>INSERT INTO LR_test VALUES (generate_series(1,10000));INSERT 0 10000 -
Créer une publication pour la table source : utilisez la requête suivante pour créer une publication pour la table sur l’instance de base de données source.
Postgres=>CREATE PUBLICATION testpub FOR TABLE LR_test;CREATE PUBLICATIONUtilisez une requête SELECT pour vérifier les détails de la publication créée à la fois sur l’instance de base de données source et sur l’instance physique de réplica en lecture.
Postgres=>SELECT * from pg_publication;oid | pubname | pubowner | puballtables | pubinsert | pubupdate | pubdelete | pubtruncate | pubviaroot -------+---------+----------+--------------+-----------+-----------+-----------+-------------+------------ 16429 | testpub | 16413 | f | t | t | t | t | f (1 row) -
Créer un abonnement à partir d’une instance de réplica logique : créez une autre instance de base de données RDS pour PostgreSQL en tant qu’instance de réplica logique. Assurez-vous que le VPC est correctement configuré pour que cette instance de réplica logique puisse accéder à l’instance de réplica physique en lecture. Pour de plus amples informations, veuillez consulter Amazon VPC et Amazon RDS. Si votre instance de base de données source est inactive, des problèmes de connectivité peuvent survenir et l’instance principale n’envoie pas les données à l’instance de secours.
Postgres=>CREATE SUBSCRIPTION testsub CONNECTION 'host=Physical replica host nameport=portdbname=source_db_nameuser=userpassword=password' PUBLICATIONtestpub;NOTICE: created replication slot "testsub" on publisher CREATE SUBSCRIPTIONPostgres=>CREATE TABLE LR_test (a int PRIMARY KEY);CREATE TABLEUtilisez une requête SELECT pour vérifier les détails de l’abonnement sur l’instance de réplica logique.
Postgres=>SELECT oid,subname,subenabled,subslotname,subpublications FROM pg_subscription;oid | subname | subenabled | subslotname | subpublications -------+---------+------------+-------------+----------------- 16429 | testsub | t | testsub | {testpub} (1 row) postgres=> select count(*) from LR_test; count ------- 10000 (1 row) -
Inspectez l’état de l’emplacement de réplication logique : vous ne pouvez voir que l’emplacement de réplication physique sur votre instance de base de données source.
Postgres=>select slot_name, slot_type, confirmed_flush_lsn from pg_replication_slots;slot_name | slot_type | confirmed_flush_lsn ---------------------------------------------+-----------+--------------------- rds_us_west_2_db_dhqfsmo5wbbjqrn3m6b6ivdhu4 | physical | (1 row)Toutefois, sur votre instance de réplica en lecture, vous pouvez voir l’emplacement de réplication logique et la valeur
confirmed_flush_lsnchanger à mesure que l’application consomme activement des modifications logiques.Postgres=>select slot_name, slot_type, confirmed_flush_lsn from pg_replication_slots;slot_name | slot_type | confirmed_flush_lsn -----------+-----------+--------------------- testsub | logical | 0/500002F0 (1 row)Postgres=>select slot_name, slot_type, confirmed_flush_lsn from pg_replication_slots;slot_name | slot_type | confirmed_flush_lsn -----------+-----------+--------------------- testsub | logical | 0/5413F5C0 (1 row)