From: | adrien nayrat <adrien(dot)nayrat(dot)axess(at)gmail(dot)com> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | pg_start_backup et cohérence de la base |
Date: | 2014-10-06 07:58:19 |
Message-ID: | CAHf5EFQu=SUXNwsgrZOSpnj+UC6_i3Hv3hAaN6kHZdfzeWfPgw@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Bonjour,
J'ai une question à propos du backup à chaud des fichiers avec
pg_start_backup.
On trouve beaucoup d'exemples sur internet où le backup se fait en lançant
pg_start_backup. Ensuite on effectue une copie des fichiers (tar, rsync,
cp...) puis un pg_stop_backup.
pg_start_backup effectue un checkpoint et écrit un fichier backup_label
contenant le dernier checkpoint.
Au premier abord, je me suis interrogé sur la cohérence de la base si les
fichiers sont modifiés durant la copie. Durant une formation PG j'ai appris
que postgres ne supprime pas les données (c'est le vacuum qui s'en charge),
il indique juste leur validité (xmin, xmax). Ce qui, pour moi, pouvait
expliquer que la base restait cohérente.
Dernièrement je me suis demandé ce qu'il pouvait se passer si durant le
backup il y avait un vacuum (normal ou full). je pensais que la commande
devait être bloquée mais j'ai remarqué que ce n'était pas le cas.
Si on se dessine une timeline :
PG_START_BAKUP START TAR END TAR
PG_STOP_BACKUP
+ +
+ +
| |
| |
| |
| |
+------------------+---------------+--------------+------------------------+------->
|
|
|
+
VACUUM
Exemple : Au début du pg_start_backup un enregistrement a un xmin de 100,
durant le backup cet enregistrement est modifié, on se retrouve avec deux
enregistrements, le premier avec un xmin = 100 et un xmax=150, le deuxième
avec le xmin=150. Ensuite un vacuum est effectué et celui-ci supprime
l'enregistrement avec un xmin=100 (celui au début du pg_start_backup). On
se retrouve dans une situation bancale ?
En creusant je suis tombé sur cette conversation qui illustre très bien mon
interrogation
http://www.postgresql.org/message-id/CA+CZih7ehLzhHkFivPfFHs0dvf+XdUpGXVMkrOLrcULiO4_mkw@mail.gmail.com
Au fil des échanges, un intervenant explique que le backup n'est cohérent
qu'après le pg_stop_backup :
> http://www.postgresql.org/message-id/51A02AF9.9040804@vmware.com
> When you restore the backup, the database is restored to the state it
> was when pg_stop_backup() was called. What did you expect?
Comment la base peut être restaurée au point "PG_STOP_BACKUP" alors que le
TAR se termine avant?
Merci
From | Date | Subject | |
---|---|---|---|
Next Message | Guillaume Lelarge | 2014-10-06 08:13:36 | Re: [pgsql-fr-generale] pg_start_backup et cohérence de la base |
Previous Message | Sébastien Lardière | 2014-10-03 14:29:33 | Re: pertinence pgbarman / cloud |