PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 24/01/2014 16:47:25

Lurgo
Membre

Créer un retard dans la réplication

Bonjour,

Je voudrais faire comme sur oracle avec le paramètre delay de log_archive_dest.
C'est à dire créer un décalage volontaire sur le standby.
Par exemple configurer le standby pour qu'il rejoue l'archive 5 heures après l'avoir reçu.
Précisions; Je suis en Streaming Replication, sous Redhat.
... et ça marche bien smile

Hors ligne

#2 24/01/2014 17:55:11

rjuju
Administrateur

Re : Créer un retard dans la réplication

Bonjour,

le but de la streaming replication est justement d'avoir le moins de retard possible.

Si vous voulez mettre en place un lag, il vous faudra modifier votre restore_command en y incluant un délai, par exemple avec un find -mtime -5, et désactiver la streaming replication.

Hors ligne

#3 27/01/2014 10:34:03

arthurr
Membre

Re : Créer un retard dans la réplication

Hors ligne

#4 27/01/2014 18:46:35

Lurgo
Membre

Re : Créer un retard dans la réplication

Si je désactive la Streaming Replication; je n'aurais pas ma Standby en lecture; donc aucun intérêt pour moi d'avoir un décalage dans le temps.
(Le but est de repêcher des données supprimées par erreur qq heures avant)

---------------------------------------------------------------------------------------------------------------------
Passer de la Streaming Replication au mode Archive revient à modifier les paramètres suivant;
. Du fichier postgres.conf;
wal_level = hot_standby => archive
hot_standby = on => off
. Du fichier recovery.conf;
restore_commande = 'cp -pr /mon_repo_archive/%f %p'
=>
restore_commande = 'rsync -avrc -e -i `find /mon_repo_archive/%f -type f -ctime -5` %p'
--> J'ai une FATAL erreur au lancement sad
---------------------------------------------------------------------------------------------------------------------

Existe-t-il une solution aujourd'hui?
Ou devrais-je attendre la version 9.4?

Merci pour vos recherches smile

Dernière modification par Lurgo (27/01/2014 19:08:08)

Hors ligne

#5 27/01/2014 19:17:14

rjuju
Administrateur

Re : Créer un retard dans la réplication

Vous confondez hot standby (esclave accessible en lecture seule) et streaming replication (réplication en flux en connexion directe sur le serveur).

Désactiver la streaming réplication implique uniquement d'enlever la ligne "primary_conninfo" du recovery.conf, il faut donc conserver les paramètres wal_level et le hot_standby du postgresql.conf.

Hors ligne

#6 28/01/2014 12:56:18

Lurgo
Membre

Re : Créer un retard dans la réplication

Merci Julien; Effectivement, pour enlever la STREAMING REPLICATION;
- Je commente primary_conninfo
- Je renseigne restore_command
restore_commande = 'scp -pr @mon_serveur:/mon_repo_archive/%f %p'

La réplication fonctionne bien. Mais j'ai des messages dans le log qui reviennent toutes les 5 secondes;
-----------------------------------------------------------------------------------
scp: /mon_repo_archive/mon_fichier_wal: No such file or directory
-----------------------------------------------------------------------------------
(mon_fichier_wal évolue)

D'autre part, je suis toujours à la recherche de la syntaxe idéale pour créer le décalage (5h).
Je tourne autour de rsync, find... que j'ai du mal à utiliser pour un serveur distant (@mon_serveur).

Hors ligne

#7 28/01/2014 13:29:41

gleu
Administrateur

Re : Créer un retard dans la réplication

Si vous abandonnez le Streaming Replication pour le Log Shipping, autant utiliser pg_standby. Ça vous évitera ce type de message d'erreur.

En ce qui concerne le décalage, ce sera difficile à faire. Peut-être qu'en indiquant un délai de 5h à pg_standby, vous parviendrez à ça...


Guillaume.

Hors ligne

Pied de page des forums