Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
J'ai une question concernant la sauvegarde à chaud avec Postgres (v9.5 et plus). Une fois que la commande pg_start_backup() a été exécutée, on peut copier tous les fichiers de l'instance nécessaires à une restauration. Sachant que pendant la sauvegarde les écritures se font toujours dans la répertoire data, comment Postgres fait-il pour que les fichiers copiés soient utilisables alors que potentiellement ils peuvent être modifiés pendant la copie ? J'ai lu que pg_start_backup force des "full page writes" (activé par défaut) jusqu'à l'exécution de pg_stop_backup(), c'est grâce à cela que lors de la restauration il peut remettre les fichiers (notamment ceux des tables par exemple) comme il faut ? En réécrivant en entier les blocks à restaurer ?
Merci.
Coridalement.
Dernière modification par Juju (19/03/2018 17:00:44)
Hors ligne
Bonjour,
Les fichiers ne sont pas utilisables ni cohérents en l'état. Ils le deviennent en ré-appliquant les modifications apportées dans ces fichiers qui ont été tracées dans les journaux de transaction. Cela fonctionne parce que:
- postgres écrit forcément chaque modification dans les journaux de transaction (du moins avec un wal_level compatible avec la sauvegarde PITR)
- et que ces modifications sont idempotentes
En résumé, si vous ne disposez pas de l'intégralité des journaux de transaction générés entre le start et le stop backup, la copie des fichiers est inutilisable.
Julien.
https://rjuju.github.io/
Hors ligne
Bonjour,
Merci pour votre réponse c'est plus clair. Effectivement sans les WAL générés pendant le backup la copie ne servira pas à grand chose
Encore merci.
Julien.
Hors ligne
Pages : 1