diff --git a/HowtoPostgreSQL/ReplicationPhysique.md b/HowtoPostgreSQL/ReplicationPhysique.md index 55dfea7a..0e9309bd 100644 --- a/HowtoPostgreSQL/ReplicationPhysique.md +++ b/HowtoPostgreSQL/ReplicationPhysique.md @@ -74,7 +74,11 @@ hostssl replication repl 192.0.2.2/32 md5 ## Configuration du serveur réplica -> **Note** : Cette configuration est relative au serveur réplica, mais elle doit également être reprise à l'identique sur le serveur maître, en renommant le fichier `recovery.conf` pour qu'il ne soit pas pris en compte. +> *Note* 1 : A partir de Postgresql 10 il n'est plus necessaire de modifié la variable hot_standby, ni de créer au préalable le fichier recovery.conf, voir directement la section **Synchronisation initiale des données (Méthode courante)** + +> *Note* 2 : Cette configuration est relative au serveur réplica, mais elle doit également être reprise à l'identique sur le serveur maître, en renommant le fichier `recovery.conf` pour qu'il ne soit pas pris en compte. + +> *Note* 3 : En Debian 8 ou 9 et postgresql >v9 on ferra comme ceci : Décommenter ou ajouter les directives suivantes dans le fichier `/etc/postgresql/9.6/main/postgresql.conf` : @@ -122,18 +126,24 @@ postgres$ psql -c "SELECT pg_stop_backup()" ## Synchronisation initiale des données (Méthode courante) * Arrêter PostgreSQL sur le réplica ; -* Supprimer le contenu de _/var/lib/postgresql/9.6/main/*_ +* Supprimer le contenu de `/var/lib/postgresql///*` * Autorisé la connexion SSH par clé, de l'utilisateur postgres depuis le master vers le réplica, et également depuis le réplica vers le master. * Faire la syncho des données avec pg_basebackup comme ceci : ~~~ -# sudo -u postgres pg_basebackup -h IP_MASTER -D /var/lib/postgresql/9.6/main -P -v -U repl +# sudo -u postgres pg_basebackup -h IP_PRIMAIRE -D /var/lib/postgresql// -P -R -v -U repl ~~~ +L'option -D indique le PGDATA du secondaire. + +L'option `-R` s'occupe de créer le fichier recovery.conf (ou postgresql.auto.conf si version suppérieure à 11) dans /var/lib/postgresql/// + pg_basebackup s'occupe de faire un checkpoint du WAL courant (pg_start_backup) de transférer les fichiers des bases puis d'exécuter la fonction SQL _pg_stop_backup_ -Pendant le transfert des fichiers, la base a pu subir des modifications. Le paramètre --xlog ordonne à _pg_basebackup_ de transférer également les derniers journaux de transactions pour les rejouer sur le réplica. +Pendant le transfert des fichiers, la base a pu subir des modifications. C'est pourquoi pg_basebackup attend que le primaire et fait un checkpoint dans sont WAL avant de tranférés les données, par défaut un checkpoint est fait toutes les 5 minutes, donc la commande pg_basebackup peux prendre 5 minutes avant de commencer a synchronisé les données. + +Si on veux forcer un checkpoint sur le primaire, on peux utilisé la commande pg_basebackup avec l'option `-c fast` * Créer un fichier `recovery.conf` situé dans le datadir avec les info suivantes :