View a markdown version of this page

Configuration de la réplication logique PostgreSQL Multi-AZ avec des clusters de bases de données pour Amazon RDS - 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.

Configuration de la réplication logique PostgreSQL Multi-AZ avec des clusters de bases de données pour Amazon RDS

En utilisant la réplication logique PostgreSQL avec Multi-AZ votre cluster de bases de données, vous pouvez répliquer et synchroniser des tables individuelles plutôt que l'instance de base de données complète. La réplication logique s’appuie sur un modèle publier et s’abonner pour répliquer les modifications depuis la source vers un ou plusieurs destinataires. Elle s’appuie sur les enregistrements de modification depuis le journal d’écriture anticipée (WAL) de PostgreSQL. Pour de plus amples informations, veuillez consulter Réplication logique pour Amazon RDS pour PostgreSQL.

Lorsque vous créez un nouvel emplacement de réplication logique sur l'instance de base de données d'écriture d'un Multi-AZ cluster de base de données, l'emplacement est copié de manière asynchrone sur chaque instance de base de données de lecteur du cluster. Les emplacements sur les instances de base de données de lecteur sont synchronisés en continu avec ceux figurant sur l'instance de base de données d'enregistreur.

La réplication logique est prise en charge pour les clusters de Multi-AZ bases de données exécutant RDS pour PostgreSQL version 14.8-R2 et ultérieure, et 15.3-R2 et version ultérieure.

Note

Outre la fonctionnalité native de réplication logique de PostgreSQL Multi-AZ , les clusters de base de données exécutant RDS pour PostgreSQL prennent également en charge l'extension. pglogical

Pour plus d'informations sur la réplication logique PostgreSQL, consultez Réplication logique (langue française non garantie) dans la documentation PostgreSQL.

Conditions préalables

Pour configurer la réplication logique PostgreSQL Multi-AZ pour les clusters de bases de données, vous devez remplir les conditions préalables suivantes.

Configuration de la réplication logique

Pour configurer la réplication logique pour un Multi-AZ cluster de bases de données, vous activez des paramètres spécifiques dans le groupe de paramètres de cluster de base de données associé, puis vous créez des emplacements de réplication logique.

Note

À partir de PostgreSQL version 16, vous pouvez utiliser les instances de base de données de lecture du cluster de bases de données pour Multi-AZ la réplication logique.

Pour configurer la réplication logique pour un cluster de base de données RDS pour PostgreSQL Multi-AZ
  1. Ouvrez le groupe de paramètres de cluster de base de données personnalisé associé à votre cluster de base de données RDS pour Multi-AZ PostgreSQL.

  2. Dans le champ de recherche Paramètres, localisez le paramètre statique rds.logical_replication et définissez sa valeur sur 1. Cette modification de paramètre peut augmenter la génération WAL. Vous devez donc l'activer uniquement lorsque vous utilisez des emplacements logiques.

  3. Dans le cadre de cette modification, configurez les paramètres de cluster de bases de données suivants.

    • max_wal_senders

    • max_replication_slots

    • max_connections

    En fonction de votre utilisation prévue, vous devrez peut-être également modifier les valeurs des paramètres suivants. Toutefois, dans de nombreux cas, les valeurs par défaut sont suffisantes.

    • max_logical_replication_workers

    • max_sync_workers_per_subscription

  4. Redémarrez le Multi-AZ cluster de base de données pour que les valeurs des paramètres prennent effet. Pour obtenir des instructions, veuillez consulter Redémarrage d'un cluster de Multi-AZ bases de données et d'instances de base de données de lecteur pour Amazon RDS.

  5. Créez un emplacement de réplication logique sur l'instance de base de données d'écriture du Multi-AZ cluster de base de données, comme expliqué dansUtilisation des emplacements de réplication logique. Cela nécessite que vous précisiez un plugin de décodage. Actuellement, RDS pour PostgreSQL prend en charge les plug-ins test_decodingwal2json et pgoutput fournis avec PostgreSQL.

    L'emplacement est copié de manière asynchrone sur chaque instance de base de données de lecteur dans le cluster.

  6. Vérifiez l'état du slot sur toutes les instances de base de données de lecture du Multi-AZ cluster de base de données. Pour ce faire, inspectez la vue pg_replication_slots sur toutes les instances de base de données de lecteur et assurez-vous que l'état confirmed_flush_lsn progresse alors que l'application consomme activement des modifications logiques.

    Les commandes suivantes montrent comment inspecter l'état de réplication sur les instances de base de données de lecteur.

    % psql -h test-postgres-instance-2.abcdefabcdef.us-west-2.rds.amazonaws.com postgres=> select slot_name, slot_type, confirmed_flush_lsn from pg_replication_slots; slot_name | slot_type | confirmed_flush_lsn --------------+-----------+--------------------- logical_slot | logical | 32/D0001700 (1 row) postgres=> select slot_name, slot_type, confirmed_flush_lsn from pg_replication_slots; slot_name | slot_type | confirmed_flush_lsn --------------+-----------+--------------------- logical_slot | logical | 32/D8003628 (1 row) % psql -h test-postgres-instance-3.abcdefabcdef.us-west-2.rds.amazonaws.com postgres=> select slot_name, slot_type, confirmed_flush_lsn from pg_replication_slots; slot_name | slot_type | confirmed_flush_lsn --------------+-----------+--------------------- logical_slot | logical | 32/D0001700 (1 row) postgres=> select slot_name, slot_type, confirmed_flush_lsn from pg_replication_slots; slot_name | slot_type | confirmed_flush_lsn --------------+-----------+--------------------- logical_slot | logical | 32/D8003628 (1 row)

Une fois que vous avez terminé vos tâches de réplication, arrêtez le processus de réplication, supprimez les emplacements de réplication et désactivez la réplication logique. Pour désactiver la réplication logique, modifiez le groupe de paramètres de votre cluster de bases de données et réaffectez à rds.logical_replication la valeur 0. Redémarrez le cluster pour que la modification des paramètres prenne effet.

Limitations et recommandations

Les limites et recommandations suivantes s'appliquent à l'utilisation de la réplication logique avec des clusters de Multi-AZ base de données exécutant PostgreSQL version 16 :

  • Vous ne pouvez utiliser que des instances de base de données d’enregistreur pour créer ou supprimer des emplacements de réplication logique. Par exemple, la commande CREATE SUBSCRIPTION doit utiliser le point de terminaison de l’enregistreur du cluster dans la chaîne de connexion de l’hôte.

  • Vous devez utiliser le point de terminaison de l’enregistreur de cluster lors de toute synchronisation ou resynchronisation de tables. Par exemple, vous pouvez utiliser les commandes suivantes pour resynchroniser une table récemment ajoutée :

    Postgres=>ALTER SUBSCRIPTION subscription-name CONNECTION host=writer-endpoint Postgres=>ALTER SUBSCRIPTION subscription-name REFRESH PUBLICATION
  • Vous devez attendre que la synchronisation des tables soit terminée avant d’utiliser les instances de base de données du lecteur pour la réplication logique. Vous pouvez utiliser la table du catalogue pg_subscription_rel pour surveiller la synchronisation des tables. La synchronisation des tables est terminée lorsque la srsubstate colonne est définie sur ready (r).

  • Nous recommandons d’utiliser des points de terminaison d’instance pour la connexion de réplication logique une fois la synchronisation initiale des tables terminée. La commande suivante permet de réduire la charge sur l’instance de base de données d’enregistreur en transférant la réplication vers l’une des instances de base de données de lecteur :

    Postgres=>ALTER SUBSCRIPTION subscription-name CONNECTION host=reader-instance-endpoint

    Vous ne pouvez pas utiliser le même emplacement sur plusieurs instances de base de données à la fois. Lorsque deux applications ou plus répliquent des modifications logiques provenant de différentes instances de base de données du cluster, certaines modifications peuvent être perdues en raison d’un basculement du cluster ou d’un problème réseau. Dans ces situations, vous pouvez utiliser les points de terminaison de l’instance pour la réplication logique dans la chaîne de connexion hôte. L’autre application utilisant la même configuration affiche le message d’erreur suivant :

    replication slot slot_name is already active for PID x providing immediate feedback.
  • Lorsque vous utilisez l’extension pglogical, vous ne pouvez utiliser que le point de terminaison de l’enregistreur de cluster. L’extension présente des limites connues qui peuvent créer des emplacements de réplication logiques inutilisés lors de la synchronisation des tables. Les emplacements de réplication obsolètes réservent les fichiers du journal d’écriture anticipée (WAL) et peuvent entraîner des problèmes d’espace disque.