Re: Restauration d'une sauvegarde PITR avec recovery_target_time
Marc Cousin <[email protected]> Sun, 19 Jun 2016 08:59:51 +0200
| Newsgroups | gmane.comp.db.postgresql.french |
|---|---|
| Message-ID | <[email protected]> |
On 19/06/2016 00:07, Éric de la Musse wrote: > Le Sat, 18 Jun 2016 22:27:14 +0200, > Dimitri Fontaine <[email protected]> a écrit : > >> Éric de la Musse <[email protected]> writes: >>> Mais la restauration s'effectue jusqu'à 2016-06-18 >>> 05:00:02.655446+02 ...soit 2 heures de plus que l'objectif fixé. >> À quelle heure s'est terminé le backup depuis lequel le PITR est >> effectué ? > Quelques secondes après avoir commencé. La base est quasi vide > aujourd'hui. > >> Le recovery ne peut pas s'arrêter avant d'avoir atteind un >> point de consistence dans les WAL et par construction ce point ne peut >> pas exister en plein milieu d'un backup… il faut rejouer au moins les >> WAL produits pendant le backup pour atteindre le point au plus tôt… > A priori le problème ne se situe donc pas là. Et puis le décalage entre > l'heure restaurée et l'heure demandée est pile 2 heures. Cela > correspond au décalage avec UTC. Ce n'est probablement pas un hasard. > > Pour compléter l'exposé je précise quand même que la restauration n'a > pas lieu sur le serveur d'origine des données mais via un container > docker. Le but est de mettre en place une procèdure de restauration > continue qui valide à intervalle périodique (tous les jours) que la > restauration fonctionne (un peu sur le principe de la CI en matière de > dev). Pour ca je suis en train de créer une image docker. > > Tout ca pour dire que la restauration s'effectue via un container > qui n'a pas forçément la même configuration que le serveur de > prod (bien sûr c'est la même architecture pour que le cluster soit > compatible entre le serveur source et celui de restauration). > > J'ai imaginé aussi que le problème pouvait provenir de la date > système/time zone qui différait effectivement entre les 2 serveurs: la > prod sur Europe/Paris et le container sur UTC. Mais même en > positionnant le container sur Europe/Paris ca n'a pas changé le > comportement. Et puis on voit bien au lancement de la restauration que > l'heure du backup est reconnue correctement. Donc a priori j'ai rejeté > cette piste. > Pour essayer l'explication simple avant de chercher compliqué, il ne peut pas ne pas y avoir eu de transaction qui ait commité entre 3h et 5h du matin ? Parce que le recover regarde le timestamp des transactions et s'arrête juste avant la transaction qui ferait dépasser la date demandée… ça se trouve, il y avait un gros batch d'insertion dans une grosse transaction qui a généré tous ces journaux, mais qui n'a commité qu'à 5h du matin. Ça serait un gros hasard, qu'il n'y ait qu'une seule transaction, qui ait commité à presque 5h pile, mais bon, d'habitude le recover ça marche plutôt bien :) -- Envoi via la liste pgsql-fr-generale ([email protected])