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)
|
# (1 processus = 1 connexion)
|
||||||
max_wal_senders = 2
|
max_wal_senders = 2
|
||||||
|
|
||||||
# « niveau de verbosité » des journaux PostgreSQL. Le niveau maximum est
|
# « niveau de verbosité » des journaux PostgreSQL. Le niveau minimum
|
||||||
# nécessaire (hot_standby) pour que le réplica soit accessible en lecture.
|
# nécessaire (replica) pour que le réplica soit accessible en lecture.
|
||||||
wal_level = hot_standby
|
# 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
|
# Activation de l'archivage des WAL. Nécessaire pour pouvoir remettre en
|
||||||
# place facilement la réplication suite à un failover/switchover.
|
# 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_mode = on
|
||||||
archive_command = 'rsync %p 192.0.2.2:/srv/pg-archives/%f'
|
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
|
# 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 ;
|
* 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 :
|
* 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()"
|
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_
|
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. 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.
|
* redémarrer PostgreSQL sur le réplica.
|
||||||
|
|
||||||
## Administration
|
## Administration
|
||||||
|
|
Loading…
Reference in a new issue