J'ai une base de données de 3 Go qui est constamment modifiée et j'ai besoin de faire des sauvegardes sans arrêter le serveur (Postgres 8.3).
Mon pg_dump s'exécute pendant 5 minutes. Que se passe-t-il si les données sont modifiées pendant le processus? Est-ce que je reçois des sauvegardes cohérentes? Je ne veux pas savoir quand une catastrophe se produit.
La documentation de Postgres http://www.postgresql.org/docs/8.3/static/app-pgdump.html ne dit rien à ce sujet.
postgresql
romain
la source
la source
Réponses:
Du manuel :
Alors oui, vous pouvez faire confiance à la sauvegarde. Bien sûr, c'est PostgreSQL, vous pouvez faire confiance à vos données dans PostgreSQL.
la source
pg_dump lance une transaction, de la même manière que toute autre requête de longue durée. La cohérence des garanties provient de l' implémentation de MVCC . Le vidage sera toujours cohérent dans ces règles.
Toutes les parties floues de MVCC sont liées à des éléments tels que les transactions de commande UPDATE devenues visibles pour les autres clients et la manière dont les verrous sont acquis. pg_dump est strict sur la commande et acquiert un verrou en lecture sur toute la base de données pour la vider. Pour la plupart des gens, c'est ce à quoi ils s'attendent et le mécanisme utilisé ne pose aucun problème. Le principal risque de simultanéité est que les clients essayant de modifier la structure de la base de données soient bloqués pendant l'exécution du dump. Cela n'a cependant pas d'incidence sur la qualité de la décharge.
la source
Le vidage commence par le réglage
TRANSACTION ISOLATION LEVEL SERIALIZABLE
.Veuillez lire le manuel sur l’ isolation de transaction et, par exemple, la discussion de la liste des utilisateurs à ce sujet .
Citation:
Fondamentalement, tout ce qui suit
pg_dump
définit le niveau d'isolation de transaction ne fait pas partie de ce vidage.Les opérations de lecture / écriture ne sont pas affectées (verrouillées) pendant cette période.
la source
D'abord désolé d'avoir répondu sur ce vieux fil. Mais de par mon expérience, je ne peux pas confirmer l'affirmation selon laquelle vous pouvez faire confiance à pg_dump /
Il y a quelques mois, je suis passé d'un projet à Postgres. Et bien sûr, j'ai fait toutes les sauvegardes avec pg_dump à partir du système live, comme suggéré. Mais après la première vérification de sauvegarde, j'ai compris que toutes les images étaient de tailles différentes. Après avoir restauré au hasard certaines d’entre elles, j’ai compris que certaines tables manquaient. J'ai donc commencé à analyser pourquoi cela se produisait et j'ai compris que si l'application superposée, par exemple les serveurs d'applications, verrouille certaines tables et que pg_dump n'attend pas leur publication. J'avais à chaque fois besoin d'arrêter le serveur pendant la période de sauvegarde, ce qui n'est pas une bonne solution.
Je cherche donc toujours un correctif, mais comme je l'ai dit, je ne suis pas du tout d'accord avec l'affirmation selon laquelle vous pouvez faire confiance à pg_dump.
la source