18
0
Fork 0

Ajout slot de réplication physique

This commit is contained in:
emorino 2020-10-27 16:44:55 +01:00
parent 25c457f278
commit 1a5dfa2a27
1 changed files with 29 additions and 2 deletions

View File

@ -12,7 +12,7 @@ La réplication en flux (_Streaming Replication_) est disponible à partir de la
* le serveur jouant le rôle de réplica ne peut être interrogé qu'en lecture ; * le serveur jouant le rôle de réplica ne peut être interrogé qu'en lecture ;
* possibilité de mettre en cascade plusieurs réplicats. * possibilité de mettre en cascade plusieurs réplicats.
Par rapport au mode de réplication _Hot Standby_, l'avantage avec la réplication en flux est qu'il n'est pas besoin d'attendre qu'un journal soit plein et fermé pour qu'il soit communiquer au serveur réplica. À l'inverse cela introduit une légère charge supplémentaire (au niveau CPU) puisqu'un (ou plusieurs) processus supplémentaire doit tourner sur le maître (wal_senders). Par rapport au mode de réplication _Hot Standby_, l'avantage avec la réplication en flux est qu'il n'est pas besoin d'attendre qu'un journal soit plein et fermé pour qu'il soit communiqué au serveur réplica. À l'inverse cela introduit une légère charge supplémentaire (au niveau CPU) puisqu'un (ou plusieurs) processus supplémentaire doit tourner sur le maître (wal_senders).
## Pré-requis ## Pré-requis
@ -76,7 +76,7 @@ Décommenter ou ajouter les directives suivantes dans le fichier `/etc/postgresq
hot_standby = on hot_standby = on
~~~ ~~~
Créer un fichier `recovery.conf` situé dans le datadir avec les info suivantes : Créer un fichier `recovery.conf` situé dans le datadir avec les infos suivantes :
~~~ ~~~
standby_mode = 'on' standby_mode = 'on'
@ -143,8 +143,35 @@ Il est nécessaire que ce fichier appartienne à l'utilisateur _postgres_, notam
* redémarrer PostgreSQL sur le réplica. * redémarrer PostgreSQL sur le réplica.
## Administration ## Administration
### Création d'un slot de réplication physique pour éviter un décrochage entre le primaire et le secondaire
Pour éviter qu'il y ait un décrochage entre le primaire et le secondaire, dans le cas où le secondaire soit stoppé quelques minutes ou qu'il soit très chargé par des requêtes, on crée un slot de réplication physique sur le primaire comme ceci :
~~~
postgres=# SELECT pg_create_physical_replication_slot('nom_du_secondaire');
~~~
Sur le secondaire, on rajoute la variable *primary_slot_name* dans le fichier recovery.conf (version <=11) ou postgresql.conf en v12 avec la mention du slot a utilisé :
~~~
primary_slot_name = 'nom_du_secondaire'
~~~
On redémarre postgresql sur le secondaire.
**Attention:** Si on doit stopper le secondaire pendant un temps assez long, il faut supprimer le slot de réplication physique, sinon les WAL vont s'accumuler sur le primaire, ce qui peu crée un danger en cas de saturation de l'espace disque.
Pour supprimer un slot de réplication :
~~~
postgres=# SELECT pg_drop_replication_slot ('nom_du_secondaire');
~~~
Il est donc impératif de supprimer un slot de réplication si le secondaire a été désactivé ou hors ligne un certain temps, quitte à devoir reconstruire le secondaire complétement.
### Monitoring ### Monitoring
Plusieurs possibilités pour surveiller la réplication : Plusieurs possibilités pour surveiller la réplication :