Re: Restauration d'une sauvegarde PITR avec recovery_target_time

From: Marc Cousin <cousinmarc(at)gmail(dot)com>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Restauration d'une sauvegarde PITR avec recovery_target_time
Date: 2016-06-19 10:16:02
Message-ID: 894194e4-c53e-d15c-307a-753edebef2b2@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

On 19/06/2016 11:44, Éric de la Musse wrote:
> Le Sun, 19 Jun 2016 08:59:51 +0200,
> Marc Cousin <cousinmarc(at)gmail(dot)com> a écrit :
>
>> 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 ?
> Bien vu ! C'est exactement ca. La base actuellement est quasi vide et un
> cron passe dessus tous les jours à .... 5 heures pour effectuer des
> taches administratives.
>
> En fait il ne se passe rien entre 3 heures et 5 heures du matin, y
> compris a priori une transaction en cours non commitée.
>
>> 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…
> Oui c'est bien le comportement constaté. On pourrait peut être
> s'attendre à ce qu'il s'arrête dès que l'heure est atteinte
> puisqu'au-delà il n'est pas censé prendre les commits qui surviennent
> même si les transactions ont été initiées avant.
En fait ça ne serait pas possible: dans le journal, tu as les
modifications de toutes les transactions qui sont entrelacées… Il n'y a
pas moyen de savoir quand chacune va se terminer, tant qu'on n'a pas
atteint le point où elle se termine dans le journal (c'est là qu'on a
l'horodatage).

Si on reprend ton cas, le moteur va devoir tout rejouer jusqu'à la
première transaction qui commit juste après le point demandé (celle de
5h), en excluant cette transaction.

En simplifiant un peu, ce que Postgres fait donc, c'est qu'il rejoue
tout le contenu du journal jusqu'à ce point, et au lieu de commiter
cette dernière transaction, il l'annule (avec toutes les autres
transactions encore en cours à ce point), ce qui amène la base à l'état
«juste avant». C'est exactement pareil dans Oracle par exemple. Mais
c'est vrai que le message est un peu préoccupant dans ton cas
particulier, vu le trou béant entre 3h et 5h :)

--
Envoi via la liste pgsql-fr-generale (pgsql-fr-generale(at)postgresql(dot)org)

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Éric de la Musse 2016-06-19 10:41:33 Re: Restauration d'une sauvegarde PITR avec recovery_target_time
Previous Message Éric de la Musse 2016-06-19 09:44:03 Re: Restauration d'une sauvegarde PITR avec recovery_target_time