Vous n'êtes pas identifié(e).
Bonjour,
Je voudrais connaître quelles sont les avantages et inconvénients de la réplication streaming par "copie des logs archivés depuis un serveur maître via rsync puis l'assimilation du serveur esclave de ces archives par la restore command" et "la copie des xlogs directement depuis le serveur esclave via la restore command" ?
cas 1:
restore_command = 'cp /u02/pgsql/admin/9.1/TITI/xlog_archives/%f %p' # e.g. 'cp /mnt/server/archivedir/%f %p'
standby_mode = on
primary_conninfo = 'host=10.156.254.182 port=5433 application_name=sync_replication' # e.g. 'host=localhost port=5432'
trigger_file = '/tmp/makeprimary.trigger'
cas 2:
restore_command = 'cp /u03/pgsql/9.1/data/TITI/%f %p' # e.g. 'cp /mnt/server/archivedir/%f %p'
standby_mode = on
primary_conninfo = 'host=10.156.254.182 port=5433 application_name=sync_replication' # e.g. 'host=localhost port=5432'
trigger_file = '/tmp/makeprimary.trigger'
Merci pour votre éclairage.
Hors ligne
Je ne comprends pas votre question. Pourriez-vous donner plus de détails ?
Si c'est "quelles sont les avantages/inconvénients" de la streaming replication par rapport au seul archivage des journaux de transactions, l'avantage est très simple : un esclave beaucoup plus fréquemment mis à jour. Mais je ne suis pas sûr que ce soit votre demande.
Guillaume.
Hors ligne
En fait dans la configuration de la streaming replication, il est possible de spécifier que l'on utilise les wals archivés ou les wals. Je voulais connaître les avantages et les inconvénients de ces 2 méthodes ?
Hors ligne
Désolé, je ne comprends toujours pas
Vous utilisez des WAL forcément archivés.
Guillaume.
Hors ligne
je ne suis pas d'accord;
dans la restore command, pour le 2eme cas: je spécifie la restore_command = 'cp /u03/pgsql/9.1/data/TITI/%f %p' et mes logs archivés sont localisés sur mon serveur primaire dans /u02/pgsql/admin/9.1/TITI/xlog_archives/. J'en déduis que ce sont les fichiers contenus dans x_log en non ceux ds xlog_archives qui sont utilisés.
Alors que dans le 1er cas, je copie effectivement depuis le serveur primaire mes logs archivés avec rsync, et je spécifie dans le serveur esclave les les assimiler via la cmde : cp /u02/pgsql/admin/9.1/TITI/xlog_archives/%f
C plus clair; j'ai peut être mal compris une notion.
Plus clair ?
Hors ligne
Quel est l'intérêt d'utiliser les fichiers contenus dans les xlog_archives par rapport aux fichiers contenus dans les pg_xlog ?
Hors ligne
Je ne sais pas à quoi correspond le répertoire TITI donc pour moi, c'est une autre archive. Les journaux non archivés sont dans le répertoire pg_xlog et tout journal ailleurs que dans pg_xlog est un journal archivé.
D'autre part, vous ne devez pas utiliser les fichiers qui se trouvent dans le pg_xlog du maître pour votre restore_command. Si jamais PostgreSQL a un brusque saut d'activité, il pourrait recycler des journaux que vous n'auriez pas intégré. De toute façon, comment pouvez vous savoir dans ce cas que le journal est prêt à être intégré ?
De toute façon, c'est très clair : vous devez passer par l'archivage des journaux de transactions.
Guillaume.
Hors ligne
Merci de votre réponse très pertinente.
En réponse à votre message:
TITI est le nom de mon instance de test.
je définis :
/u03/pgsql/9.1/data/TITI comme mon PGDATA
je définis :
u02/pgsql/admin/9.1/TITI/xlog_archives/ comme mon répertoire des wals archivés de mon instance TITI.
Si PostgreSQL a un brusque saut d'activité, il ne devrait pas y avoir de soucis car je suis en mode synchrone.
>>De toute façon, c'est très clair : vous devez passer par l'archivage des journaux de transactions.
et pourtant le mécanisme fonctionne à partir de pg_xlog en paramétrant restore_command = 'cp /u03/pgsql/9.1/data/TITI/%f %p'
est-ce une anomalie postgreSQL ?
Hors ligne
L'anomalie se trouve dans votre configuration ou dans vos scripts. Vous dites que /u03/pgsql/9.1/data/TITI/ est votre répertoire de données. Soit. Donc votre restore_command (cp /u03/pgsql/9.1/data/TITI/%f %p) récupère les journaux à la base du répertoire des données de l'esclave. Cela sous-entend que vous archivez vos journaux de transactions dans /u03/pgsql/9.1/data/TITI/.
Guillaume.
Hors ligne
Le restore_command indique ou copier les journaux de transactions sur le serveur esclave. Dés lors, l'esclave va aller chercher sur le maître les infos qui sont dans PGDATA/%f et les copie dans %p. dans mon cas, il prend les pg_xlog du maître et non les xlog_archives.
Je vais donc me conformer à utiliser le répertoire xlog_archives comme source des wals pour la réplication.
Hors ligne