réplication wal : restore, boot, restore ?

From: LionelB <lionel(dot)bargeot(at)gmail(dot)com>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: réplication wal : restore, boot, restore ?
Date: 2012-08-29 12:50:32
Message-ID: CAFM+7DLMD85mAgANSB=PxM39TqyptuA9R4Xjohz8DOtLsLpk0g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour,

je cherche à mettre en place une réplication de données Master-Slave sur un
postgresql 8.4 (Debian squeeze). Après une étude rapide de l'existant mon
choix se porte sur l'utilisation des WAL (je dois pouvoir répliquer les
changements de structure de données facilement).
Aussi, j'ai réalisé plusieurs tests dont le dernier avec walmgr qui propose
une mise en oeuvre simple et rapide. (Merci à Dalibo pour sa doc :
http://www.dalibo.org/hs44_la_replication_par_les_journaux_de_transactions )

L'objectif de cette réplication n'est pas d'avoir une sauvegarde des
données, mais de pouvoir interroger le slave en lecture seule 2 à 3 heures
par jour. Aussi, après avoir initialisé le cluster sur le slave, lancé le
serveur en mode recovery et constaté que tout fonctionne je m'interroge sur
un point. Je sors du mode recovery, je me connecte à la base et je réalise
quelques requêtes en lecture seule sur les données répliquées (objectif de
départ) avec succès.
Comment reprendre ensuite le fil de l'exploitation des WAL ?
Est-ce tout simplement possible ?
La réponse à la deuxième commande "walmgr slave.ini restore" me laisse
penser qu'il faut également reprendre la procédure de backup du cluster ...
(l'intérêt de la réplication deviendrait alors limité).

Merci de me confirmer les possibilités d'utilisation de la réplication WAL
par rapport à ce besoin.
Faut-il passer par un autre fichier wal-slave.ini ? par une recopie du main
(slave) dans main.shippedxlog (slave) avant de relancer ?

Merci pour vos réponses éventuelles,

Bien cordialement

Lionel

Quelques infos sur ma config

Réponse de la commande restore à la reprise :

postgres(at)testreplication:~$ walmgr /etc/postgresql/8.4/main/wal-slave.ini
restore
2012-08-29 14:40:58,242 11370 INFO Move
/var/lib/postgresql/8.4/main.shippedxlog/data.master to
/var/lib/postgresql/8.4/main
2012-08-29 14:40:58,242 11370 CRITICAL Job replica_walmgr_slave crashed:
<type 'exceptions.OSError'>: '[Errno 2] No such file or directory'
(<traceback object at 0x2287488>: [' File
"/usr/lib/pymodules/python2.6/skytools/scripting.py", line 510, in
run_once\n return self.work()\n', ' File "/usr/bin/walmgr", line 1051,
in restore_database\n os.rename(full_dir, data_dir)\n'])

Contenu du wal-slave.ini :

[wal-slave]
job_name = replica_walmgr_slave
logfile = ~/log/wal-slave.log
use_skylog = 0

slave_data = /var/lib/postgresql/8.4/main
slave_stop_cmd = /etc/init.d/postgresql stop
slave_start_cmd = /etc/init.d/postgresql start

slave = /var/lib/postgresql/8.4/main.shippedxlog
completed_wals = %(slave)s/logs.complete
partial_wals = %(slave)s/logs.partial
full_backup = %(slave)s/data.master

keep_backups = 1
archive_command =

Contenu du wal-master.ini :

[wal-master]
job_name = raplication_walgmr_master
logfile = /var/lib/postgresql/log/wal-master.log
use_skylog = 0

master_db = dbname=postgres
master_data = /var/lib/postgresql/8.4/main
master_config = /etc/postgresql/8.4/main/postgresql.conf

slave_config = /etc/postgresql/8.4/main/wal-slave.ini
slave = slavehost:/var/lib/postgresql/8.4/main.shippedxlog

completed_wals = %(slave)s/logs.complete
partial_wals = %(slave)s/logs.partial
full_backup = %(slave)s/data.master
file_target = %(slave)s/files.master

# syncdaemon update frequency
loop_delay = 10.0
# use record based shipping available in 8.2
use_xlog_functions = 0

# periodic sync
#command_interval = 600
#periodic_command = /var/lib/postgresql/walshipping/periodic.sh

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message damien clochard 2012-08-29 13:00:25 DALIBO recrute : DBA PostgreSQL bilingue français/anglais
Previous Message Stéphane A. Schildknecht 2012-08-27 17:48:50 Version RC1 de PostgreSQL 9.2