Ajout methode courante pour la mise en place de la Streaming Replication
This commit is contained in:
parent
4e31d115cf
commit
079630c6a4
|
@ -41,12 +41,14 @@ listen_addresses = '*'
|
|||
# (1 processus = 1 connexion)
|
||||
max_wal_senders = 2
|
||||
|
||||
# « niveau de verbosité » des journaux PostgreSQL. Le niveau maximum est
|
||||
# nécessaire (hot_standby) pour que le réplica soit accessible en lecture.
|
||||
wal_level = hot_standby
|
||||
# « niveau de verbosité » des journaux PostgreSQL. Le niveau minimum
|
||||
# nécessaire (replica) pour que le réplica soit accessible en lecture.
|
||||
# Si une réplication logique est aussi en place il faut le niveau maximum (logical)
|
||||
wal_level = replica
|
||||
|
||||
# Activation de l'archivage des WAL. Nécessaire pour pouvoir remettre en
|
||||
# place facilement la réplication suite à un failover/switchover.
|
||||
# Ceci n'est pas obligatoire pour la mise en place d'une réplication physique
|
||||
archive_mode = on
|
||||
archive_command = 'rsync %p 192.0.2.2:/srv/pg-archives/%f'
|
||||
~~~
|
||||
|
@ -89,7 +91,7 @@ Il est nécessaire que ce fichier appartienne à l'utilisateur _postgres_, notam
|
|||
# chown postgres:postgres ~postgres/9.6/main/recovery.conf
|
||||
~~~
|
||||
|
||||
## Synchronisation initiale des données
|
||||
## Synchronisation initiale des données (Méthode obsolète)
|
||||
|
||||
* Arrêter PostgreSQL sur le réplica ;
|
||||
* sur le maître, indiquer à PostgreSQL qu'on commence une sauvegarde. Il va notamment faire un checkpoint dans son WAL courant et retourner sa position :
|
||||
|
@ -110,16 +112,32 @@ postgres$ psql -c "SELECT pg_start_backup('synchro initiale')"
|
|||
postgres$ psql -c "SELECT pg_stop_backup()"
|
||||
~~~
|
||||
|
||||
On peut également utiliser le script _pg_basebackup_ comme ceci :
|
||||
## 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/*_
|
||||
* 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 -U repl -v -P --xlog
|
||||
# sudo -u postgres pg_basebackup -h IP_MASTER -D /var/lib/postgresql/9.6/main -P -v -U repl
|
||||
~~~
|
||||
|
||||
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.
|
||||
|
||||
* Créer un fichier `recovery.conf` situé dans le datadir avec les info suivantes :
|
||||
|
||||
~~~
|
||||
standby_mode = 'on'
|
||||
primary_conninfo = 'host=192.0.2.1 user=repl password=PASSWORD application_name=foo'
|
||||
archive_cleanup_command = '/usr/lib/postgresql/9.6/bin/pg_archivecleanup /srv/pg-archives/ %r'
|
||||
recovery_target_timeline = 'latest'
|
||||
~~~
|
||||
|
||||
Il est nécessaire que ce fichier appartienne à l'utilisateur _postgres_, notamment en cas de promotion en master (car PostgreSQL va renommer le fichier en `recovery.done`) :
|
||||
|
||||
* redémarrer PostgreSQL sur le réplica.
|
||||
|
||||
## Administration
|
||||
|
|
Loading…
Reference in a new issue