Réplication d’une base de données postgresql sur un poste de travail windows

Nous allons configurer une réplication logique d’une table de la base de données de notre serveur linux sur une installation de postgresql sur un poste de travail windows.

La réplication permet d’avoir sur un poste distant une copie actualisée de la base de données centralisée. Cette copie ne sera pas utilisée pour les mises à jour locales, car elle sera en lecture seule. Par contre elle permet de travailler hors connexion et beaucoup plus rapidement, car les échanges entre la base centrale et le réplicat local ne contient que les mises à jours de la base centralisée.

Pour notre exemple, nous allons utiliser une table nommée institutions_partenaires, située dans une base de données nommée postgres sur un serveur.

Mise en place de la réplication sur la base du serveur (master)

Activation de la réplication logique de postgresql 10

Nous devons, tout d’abord, modifier le paramètre wal_level du fichier  postgresql.conf , sur le serveur, en mettant la valeur logical.

Puis, vous devez redémarrer postgresql pour que la modification soit prise en compte.

Pour vérifier que la modification a bien été prise en compte, avec pgAdmin (ou par ligne de commande) exécutez la commande

show wal_level;

Création d’un utilisateur avec des privilèges de réplication

Pour créer un utilisateur, nommée rep avec les privilèges de réplication, exécutez la commande

CREATE ROLE rep REPLICATION LOGIN PASSWORD ‘Password’;

et pour lui donner les droits sur la table institutions_partenaires, rentrez la commande:

GRANT ALL ON institutions_partenaires TO rep;


Création d’une publication de la table

Pour créer la publication de la table, rentrez la commande suivante:

CREATE PUBLICATION publi_partenaires FOR TABLE institutions_partenaires ;

Pour finir la mise en place sur la partie serveur, vous devez autoriser l’utilisateur rep à se connecter à la base de données postgresql:

Ajoutez la ligne

# TYPE     DATABASE        USER             CIDR-ADDRESS       METHOD
Host            postgres             rep                       0.0.0.0/0                 md5

Dans le fichier pg_hba.conf.

Et redémarrez postgresql sur le serveur pour que la modification soit prise en compte.

Mise en place de la réplication sur le poste distant (slave)

Création de la table sur le poste distant

Tout d’abord, il faut créer la table institutions_partenaires dans la base du poste distant.

Une manière, parmi d’autres, est de copier la définition sql de la table du serveur et de l’exécuter sur le poste distant.

N’oubliez pas, avant d’exécuter la commande sql sur le poste distant d’enlever la dernière ligne

GRANT ALL ON TABLE public.institutions_partenaires TO rep;

car cet utilisateur n’existe pas sur le poste distant.

Par contre, n’oubliez pas de faire un GRANT  pour les utilisateurs de la table sur le poste distant pour qu’ils puissent se connecter à la table. Les utilisateurs pourront utiliser alors les données contenues dans la table, mais ils ne pourront pas les modifier. Seules les update, insert et delete effectués sur la table maîtresse apparaîtront automatiquement dans la table esclave.

Création d’une souscription à la table

Pour souscrire la nouvelle table créée à la publication faite sur le serveur, rentrez la commande:

CREATE SUBSCRIPTION subscri_partenaires CONNECTION ‘dbname=postgres host=195.83.124.222 user=rep password=Password port=5433’ PUBLICATION publi_partenaires;

Une fois exécutée, rentrez la commande:

table institutions_partenaires;

pour vérifier que la réplication a bien eu lieu.

Chaque fois que la table maître sera mise à jour, les modifications seront répercutées sur la table esclave.

Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

2 thoughts on “Réplication d’une base de données postgresql sur un poste de travail windows

Répondre à abdallah mehdoini Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *