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 SQL logique Postgre avec des clusters de bases de données multi-AZ pour Amazon RDS
En utilisant la réplication SQL logique Postgre avec votre cluster de base de données multi-AZ, 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. Cela fonctionne en utilisant les enregistrements de modification du journal d'SQLécriture anticipée de Postgre (). WAL Pour de plus amples informations, veuillez consulter Réalisation d'une réplication logique pour Amazon RDS pour Postgre SQL.
Lorsque vous créez un nouvel emplacement de réplication logique sur l'instance de base de données d'enregistreur d'un cluster de bases de données multi-AZ, l'emplacement est copié de manière asynchrone sur chaque instance de base de données de lecteur dans le 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 bases de données multi-AZ exécutés RDS pour Postgre SQL version 14.8-R2 et supérieure, et 15.3-R2 et version ultérieure.
Note
Outre la fonctionnalité native de réplication SQL logique Postgre, les clusters de base de données multi-AZ exécutés RDS pour Postgre prennent SQL également en charge l'extension. pglogical
Pour plus d'informations sur la réplication SQL logique Postgre, consultez la section Réplication logique
Prérequis
Pour configurer la réplication SQL logique Postgre pour les clusters de bases de données multi-AZ, vous devez remplir les conditions préalables suivantes.
-
Votre compte d'utilisateur doit être membre du groupe
rds_superuser
et disposer des privilègesrds_superuser
. Pour de plus amples informations, veuillez consulter Comprendre les SQL rôles et les autorisations de Postgre. -
Votre cluster de bases de données multi-AZ doit être associé à un groupe de paramètres de cluster de bases de données personnalisé afin que vous puissiez configurer les valeurs de paramètres décrites dans la procédure suivante. Pour de plus amples informations, veuillez consulter Utilisation des groupes de paramètres de clusters de base de données pour les clusters de base de données Multi-AZ.
Configuration de la réplication logique
Pour configurer la réplication logique pour un cluster de bases de données multi-AZ, vous devez activer des paramètres spécifiques dans le groupe de paramètres de cluster de bases de données associé, puis créer des emplacements de réplication logique.
Note
À partir de la SQL version 16 de Postgre, vous pouvez utiliser les instances de base de données de lecture du cluster de base de données multi-AZ pour la réplication logique.
Pour configurer la réplication logique pour et RDS pour un cluster de base de données Postgre SQL Multi-AZ
-
Ouvrez le groupe de paramètres de cluster de base de données personnalisé associé à votre cluster RDS de base de données Postgre SQL Multi-AZ.
Dans le champ de recherche Paramètres, localisez le paramètre statique
rds.logical_replication
et définissez sa valeur sur1
. Ce changement de paramètre peut augmenter WAL la génération. Ne l'activez donc que lorsque vous utilisez des emplacements logiques.-
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
-
-
Redémarrez le cluster de bases de données multi-AZ pour que les valeurs des paramètres prennent effet. Pour obtenir des instructions, consultez Redémarrage d'un cluster de base de données multi-AZ et d'instances de base de données de lecture pour Amazon RDS.
-
Créez un emplacement de réplication logique sur l'instance de base de données d'enregistreur du cluster de bases de données multi-AZ, comme cela est expliqué dans Utilisation des emplacements de réplication logique. Cela nécessite que vous précisiez un plugin de décodage. Actuellement, RDS car Postgre SQL prend en charge les
pgoutput
pluginstest_decoding
wal2json
,, et fournis avec SQL Postgre.L'emplacement est copié de manière asynchrone sur chaque instance de base de données de lecteur dans le cluster.
-
Vérifiez l'état de l'emplacement sur toutes les instances de base de données de lecteur du cluster de bases de données multi-AZ. 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'étatconfirmed_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 base de données multi-AZ exécutant Postgre SQL version 16 :
-
Vous ne pouvez utiliser que des instances de base de données Writer pour créer ou supprimer des emplacements de réplication logiques. Par exemple, la
CREATE SUBSCRIPTION
commande doit utiliser le point de terminaison du rédacteur du cluster dans la chaîne de connexion de l'hôte. -
Vous devez utiliser le point de terminaison du rédacteur 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 SUBSCRIPTIONsubscription-name
CONNECTION host=writer-endpoint
Postgres=>
ALTER SUBSCRIPTIONsubscription-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
pg_subscription_rel
catalogue pour surveiller la synchronisation des tables. La synchronisation des tables est terminée lorsque lasrsubstate
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 réduit la charge sur l'instance de base de données du rédacteur en transférant la réplication vers l'une des instances de base de données du lecteur :
Postgres=>
ALTER SUBSCRIPTIONsubscription-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 affichera le message d'erreur suivant :
replication slot
slot_name
is already active for PIDx
providing immediate feedback. -
Lorsque vous utilisez l'
pglogical
extension, vous ne pouvez utiliser que le point de terminaison du rédacteur 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 périmés réservent les fichiers journaux à écriture anticipée (WAL) et peuvent entraîner des problèmes d'espace disque.