POSTGRESQL

De TwisterWiki
Aller à : navigation, rechercher

Réplication Master / Slave

Lexique

  • WAL
les WAL (Write-Ahead Logs) xlogs sont en fait les journaux de transactions (16 Mo par défaut), dans le cas d'une réplication ils sont transférés au slave.
  • wal_level
définit le niveau de richesse des informations sauvegardées dans les WAL. Défini à hot_standby, il permettra au Slave de répondre aux requêtes en lecture seule. 
  • hot_standby on/off
s'active sur le master et le slave mais n'est pris en compte que par le slave. En cas de bascule le master devenant slave il faut ce paramètre sur les 2 serveurs
  • wal_keep_segments
nombre de journaux de transaction a conserver, il faut en conserver suffisemment pour que le slave puisse les récupere en cas d'incident sur le salve
  • trigger_file
si ce fichier est présent postgres stoppera la restauration et interrompra donc la réplication
  • standby_mode = on
la restauration se fait continuellement.

configuration sur le master et le slave

  • postgresql.conf
wal_level = hot_standby
max_wal_senders = 1
wal_keep_segments = 256
checkpoint_segments = 8
hot_standby = on

configuration sur le master

  • Création du user/rôle à utiliser pour la réplication
su - postgres
psql -c "CREATE USER mon_user_replication REPLICATION LOGIN CONNECTION LIMIT 1 ENCRYPTED PASSWORD 'motdepasse';"
  • fichier pg_hba.conf
hostssl replication mon_user_replication ip_du_slave/32 md5
  • redémarrage de postgres pour prendre en compte le paramétrage
/etc/init.d/postgres {stop|start|restart}

configuration du slave

  • arrêt de postgres
/etc/init.d/postgres {stop|start|restart}
  • modification pg_hba.conf
hostssl replication mon_user_replicationn ip_du_master/32 md5

lancement de la synchro

su - postgres rm -fr /var/lib/postgresql/x.x/main

pg_basebackup -h ip_du_master -D /var/lib/postgresql/x.x/main -U mon_user_replicationn -v -P --xlog

  • fichier recovery.conf
    • éditer le fichier /var/lib/poostgres/x.x/main/recover.conf
standby_mode = on
primary_conninfo = 'host=ip_du_master port=5432 user=mon_user_replication password=motdepasse sslmode=require'
trigger_file = '/var/lib/postgresql/x.x/postgresql.trigger'

commandes utiles

  • réaliser un dump
pg_dump --table {ma-table} -U {user}  -f {mon-fichier-dump.sql}
  • Réaliser un dump avec 1 fichier par table
pg_dump --table {ma-table} -U {user} -Fd -f {dump_dir}
  • Importer une base ou un script sql
psql -d {ma-database} -f {mon-fichier-dump.sql}
  • Liste des requêtes en cours
SELECT datname,usename,procpid,client_addr,waiting,query_start,current_query FROM pg_stat_activity;
  • Liste des locks
select * from pg_locks;