Cette page présente l'extension pglogical
, ses avantages et ses limites.
Présentation
L'extension pglogical
est un outil de réplication logique robuste et flexible conçu pour PostgreSQL. Elle est également compatible avec la haute disponibilité (HA) et la reprise après sinistre (DR).
La réplication binaire traditionnelle, communément appelée réplication physique, réplique les modifications au niveau du système de fichiers et des blocs, ce qui crée un miroir physique dans le système cible. Bien que la réplication physique soit robuste et protège l'ensemble du cluster de bases de données, elle n'est qu'unidirectionnelle et nécessite l'accès aux fichiers de données de la base de données sous-jacente et aux fichiers journaux WAL (Write-Ahead Log).
L'extension pglogical
, quant à elle, extrait les modifications SQL d'une base de données fournisseur, les réplique, puis les rejoue sur une ou plusieurs bases de données d'abonnés. Cette réplication est appelée réplication logique.
L'extension pglogical
vous permet d'effectuer les opérations suivantes :
- Répliquer des données entre plusieurs bases de données AlloyDB Omni
- Répliquer des données entre AlloyDB Omni et Google Cloud AlloyDB
- Répliquer des données entre AlloyDB Omni et d'autres distributions PostgreSQL, y compris de nombreux services cloud tiers
Avantages
La réplication logique avec l'extension pglogical
offre les avantages suivants :
Réplication sélective : vous permet de définir des filtres et des règles pour déterminer les données à répliquer et leur destination. Vous pouvez choisir les tables à inclure et la façon dont les nouvelles tables doivent être gérées (qu'elles soient incluses ou non). Vous pouvez également ajouter des filtres de colonnes et de lignes. Un
apply delay
facultatif peut être ajouté dans les situations où vous souhaitez que l'abonné représente un point dans le temps à la suite du fournisseur.Réplication bidirectionnelle avec plusieurs bases de données principales : toutes les bases de données membres sont ouvertes en lecture/écriture et sont entièrement utilisables. Chaque base de données de point de terminaison agit à la fois comme fournisseur et comme abonné, ce qui permet de créer des scénarios de réplication avancés et de mettre à jour les données selon les modification apportées au niveau des différents points de terminaison.
Assistance des fournisseurs de services cloud : les fournisseurs de services cloud tels que Google reconnaissent la valeur de l'extension
pglogical
et l'intègrent à leurs services cloud, tels que Google Cloud SQL pour PostgreSQL et AlloyDB. D'autres fournisseurs de services cloud incluent également l'extensionpglogical
comme option, ce qui permet d'établir des configurations multicloud ou hybrides.Réplication entre versions : comme pglogical réplique les instructions SQL réelles, il permet la réplication entre des versions majeures de PostgreSQL. La réplication entre version peut être implémentée de manière fiable, en particulier lorsque la base de données source (fournisseur) exécute une version antérieure à celle de la base de données cible (abonné).
L'extension
pglogical
est compatible avec de nombreuses anciennes versions de PostgreSQL, telles que la version 9.4 et les versions ultérieures. Cela en fait un choix optimal pour les scénarios dans lesquels vous devez gérer des systèmes anciens et souhaitez répliquer des données dans des versions plus modernes de PostgreSQL, telles que celles utilisées dans AlloyDB Omni et Google Cloud AlloyDB.
En résumé, l'extension pglogical
fournit une solution de réplication logique, riche en fonctionnalités et compatible avec les anciennes versions de PostgreSQL et les services gérés dans le cloud, y compris Google Cloud SQL pour PostgreSQL et AlloyDB.
Limites de la réplication logique
Toutes les technologies de réplication logique, y compris celles utilisées avec d'autres plates-formes de bases de données relationnelles, présentent certaines limites. Une erreur de gestion peut interrompre le processus de réplication.
Pour une implémentation fiable, tenez compte des points suivants :
- Vous devez réfléchir à la façon de gérer les objets (à l'échelle de la base de données et du cluster) qui sont hors du champ d'application de la réplication. L'extension
pglogical
opère au niveau de la base de données et uniquement sur un ensemble spécifié de tables et de séquences. Les autres types d'objets, tels que les fonctions et les procédures, doivent être répliqués à l'aide d'une autre méthode. - Il est recommandé que toutes les tables de réplication possèdent une clé primaire.
Il est possible d'utiliser la fonctionnalité de table
REPLICA IDENTITY
pour informer l'extensionpglogical
des colonnes qui identifient de manière unique les lignes. Cela doit être évité autant que possible. Les tables sans clé primaire sont statiques par nature et ne sont jamaisUPDATED
(mises à jour) niDELETED
(supprimées). Elles ne permettent que les opérations de typeINSERTS
. Ces types de tables n'ont pas besoin de clé primaire. - Gestion des déclencheurs et des séquences dans les bases de données d'abonnés. Par défaut, les déclencheurs sont définis comme des déclencheurs
ORIGIN
ouLOCAL
, et n'entraînent aucun action dans la base de données des abonnés lorsque les lignes sont répliquées. Il est important de vérifier tous les déclencheurs pour s'assurer que l'optionREPLICA
est définie sur chaque déclencheur, afin qu'il ne se déclenche pas côté abonné, sauf si cela est nécessaire. - Vous devez gérer la résolution des conflits manuellement ou automatiquement à l'aide de règles
who wins
. - Vous devez procéder à la réplication des commandes LDD (langage de définition de données) en les implémentant manuellement sur tous les points de terminaison ou en répliquant automatiquement les LDD dans les bases de données des abonnés à l'aide de la fonction d'API
pglogical
appropriée dans la base de données du fournisseur. - Assurez-vous que les tables et séquences nouvellement créées sont ajoutées manuellement ou automatiquement aux ensembles de réplication sur les bases de données principales.
- Assurez-vous qu'un réseau TCP robuste, performant, fiable et sécurisé est établi entre tous les points de terminaison de la topologie de réplication.
Voici d'autres restrictions et limites de l'extension pglogical
:
- Les autorisations de super-utilisateur sont actuellement requises pour la version 2.4.3 de
pglogical
. - Bien que la plupart des tables et des séquences puissent être répliquées par l'extension
pglogical
, d'autres types d'objets ne le sont pas, et les tablesTEMPORARY
etUNLOGGED
ne le sont pas non plus. - Pour répliquer les instructions LDD, il est nécessaire d'utiliser la fonction de l'API pglogical. Les commandes LDD natives ne sont pas répliquées, à l'exception de la commande
TRUNCATE
. - L'extension fonctionne au niveau des objets, par table et par séquence, et est déployée pour chaque base de données. Cela signifie que certains objets, y compris les objets à l'échelle du cluster tels que
users
etroles
, sont exclus de la réplication et doivent être gérés séparément.
Étapes suivantes
- Répliquer des données entre AlloyDB pour PostgreSQL et AlloyDB Omni
- Répliquer des données entre AlloyDB Omni et d'autres bases de données