Comment utiliser la réplication logique pour mettre à niveau mon cluster de bases de données Aurora compatible avec PostgreSQL ?
Je souhaite utiliser la réplication logique pour mettre à niveau mon cluster de bases de données (DB) Amazon Aurora édition compatible avec PostgreSQL.
Brève description
Pour utiliser la réplication logique afin de mettre à niveau les versions des clusters de bases de données Aurora compatibles avec PostgreSQL, configurez la réplication entre le cluster source d'origine et le nouveau cluster cible. Ensuite, migrez progressivement les modifications apportées aux données et basculez les applications vers le nouveau cluster.
Résolution
Préparer le cluster source
Procédez comme suit :
-
Définissez le paramètre rds.logical_replication sur 1 dans votre groupe de paramètres de cluster de bases de données personnalisé.
-
Exécutez la requête suivante pour vérifier que wal_level est logique et que rds.logical_replication est activé :
SELECT name,setting FROM pg_settings WHERE name IN ('wal_level','rds.logical_replication');Exemple de sortie :
name | setting ------------------------+--------- rds.logical_replication | on wal_level | logical (2 rows) -
Exécutez la commande suivante pour créer une publication dans votre base de données :
CREATE PUBLICATION my_publication FOR ALL TABLES;Remarque : remplacez my_publication par le nom de la publication.
-
Exécutez la requête suivante pour récupérer les informations de la publication :
SELECT * FROM pg_publication;Exemple de sortie :
oid | pubname | pubowner | puballtables | pubinsert | pubupdate | pubdelete | pubtruncate | pubviaroot -------+----------------+----------+--------------+-----------+-----------+-----------+-------------+------------ 20493 | my_publication | 16400 | t | t | t | t | t | f (1 row) -
Exécutez la commande suivante pour créer un emplacement de réplication dans la base de données :
SELECT pg_create_logical_replication_slot('my_replication_slot', 'pgoutput');Exemple de sortie pour pg_create_logical_replication_slot :
pg_create_logical_replication_slot ------------------------------------ (my_replication_slot,0/6EC7260) (1 row)Remarque : remplacez my_replication_slot par le nom de l’emplacement de réplication.
-
Exécutez la commande suivante pour obtenir la liste des emplacements de réplication qui se trouvent actuellement dans le cluster de bases de données et leur statut :
SELECT * FROM pg_replication_slots;Exemple de sortie pour pg_replication_slots :
slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | confirmed_flush_lsn | wal_status | safe_wal_size | two_phase ---------------------+----------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+---------------------+------------+---------------+----------- my_replication_slot | pgoutput | logical | 16401 | test | f | f | | | 308479 | 0/6EC7208 | 0/6EC7260 | reserved | | f (1 row)
Cloner le cluster source
Utilisez la console Amazon Relational Database Service (Amazon RDS) ou l'interface de la ligne de commande AWS (AWS CLI) pour créer un clone du cluster de bases de données source Aurora compatible avec PostgreSQL.
Préparer le clone à une mise à niveau
Pour plus d'informations, consultez la section Pour préparer le clone à une mise à niveau de la rubrique Mise à niveau d'Aurora PostgreSQL vers une nouvelle version majeure.
Mettre à niveau le cluster vers une nouvelle version
Pour plus d'informations, consultez la section Pour mettre à niveau le cluster vers une nouvelle version majeure de la rubrique Mise à niveau d'Aurora PostgreSQL vers une nouvelle version majeure.
Préparer le clone pour la réplication
Procédez comme suit :
-
Lorsque le clone est disponible après la mise à niveau, utilisez psql pour vous connecter au cluster, puis exécutez la commande suivante pour créer l'abonnement :
CREATE SUBSCRIPTION my_subscription CONNECTION 'postgres://admin_user_name:admin_user_password@source_instance_URL/database' PUBLICATION my_publication WITH (copy_data = false, create_slot = false, enabled = false, connect = true, slot_name = 'my_replication_slot');Remarque : remplacez admin_user_name par le nom d'utilisateur du cluster source et admin_user_password par le mot de passe du cluster source. Remplacez également source_instance_URL par le point de terminaison du cluster source et database par le nom de la base de données.
-
Exécutez la requête suivante pour récupérer l'origine de réplication que vous avez créée :
SELECT * FROM pg_replication_origin;Exemple de sortie pour pg_replication_origin :
roident | roname ---------+---------- 1 | pg_32783 (1 row) -
Exécutez la requête suivante pour récupérer les informations sur l'abonnement à la réplication logique :
SELECT * FROM pg_subscription;Exemple de sortie pour pg_subscription :
oid | subdbid | subskiplsn | subname | subowner | subenabled | subbinary | substream | subtwophasestate | subdisableonerr | subpasswordrequired | subrunasowner | subconninfo | subslotname | subsynccommit | subpublications | suborigin -------+---------+------------+-----------------+----------+------------+-----------+-----------+------------------+-----------------+---------------------+---------------+------------------------------------------------------------------------------------------------+---------------------+---------------+------------------+----------- 32783 | 16401 | 0/0 | my_subscription | 16400 | f | f | f | d | f | t | f | postgres://admin_user_name:admin_user_password@source_instance_URL/database | my_replication_slot | off | {my_publication} | any (1 row) -
Exécutez la commande suivante pour spécifier le point de départ de la séquence de journalisation pour la réplication :
SELECT pg_replication_origin_advance('roname', 'log_sequence_number');Remarque : remplacez roname par l'identifiant renvoyé par la vue pg_replication_origin. Remplacez log_sequence_number par le numéro de séquence de journal.
Exemple de sortie :pg_replication_origin_advance ------------------------------ (1 row) -
Exécutez la commande suivante pour activer la réplication logique :
ALTER SUBSCRIPTION my_subscription ENABLE;Remarque : remplacez my_subscription par le nom de l’abonnement.
Exemple de sortie :ALTER SUBSCRIPTION -
Exécutez la commande suivante pour vérifier que la réplication fonctionne :
SELECT now() AS CURRENT_TIME, slot_name, active, active_pid, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn)) AS diff_size, pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn) AS diff_bytes FROM pg_replication_slots WHERE slot_type = 'logical';Exemple de sortie :
current_time | slot_name | active | active_pid | diff_size | diff_bytes ----------------------+---------------------+--------+------------+-----------+------------ 2024-01-20 10:30:45 | my_replication_slot | t | 12345 | 16 MB | 16777216 (1 row) -
(Facultatif) Exécutez la commande suivante pour surveiller le retard de réplication :
SELECT now() AS CURRENT_TIME, slot_name, active, active_pid, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn)) AS diff_size, pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn) AS diff_bytes FROM pg_replication_slots WHERE slot_type = 'logical';Exemple de sortie :
-[ RECORD 1 ]+------------------------------ current_time | 2025-10-05 22:07:16.077928+00 slot_name | my_replication_slot active | t active_pid | 5392 diff_size | 0 bytes diff_bytes | 0Remarque : lorsque les valeurs précédentes atteignent 0, le réplica correspond à l'instance de base de données source.
Exécuter des tâches après la mise à niveau
Pour plus d'informations, consultez la section Exécution de tâches après la mise à niveau.
Informations connexes
- Sujets
- Database
- Balises
- Aurora PostgreSQL
- Langue
- Français

Contenus pertinents
- demandé il y a 2 ans
- demandé il y a 3 ans
- demandé il y a 8 mois
- demandé il y a 10 mois