Table des matières
La réplication logique est une méthode permettant de répliquer des données au niveau objet ainsi que les modifications apportées à ces objets, ceci basé sur leur identité de réplication (habituellement la clé primaire). L'utilisation du terme de « réplication logique » est faite en opposition à la réplication physique, cette dernière utilisant l'adresse exacte des blocs couplée avec une réplication octet par octet. PostgreSQL supporte ces deux méthodes, référez-vous à l'article Chapitre 26. La réplication logique permet un contrôle fin des données au niveau de la réplication et de la sécurité.
La réplication logique utilise un système de publication / abonnement avec un ou plusieurs abonnés qui s'abonnent à une ou plusieurs publications d'un nœud particulier. Les abonnés récupèrent les données des publications auxquelles ils sont abonnés et peuvent éventuellement renvoyer ces informations, ce qui permet un système de réplication en cascade dans le cas de configurations plus complexes.
La réplication logique d'une table commence en général en prenant un instantané des données sur la base publiée et en le copiant vers la base abonnée. Une fois cette étape réalisée, les changements sur la base publiée sont envoyés à la base abonnée en temps réel. La base abonnée applique les modifications dans le même ordre qu'elles auront été réalisées de façon à ce que la cohérence transactionnelle soit garantie pour les publications d'un seul abonnement. Cette méthode de réplication porte parfois le nom de réplication transactionnelle.
Les cas typiques d'utilisation de la réplication logique peuvent être les suivants :
Envoyer immédiatement les changements réalisés sur une base de données, ou sur un sous-ensemble de ces données, de façon incrémentale à une base de données abonnée;
Déclencher des triggers pour des changements spécifiques lorsqu'ils apparaissent sur la base de données abonnée ;
Réaliser la consolidation de plusieurs bases de données au sein d'une seule (par exemple pour répondre à des problématiques analytiques) ;
Répliquer entre des versions majeures différentes de PostgreSQL ;
Répliquer des instances PostgreSQL sur des plateformes différentes (par exemple de Linux à Windows) ;
Donner accès à des données répliquées à différents groupes d'utilisateurs ;
Partager un sous-ensemble de données entre plusieurs bases de données.
Une base de données abonnée se comporte comme n'importe quelle autre base de données d'une instance PostgreSQL et peut être utilisée comme base de données de publication pour d'autres base de données en lui définissant ses propres publications. Lorsque la base abonnée est considérée comme une base en lecture seule par l'application, il ne va pas y avoir de problèmes de conflits. D'un autre côté, s'il y a des écritures provenant soit de l'application soit d'un autre abonnement sur le même ensemble de tables, des conflits peuvent survenir.