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
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.
Rubriques
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
-
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
-
-
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ètreswal_level
,max_wal_senders
,max_replication_slots
etmax_connections
. Ces modifications de paramètres peuvent augmenter WAL la génération. Par conséquent, définissez lerds.logical_replication
paramètre uniquement lorsque vous utilisez des emplacements logiques. -
Redémarrez l'instance de base de données pour que le paramètre statique
rds.logical_replication
prenne effet. -
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
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)