Comment
sauvegarder
correctement vos
données
Lætitia Avrot
Mars 2021 - Version 1.0
© Copyright EnterpriseDB Corporation, 2020. All rights reserved.
2
Lætitia Avrot
• Senior Database Consultant chez EDB
• Contributrice Postgres
• Trésorière de PostgreSQL Europe
Qui suis-je ?
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
3
Ordre du jour
• Perte de données
• Exports logiques
• Standbys
• WALs et Recovery
• Snapshots VM/Disques
• Sauvegardes physique
• Conclusion
Perte de
données
Robert Haas, VP, Chief Database Scientist chez EDB, 2019/09/23
Si l'Étoile de la Mort arrive et
fait subir à la Terre ce qu’elle a
fait à Alderaan, presque tout le
monde perdra des données.
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
6
• C’est impossible
• Essayons une autre approche
• Peut-on recréer les données/transactions perdues ?
• Combien coûte une perte de données d’une seconde/minute/heure/jour/semaine ?
• Combien de temps votre application peut-elle être arrêtée ?
• Combien de temps pouvez-vous vous permettre pour relancer la production ?
À propos de zéro perte de données...
À la recherche des licornes
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
7
RTO/RPO
Définir les contraintes
Recovery Time Objective Recovery Point Objective
“C’est un objectif de temps et de niveau
de service dans les limites duquel un
processus métier doit pouvoir être
restauré après un désastre ou une
interruption de service afin d'éviter des
conséquences inacceptables pour
l’entreprise.”
“Cet objectif est défini par le plan de
continuité d'activité. C’est la période
maximale pendant laquelle des données
(ou des transactions) peuvent être
perdues à la suite d’un incident majeur.”
Quotes from Wikipedia
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
8
• Corruption de données
• Panne de serveur
• Panne réseau
• Tout désastre massif (Feu, seisme, bombe, tsunami, tormade…)
• Personne supprimant les données (délibérément ou par erreur)
Scenarios de perte de données
Exports
logiques
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
10
• C’est un export des données dans un format qui peut être portable. C’est un snapshot des
données.
• Exemples:
• Fichiers csv
• Fichiers SQL
• Les outils Postgres recommandés sont pg_dump et pg_dumpall
Qu’est-ce qu’un export logique ?
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
11
La Perte de données entre le moment de l’export et le moment d'arrêt de la production
n’est pas un problème
Avoir une interruption de service durant les opérations de restauration et post-
restore(vacuum full analyze) n’est pas un problème
Vous jurez solennellement que vous testerez les opérations de restauration et post-restore
fréquemment
Quand un export logique suffit...
Toutes les conditions suivantes doivent être validées
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
12
Exemple:
• Vous exportez toutes les données à 3 heures tous les matins. L’import prend 2 heures. Les
opérations de post-restore durent 1 heure. Un incident a lieu à 15 heures.
• Quelles transactions seront perdues ? Quand la base de données sera-t-elle à nouveau
accessible ?
Quand un export logique suffit...
➔ Toutes les transactions entre 3:00 and 15:00 seront perdues.
➔ La base de données devrait être à nouveau disponible autour de 18:00, soit 3 heures
d’interruption de service.
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
13
Vérifier régulièrement que la perte de données reste dans des limites acceptables
Essayer régulièrement d’importer l’export généré pour vérifier que :
• Il n’est pas corrompu;
• La durée de la restauration est toujours acceptable;
• La durée des opérations post-restore est toujours acceptable.
Que faire si on n’utilise que des exports
logiques comme sauvegarde ?
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
14
Comment utiliser pg_dump/pg_restore
Exporter Importer
• Une base de données
pg_dump -h <host> -p <port> -U <user> <dbname>
• Au format SQL/Custom
pg_dump <connection options> -Fp/-Fc > export.sql/.dmp
• Une table/Un schema
pg_dump <connection options> -t/-n <name>
• Seulement la structure
pg_dump <connection options> -s
• SQL
psql <connection options> -f export.sql
• Format custom
pg_restore <connection options> export.dmp
pg_restore export.dmp > export.sql
• Une table/Un schema
pg_restore <connection options> -t/-n <name> export.dmp
• Seulement la structure
pg_restore <connection options> -s
Standby
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
16
• Une autre instance identique à la reine
• Standby physique
• Standby logique
• En perpetuel recovery (application des fichiers WAL)
• Ouverte en lecture seule ou pas
Qu’est-ce qu’une standby?
Aussi appelée replica physique, princesse/ouvrière, secondaire, tertiaire
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
17
Perdre certaines ou toutes les données n’est pas un problème
Exemple:
• Un ancien employé supprime la base de données.
• Un hacker infiltre le système et supprime la base de données.
• Le•a DBA supprime le répertoire PGDATA sur le primaire
au lieu du secondaire
Quand une standby suffit...
Toutes les conditions suivantes doivent être validées
➔ Toutes vos données
Combien de données
allez vous perdre ?
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
18
• Configurer la reine pour la réplication
• Faire une sauvegarde physique de la reine
• Restaurer la sauvegarde physique sur la princesse/l'ouvrière
• Configurer la princesse/l'ouvrière pour qu’elle ne se prenne pas pour une reine
• Démarrer la princesse/l'ouvrière
• Vérifier que la réplication fonctionne
Comment creer une standby ?
Etapes non detaillees
WALs et
Recovery
Utilisateur
Instance
Mémoire
Processus
Fichiers de données
DML
Les WALs un jour normal
Les WALs un jour normal
Utilisateur
Instance
Mémoire
Processus
Fichiers de données
Les WALs un jour normal
Utilisateur
Instance
Mémoire
Processus
Fichiers de données
Commit
User
Les WALs un jour normal
Utilisateur
Instance
Mémoire
Processus
Fichiers de données
Les WALs un jour normal
Utilisateur
Instance
Mémoire
Processus
Fichiers de données
Commit
OK
Les WALs un jour normal
Utilisateur
Instance
Mémoire
Processus
Fichiers de données
Checkpoint
Les WALs un jour normal
Instance
Mémoire
Processus
Fichiers de données
Recovery après un crash
Instance
Mémoire
Processus
Fichiers de données
Recovery après un crash
Checkpoint
Instance
Mémoire
Processus
Fichiers de données
Snapshots de
VM ou de
disques
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
30
• Un ensemble de fichiers à un moment donné
• Snapshot Offline
• Snapshots Online
• Il intervient sur une couche en-dessous de la base de
données
Qu’est-ce qu’un snapshot de VM/disque ?
Un SGBDR peut à un moment donné avoir des fichiers
inconsistants sur disque. Vous devez vous souvenir de toujours
mettre l’instance en mode backup pour que le succès de votre
restore ne tienne pas à la chance. Vous devrez aussi archiver les
fichiers WAL.
VM
Storage
OS
Database
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
31
Vous comprenez vraiment ce que vous faites
Vous ne voulez pas d’une autre option
Vous jurez solennellement que vous testerez la restauration et le recovery fréquemment
Vous archiverez aussi les fichiers WAL entre le début du snapshot et maintenant
Quand un snapshot de VM/disque suffit...
Toutes les conditions suivantes doivent être validées
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
32
• Prendre le snapshot offline
• Prendre le snapshot online
• Faire pg_start_backup(‘label’, false, false) avant
• Faire pg_stop_backup(false, true)après
• Ne pas oublier les fichiers backup_label et tablespace_map
Quand l’instance est en mode backup, il est possible qu’elle génère plus de WALs
Comment faire des snapshots de VM/Disques
utilisables ?
Sauvegardes
physiques
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
34
• Sauvegarde physique offline
• Sauvegarde physique online
• Plusieurs outils
Qu’est-ce qu’une sauvegarde physique ?
C’est un ensemble de fichiers consistants ou inconsistants qui va permettre de recréer le cluster à
partir de rien.
• pg_basebackup
• Barman
• pgBackRest
• ...
Créer une sauvegarde à partir de laquelle
l'instance pourra faire un recovery est
complexe.
N’utilisez pas vos propres scripts!
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
35
Vous avez l’espace de stockage nécessaire
Vous pouvez vous permettre le temps de restauration et de recovery
Vous jurez solennellement que vous testerez la restauration et le recovery fréquemment
Vous archiverez tous les fichiers WAL entre la sauvegarde la plus vieille et maintenant
Quand une sauvegarde physique suffit...
Toutes les conditions suivantes doivent être validées
Conclusion
© Copyright EnterpriseDB Corporation, 2021. All rights reserved.
37
Comparons
Exports logiques Standbys
Snapshots de
VM/Disque
Sauvegardes
physiques
• Portable
• Granularite plus fine
• Disponible
facilement
• Disponible rapidement
• Perte de données
reduite
• Très bons outils
disponibles
• Perte de données
reduite
• Restauration lente
• Grande perte de
données
• Tout le cluster
• Enorme perte de
données
(potentielle)
• Tout le cluster
• Pas de gestion des
WAL
• Il faut encore faire le
recovery
• Peut entraîner des
désastres
• Tout le cluster
• Il faut encore faire le
recovery
• Restauration lente
© Copyright EnterpriseDB Corporation, 2020. All rights reserved.
38
Des questions?

Comment sauvegarder correctement vos données

  • 1.
  • 2.
    © Copyright EnterpriseDBCorporation, 2020. All rights reserved. 2 Lætitia Avrot • Senior Database Consultant chez EDB • Contributrice Postgres • Trésorière de PostgreSQL Europe Qui suis-je ?
  • 3.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 3 Ordre du jour • Perte de données • Exports logiques • Standbys • WALs et Recovery • Snapshots VM/Disques • Sauvegardes physique • Conclusion
  • 4.
  • 5.
    Robert Haas, VP,Chief Database Scientist chez EDB, 2019/09/23 Si l'Étoile de la Mort arrive et fait subir à la Terre ce qu’elle a fait à Alderaan, presque tout le monde perdra des données.
  • 6.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 6 • C’est impossible • Essayons une autre approche • Peut-on recréer les données/transactions perdues ? • Combien coûte une perte de données d’une seconde/minute/heure/jour/semaine ? • Combien de temps votre application peut-elle être arrêtée ? • Combien de temps pouvez-vous vous permettre pour relancer la production ? À propos de zéro perte de données... À la recherche des licornes
  • 7.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 7 RTO/RPO Définir les contraintes Recovery Time Objective Recovery Point Objective “C’est un objectif de temps et de niveau de service dans les limites duquel un processus métier doit pouvoir être restauré après un désastre ou une interruption de service afin d'éviter des conséquences inacceptables pour l’entreprise.” “Cet objectif est défini par le plan de continuité d'activité. C’est la période maximale pendant laquelle des données (ou des transactions) peuvent être perdues à la suite d’un incident majeur.” Quotes from Wikipedia
  • 8.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 8 • Corruption de données • Panne de serveur • Panne réseau • Tout désastre massif (Feu, seisme, bombe, tsunami, tormade…) • Personne supprimant les données (délibérément ou par erreur) Scenarios de perte de données
  • 9.
  • 10.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 10 • C’est un export des données dans un format qui peut être portable. C’est un snapshot des données. • Exemples: • Fichiers csv • Fichiers SQL • Les outils Postgres recommandés sont pg_dump et pg_dumpall Qu’est-ce qu’un export logique ?
  • 11.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 11 La Perte de données entre le moment de l’export et le moment d'arrêt de la production n’est pas un problème Avoir une interruption de service durant les opérations de restauration et post- restore(vacuum full analyze) n’est pas un problème Vous jurez solennellement que vous testerez les opérations de restauration et post-restore fréquemment Quand un export logique suffit... Toutes les conditions suivantes doivent être validées
  • 12.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 12 Exemple: • Vous exportez toutes les données à 3 heures tous les matins. L’import prend 2 heures. Les opérations de post-restore durent 1 heure. Un incident a lieu à 15 heures. • Quelles transactions seront perdues ? Quand la base de données sera-t-elle à nouveau accessible ? Quand un export logique suffit... ➔ Toutes les transactions entre 3:00 and 15:00 seront perdues. ➔ La base de données devrait être à nouveau disponible autour de 18:00, soit 3 heures d’interruption de service.
  • 13.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 13 Vérifier régulièrement que la perte de données reste dans des limites acceptables Essayer régulièrement d’importer l’export généré pour vérifier que : • Il n’est pas corrompu; • La durée de la restauration est toujours acceptable; • La durée des opérations post-restore est toujours acceptable. Que faire si on n’utilise que des exports logiques comme sauvegarde ?
  • 14.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 14 Comment utiliser pg_dump/pg_restore Exporter Importer • Une base de données pg_dump -h <host> -p <port> -U <user> <dbname> • Au format SQL/Custom pg_dump <connection options> -Fp/-Fc > export.sql/.dmp • Une table/Un schema pg_dump <connection options> -t/-n <name> • Seulement la structure pg_dump <connection options> -s • SQL psql <connection options> -f export.sql • Format custom pg_restore <connection options> export.dmp pg_restore export.dmp > export.sql • Une table/Un schema pg_restore <connection options> -t/-n <name> export.dmp • Seulement la structure pg_restore <connection options> -s
  • 15.
  • 16.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 16 • Une autre instance identique à la reine • Standby physique • Standby logique • En perpetuel recovery (application des fichiers WAL) • Ouverte en lecture seule ou pas Qu’est-ce qu’une standby? Aussi appelée replica physique, princesse/ouvrière, secondaire, tertiaire
  • 17.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 17 Perdre certaines ou toutes les données n’est pas un problème Exemple: • Un ancien employé supprime la base de données. • Un hacker infiltre le système et supprime la base de données. • Le•a DBA supprime le répertoire PGDATA sur le primaire au lieu du secondaire Quand une standby suffit... Toutes les conditions suivantes doivent être validées ➔ Toutes vos données Combien de données allez vous perdre ?
  • 18.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 18 • Configurer la reine pour la réplication • Faire une sauvegarde physique de la reine • Restaurer la sauvegarde physique sur la princesse/l'ouvrière • Configurer la princesse/l'ouvrière pour qu’elle ne se prenne pas pour une reine • Démarrer la princesse/l'ouvrière • Vérifier que la réplication fonctionne Comment creer une standby ? Etapes non detaillees
  • 19.
  • 20.
  • 21.
    Les WALs unjour normal Utilisateur Instance Mémoire Processus Fichiers de données
  • 22.
    Les WALs unjour normal Utilisateur Instance Mémoire Processus Fichiers de données
  • 23.
    Commit User Les WALs unjour normal Utilisateur Instance Mémoire Processus Fichiers de données
  • 24.
    Les WALs unjour normal Utilisateur Instance Mémoire Processus Fichiers de données
  • 25.
    Commit OK Les WALs unjour normal Utilisateur Instance Mémoire Processus Fichiers de données
  • 26.
    Checkpoint Les WALs unjour normal Instance Mémoire Processus Fichiers de données
  • 27.
    Recovery après uncrash Instance Mémoire Processus Fichiers de données
  • 28.
    Recovery après uncrash Checkpoint Instance Mémoire Processus Fichiers de données
  • 29.
  • 30.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 30 • Un ensemble de fichiers à un moment donné • Snapshot Offline • Snapshots Online • Il intervient sur une couche en-dessous de la base de données Qu’est-ce qu’un snapshot de VM/disque ? Un SGBDR peut à un moment donné avoir des fichiers inconsistants sur disque. Vous devez vous souvenir de toujours mettre l’instance en mode backup pour que le succès de votre restore ne tienne pas à la chance. Vous devrez aussi archiver les fichiers WAL. VM Storage OS Database
  • 31.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 31 Vous comprenez vraiment ce que vous faites Vous ne voulez pas d’une autre option Vous jurez solennellement que vous testerez la restauration et le recovery fréquemment Vous archiverez aussi les fichiers WAL entre le début du snapshot et maintenant Quand un snapshot de VM/disque suffit... Toutes les conditions suivantes doivent être validées
  • 32.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 32 • Prendre le snapshot offline • Prendre le snapshot online • Faire pg_start_backup(‘label’, false, false) avant • Faire pg_stop_backup(false, true)après • Ne pas oublier les fichiers backup_label et tablespace_map Quand l’instance est en mode backup, il est possible qu’elle génère plus de WALs Comment faire des snapshots de VM/Disques utilisables ?
  • 33.
  • 34.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 34 • Sauvegarde physique offline • Sauvegarde physique online • Plusieurs outils Qu’est-ce qu’une sauvegarde physique ? C’est un ensemble de fichiers consistants ou inconsistants qui va permettre de recréer le cluster à partir de rien. • pg_basebackup • Barman • pgBackRest • ... Créer une sauvegarde à partir de laquelle l'instance pourra faire un recovery est complexe. N’utilisez pas vos propres scripts!
  • 35.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 35 Vous avez l’espace de stockage nécessaire Vous pouvez vous permettre le temps de restauration et de recovery Vous jurez solennellement que vous testerez la restauration et le recovery fréquemment Vous archiverez tous les fichiers WAL entre la sauvegarde la plus vieille et maintenant Quand une sauvegarde physique suffit... Toutes les conditions suivantes doivent être validées
  • 36.
  • 37.
    © Copyright EnterpriseDBCorporation, 2021. All rights reserved. 37 Comparons Exports logiques Standbys Snapshots de VM/Disque Sauvegardes physiques • Portable • Granularite plus fine • Disponible facilement • Disponible rapidement • Perte de données reduite • Très bons outils disponibles • Perte de données reduite • Restauration lente • Grande perte de données • Tout le cluster • Enorme perte de données (potentielle) • Tout le cluster • Pas de gestion des WAL • Il faut encore faire le recovery • Peut entraîner des désastres • Tout le cluster • Il faut encore faire le recovery • Restauration lente
  • 38.
    © Copyright EnterpriseDBCorporation, 2020. All rights reserved. 38 Des questions?