Cette rubrique explique comment utiliser l'extension pglogical de PostgreSQL pour répliquer les données d'une instance ApsaraDB RDS for PostgreSQL. Cette extension implémente la réplication logique en flux continu selon un modèle publication/abonnement.
Prérequis
Votre instance RDS exécute PostgreSQL 10 ou une version ultérieure.
-
La version mineure du moteur de votre instance RDS est égale ou supérieure à 20230830. Si votre instance RDS exécute PostgreSQL 17, la version mineure du moteur doit être 20241030 ou ultérieure.
ImportantBien que cette extension soit prise en charge dans les versions mineures du moteur antérieures à 20230830, ApsaraDB RDS optimise les extensions vulnérables lors des mises à jour des versions mineures afin de normaliser leur gestion et de renforcer la sécurité. Par conséquent, vous ne pouvez pas créer cette extension sur les instances RDS dont la version mineure du moteur est antérieure à 20230830. Pour plus d'informations, consultez la section Restrictions sur la création d'extensions pour RDS for PostgreSQL.
Si vous avez déjà créé cette extension sur une instance RDS dont la version mineure du moteur est antérieure à 20230830, vous pouvez continuer à l'utiliser.
Pour créer cette extension pour la première fois ou la recréer sur votre instance RDS, mettez à jour la version mineure du moteur vers la dernière version disponible. Pour plus d'informations, consultez la section Mettre à jour la version mineure du moteur.
-
L'extension pglogical figure dans la valeur du paramètre shared_preload_libraries de votre instance RDS.
Pour ajouter pglogical à la valeur du paramètre shared_preload_libraries , consultez la section Définir les paramètres de l'instance.
RemarqueLa modification de la valeur du paramètre shared_preload_libraries entraîne un redémarrage immédiat de votre instance RDS. Ce redémarrage interrompt la connexion entre votre application et l'instance RDS. Agissez avec prudence : avant de déclencher le redémarrage, planifiez vos opérations et vérifiez que votre application est configurée pour se reconnecter automatiquement à la base de données.
Contexte
L'extension pglogical de PostgreSQL offre une méthode efficace de réplication des données en alternative à la réplication physique, en s'appuyant sur un modèle publication/abonnement. Elle offre une vitesse de réplication supérieure à celle de Slony, Bucardo et Londiste, et prend en charge les mises à niveau entre différentes versions. L'extension pglogical convient aux scénarios suivants :
Mise à niveau des versions majeures du moteur
Réplication de toutes les données d'une base de données hébergée sur votre instance RDS
Réplication de tables, de lignes et de colonnes spécifiques à l'aide d'ensembles de réplication
Agrégation et fusion des données provenant de plusieurs serveurs amont
Utiliser l'extension
-
Activez l'extension pglogical.
CREATE EXTENSION pglogical; -
Désactivez l'extension pglogical.
DROP EXTENSION pglogical;
Configurer la réplication logique en flux continu
-
Créez un nœud éditeur sur le serveur éditeur.
RemarqueDéfinissez le paramètre
hostsur 127.0.0.1 pour le nœud éditeur. Exécutez l'instructionSHOW PORT;pour obtenir la valeur du paramètreportdu nœud éditeur.SELECT pglogical.create_node( node_name := 'provider', dsn := 'host=127.0.0.1 port=<Port number> dbname=test user=provider_user password=provider_pass' ); -
Configurez un ensemble de réplication.
Ajoutez toutes les tables du schéma public à l'ensemble de réplication par défaut.
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);RemarqueUn ensemble de réplication permet de répliquer uniquement les tables spécifiées et les modifications qui y sont apportées, de l'éditeur vers un abonné.
L'ensemble de réplication par défaut réplique toutes les tables et toutes les modifications qui y sont apportées, de l'éditeur vers un abonné. Pour plus d'informations, consultez la documentation pglogical.
-
Créez un nœud abonné sur le serveur abonné.
RemarqueDéfinissez le paramètre
hostsur 127.0.0.1 pour le nœud abonné. Exécutez l'instructionSHOW PORT;pour obtenir la valeur du paramètreportdu nœud abonné.SELECT pglogical.create_node( node_name := 'subscriber', dsn := 'host=127.0.0.1 port=<Port number> dbname=test user=subscriber_user password=subscriber_pass' ); -
Créez un abonnement sur l'abonné.
RemarqueDéfinissez le paramètre
hostsur le point de terminaison interne de l'éditeur, par exemplepgm-****.pg.rds.aliyuncs.com. Définissez le paramètreportsur le numéro de port interne de l'éditeur.Consultez le point de terminaison interne et le numéro de port interne d'une instance RDS dans la console ApsaraDB RDS. Pour plus d'informations, consultez la section Afficher et modifier les points de terminaison et les numéros de port d'une instance ApsaraDB RDS for PostgreSQL.
SELECT pglogical.create_subscription( subscription_name := 'subscription', provider_dsn := 'host=<Internal endpoint of the provider> port=<Internal port number of the provider> dbname=test user=provider_user password=provider_pass' );Une fois l'abonnement créé, les processus de synchronisation et de réplication démarrent en arrière-plan.
Références
Pour plus d'informations, consultez la documentation pglogical.