Vous êtes sur la page 1sur 3

Réplication PostgreSQL

mardi 7 mars 2023 01:24

La réplication en continu est une solution de haute disponibilité et de reprise après


sinistre.
Notre base de données de production ou MASTER diffusait vers 2 SLAVES qui
étaient la réplique exacte du master. Nous avions configuré EFM pour automatiser le
basculement si le maître n'était pas disponible pour une raison quelconque, EFM
basculerait toutes les connexions vers le prochain esclave disponible.

Nous avons configuré la réplication en continu pour plusieurs raisons.

1. Il s'agit d'une solution de reprise après sinistre et de haute disponibilité. car nous
avons un maître et 2 esclaves. les esclaves sont redondants en mode lecture seule
qui sont la copie bloc à bloc du maître.

2. Nous y mettions notre pg_basebackup en veille pour sauvegarder votre base de


données.

3. vous pouvez également exécuter de longues requêtes en lecture seule en veille.


Cela a permis de décharger la charge sur la production. Toutes les requêtes en
lecture seule ont été envoyées au standby.

4. Nous exécutions également nos scripts de création de rapports car il s'agit d'une
réplication en temps réel.

POSTGRESQL.CONF
PG_HBA.CONF

INSTALLATION

Lors de la configuration de la réplication en continu,


5. Nous devons nous assurer que le maître et tous les esclaves exécutent la même
version de PostgreSQL.
Sélectionnez version();

6. nous devons nous assurer que notre maître est en mode archive log et que les
fichiers wal sont archivés.
Afficher archive mode ;
Afficher archive command ;

7. nous avons besoin d'un utilisateur avec les privilèges de réplication et de super
utilisateur qui fera le streaming.
créer l'utilisateur pour la réplication
créer un utilisateur repuser avec le mot de passe 'postgres' ;
modifier l'utilisateur repuser avec le superutilisateur ;
modifier l'utilisateur repuser avec réplication ;
8. Nous devons définir certains paramètres dans le fichier postgresql.conf sur le
maître comme le

wal_level = réplique (pour que le système capture plus d'informations sur les
modifications)
wal_keep_segment = 15 (le nombre de fichiers wal à conserver dans le répertoire
pg_wal pour résoudre tout problème de retard devrait au cas où un esclave serait en
retard. Mais si le maître a besoin d'espace, il recyclera ces fichiers wal)
Max_wal_serders = 5 (nombre de processus chargés d'envoyer les fichiers wal à
Nouvelle section 1 Page 1
Max_wal_serders = 5 (nombre de processus chargés d'envoyer les fichiers wal à
l'esclave. 1 par standby).
redondance à chaud = activé (il est ignoré sur le maître et n'a d'effet que sur
l'esclave)
wal_log_hints = on (il doit être activé avant de pouvoir utiliser pg_rewind. Bon si
vous n'avez pas efm)

9. Normalement, nous devons redémarrer le cluster pour que les modifications


prennent effet, mais comme nous devons encore modifier notre fichier pg_hba.conf,
nous le redémarrerons simplement une fois que nous aurons terminé.

Il va falloir éditer le fichier PG_HBA.CONF pour ajouter les adresses IP du MASTER


et des SLAVES sur l'IP afin qu'ils puissent se connecter

Connexions locales IPv4 :


héberger tous tous 192.168.40.134/32 md5
héberger tous tous 192.168.40.133/32 md5
héberger tous tous 192.168.40.135/32 md5
héberger tous tous 127.0.0.1/32 md5
# Connexions locales IPv6 :
héberger tous tous ::1/128 md5
# Autoriser les connexions de réplication à partir de localhost, par un utilisateur avec
le
# privilège de réplication.
réplication locale tous md5
réplication d'hôte tous 192.168.40.134/32 md5
réplication d'hôte tous 192.168.40.133/32 md5
réplication d'hôte tous 192.168.40.135/32 md5
réplication d'hôte tous 127.0.0.1/32 md5

s'il dit TRUE, c'est l'esclave


s'il dit FALSE, c'est le maître

10. Nous pouvons maintenant redémarrer le MASTER pour que toutes les
modifications prennent effet.
Systemctl redémarre edb-as-1.service

11. Nous devrons arrêter les deux SLAVES, cd dans leur répertoire de données et
tout supprimer
systemctl stop edb-as-11
rm -rf *

12. Nous devons sourcer notre profil bash et prendre un pg_basebackup avec
l'option -R du maître à partir du répertoire de données vidé de l'esclave
Nous sommes donc dans l'esclave, sauvegardant le maître pour utiliser
pg_basebackup pour sauvegarder le maître sur cet esclave.

Depuis l'esclave, nous tapons cette commande.


faites-le fonctionner rapidement: -c pour créer un point de contrôle rapidement.
-R pour que le système crée un fichier recovery.conf
-D pour indiquer au système où envoyer la sauvegarde

ARRÊTER LE PARE-FEU SUR LE MAITRE ET L'ESCLAVE

Nouvelle section 1 Page 2


ARRÊTER LE PARE-FEU SUR LE MAITRE ET L'ESCLAVE
état systemctl pare-feu
systemctl arrêter le pare-feu
systemctl désactiver le pare-feu
masque systemctl - maintenant firewalld

pg_basebackup -h 192.168.40.134 (CECI EST L'IP DU MAÎTRE) -p 5446 -X


stream -c fast -U repuser -D /var/lib/edb/as11/data -P -R (il crée un fichier
recovery.conf déposer)

13. Un fichier recovery.conf est créé car nous avons spécifié l'option -R. Maintenant,
nous avons édité ce fichier et ajouté

si nous cat le fichier, nous verrons 2 paramètres.


mode_veille = activé
primary_conninfo = ' user = repuser password = postgres host = masterprod port =
5444 ect.....)

recovery_target_timeline = 'dernier'
pour spécifier que le standby doit être au dernier état en tant que maître car nous ne
voulons pas que l'esclave soit en retard.

trigger_file = '/var/lib/edb/as11/data/trigger_promote'
Il s'agit d'un fichier virtuel qui ne se ferme pas. mais si cet esclave est opérationnel
et que vous créez ce fichier au même emplacement spécifié, recovery.conf
deviendra recovery.done et l'esclave se promouvra en MASTER et commencera à
accepter les connexions READ AND WRITE. Normalement, l'esclave est en lecture
seule.

14. Nous démarrons le serveur à l'aide de la commande systemctl et il se


connectera à la base principale sur les informations spécifiées dans CONNINFO
dans le fichier recovery.conf.

Le conninfo spécifie l'utilisateur effectuant la réplication et son mot de passe, l'hôte


qui est le maître et son port.

systemctl démarrer edb-as-10


état systemctl edb-as-10

Nouvelle section 1 Page 3

Vous aimerez peut-être aussi