Réalisation d'une réplication logique pour Amazon RDS pour Postgre SQL - Amazon Relational Database Service

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.

Réalisation d'une réplication logique pour Amazon RDS pour Postgre SQL

À partir de la version 10.4, RDS Postgre SQL prend en charge la SQL syntaxe de publication et d'abonnement introduite dans SQL Postgre 10. Pour en savoir plus, consultez la section Réplication logique dans la SQL documentation Postgre.

Note

Outre la fonctionnalité native de réplication SQL logique Postgre introduite dans Postgre SQL 10, RDS Postgre supporte SQL également l'extension. pglogical Pour de plus amples informations, veuillez consulter Utilisation de pglogical pour synchroniser les données entre les instances.

Vous trouverez ci-dessous des informations sur la configuration de la réplication logique RDS pour une SQL instance de base de données Postgre.

Compréhension de la réplication logique et du décodage logique

RDSfor Postgre SQL prend en charge le streaming des modifications du journal write-ahead (WAL) à l'aide des emplacements de réplication logiques SQL de Postgre. Il prend également en charge l'utilisation du décodage logique. Vous pouvez configurer des emplacements logiques de réplication sur votre instance et diffuser les modifications de base de données à travers ces emplacements pour un client comme pg_recvlogical. Les emplacements logiques de réplication sont créés au niveau de la base de données et prennent en charge les connexions de réplication avec une base de données unique.

Les clients les plus courants pour la réplication SQL logique Postgre sont AWS Database Migration Service un hôte géré sur mesure sur une instance AmazonEC2. L'emplacement de réplication logique ne contient aucune information sur le récepteur du flux. De plus, il n'est pas nécessaire que la cible soit une base de données de réplica. Si vous configurez un emplacement de réplication logique et que vous ne lisez pas à partir de l'emplacement, les données peuvent être écrites dans le stockage de votre instance de base de données et le remplir rapidement.

Vous activez la réplication SQL logique Postgre et le décodage logique pour Amazon à l'RDSaide d'un paramètre, d'un type de connexion de réplication et d'un rôle de sécurité. Le client pour le décodage logique peut être n'importe quel client capable d'établir une connexion de réplication à une base de données sur une instance de base de données PostgreSQL.

Pour activer le décodage logique pour et RDS pour une instance de base de données Postgre SQL
  1. Assurez-vous que le compte utilisateur que vous utilisez possède les rôles suivants :

    • Le rôle rds_superuser de manière à ce que vous puissiez activer la réplication logique

    • Le rôle rds_replication pour accorder les autorisations de gérer des emplacements logiques et de diffuser les données à l'aide d'emplacements logiques

  2. Définissez le paramètre statique rds.logical_replication sur 1. Dans le cadre de l'application de ce paramètre, configurez également les paramètres wal_level, max_wal_senders, max_replication_slots et max_connections. Ces modifications de paramètres peuvent augmenter WAL la génération. Par conséquent, définissez le rds.logical_replication paramètre uniquement lorsque vous utilisez des emplacements logiques.

  3. Redémarrez l'instance de base de données pour que le paramètre statique rds.logical_replication prenne effet.

  4. Créez un emplacement de réplication logique comme expliqué dans la section suivante. Cela nécessite que vous précisiez un plugin de décodage. Actuellement, Postgre SQL supporte RDS les plugins de sortie test_decoding et wal2json fournis avec Postgre. SQL

Pour plus d'informations sur le décodage SQL logique Postgre, consultez la documentation SQLPostgre.

Utilisation des emplacements de réplication logique

Vous pouvez utiliser des SQL commandes pour travailler avec des emplacements logiques. Par exemple, la commande suivante crée un emplacement logique nommé à test_slot l'aide du plugin test_decoding de SQL sortie Postgre par défaut.

SELECT * FROM pg_create_logical_replication_slot('test_slot', 'test_decoding'); slot_name | xlog_position -----------------+--------------- regression_slot | 0/16B1970 (1 row)

Pour lister les emplacements logiques, utilisez la commande suivante.

SELECT * FROM pg_replication_slots;

Pour supprimer un emplacement logique, utilisez la commande suivante.

SELECT pg_drop_replication_slot('test_slot'); pg_drop_replication_slot ----------------------- (1 row)

Pour plus d'exemples d'utilisation des emplacements de réplication logiques, consultez la section Exemples de décodage logique dans la documentation PostgreSQL.

Après avoir créé l'emplacement de réplication logique, vous pouvez commencer le streaming. L'exemple suivant montre comment le décodage logique est contrôlé par le protocole de streaming. Cet exemple utilise le programme pg_recvlogical, inclus dans la distribution Postgre. SQL Cela nécessite que l'authentification du client soit configurée pour autoriser les connexions de réplication.

pg_recvlogical -d postgres --slot test_slot -U postgres --host -instance-name.111122223333.aws-region.rds.amazonaws.com -f - --start

Pour afficher le contenu de la vue pg_replication_origin_status, interrogez la fonction pg_show_replication_origin_status.

SELECT * FROM pg_show_replication_origin_status(); local_id | external_id | remote_lsn | local_lsn ----------+-------------+------------+----------- (0 rows)