Sauvegarder ? Pourquoi faire ?

culture générale informatique Sep 13, 2022

Hello,

Aujourd'hui, je traite la question de Kévin :

"Comment mettre en place des systèmes de backup pour les outils que je mets en place moi-même sur des serveurs (genre une base de données hehe) les backups en général c’est comment ? Sur un autre serveur, j’imagine, via un cron qui fait du rsync de fichiers importants vers un autre serveur ? Vers s3 ?"

 

 

Déjà, la première question qu'on se pose, c'est contre quoi l’on veut se protéger avec nos sauvegardes ?

On veut se protéger de la perte de notre environnement de dev ? (perte = cryptolocker, disque qui lâche, vol ...)

On veut protéger de la perte de notre environnement de prod ? (perte = crash du serveur, incidendie ala OVH, piratage ...)

On veut protéger le code source ? les bdd ?

En fonction de la réponse, les outils à utiliser ne sont pas les mêmes

Mais les principes fondamentaux restent.

La règle du 3-2-1

 

C'est tout simple :

Avoir 3 copies des données au moins

Stocker ces copies sur 2 supports différents

Garder 1 de ces copies à distance

Reprenons l'exemple de Kevin :

Je veux sauvegarder ma base de données sur mon serveur de production

Je fais un dump sur une autre partition du serveur

Je fais une copie de ce dump sur un stockage distant (FTP, S3 ...)

J'ai donc :

- 3 copies : La bdd de prod, le dump sur l'autre partition, le dump sur S3

- 2 supports différents : le disque dur de mon serveur, le stockage S3

- 1 copie à distance : S3 est décorrélé de mon serveur de prod (en partant du principe que mon serveur n'est pas sur AWS par exemple : cas de l'incendie d'OVH)

Maintenant :

- Ma BDD de prod est corrompue, j'ai le dump local pour la remettre

- Mon serveur est perdu, j'ai mon backup S3

Autre exemple :

Je veux sauvegarder mon code source qui est sur mon ordi

Je fais une copie de mon dossier sur un disque externe

Je fais une copie de mon dossier sur mon Cloud Drive

J'ai 3 copies : mon ordi, mon dd externe et mon cloud drive

J'ai 2 supports différents : mon dd (externe ou interne), mon cloud drive

J'ai 1 copie à distance : sur mon cloud drive (attention, sans synchro local à mon ordi)

Maintenant :

- mon PC crame/est cryptolocké, j'ai mon disque externe

- mon bureau brule, j'ai perdu mon PC et mon DD externe, mais j'ai ma copie Cloud Drive

Ok, c'est un bon début, j'ai un plan de sauvegarde

Exercice pour toi à la maison : Si tu utilises Git, que devient ce plan 3-2-1 ?

Comment faire ?

 

Maintenant, je dois mettre en place les "scripts pour le faire réellement" et définir une fréquence

Il est important que l'action de sauvegarde soit la plus automatisée possible.

Sinon, on trouvera toujours une raison pour ne pas le faire.

Il existe plusieurs façons : des outils qui sont faits pour ça, des scripts maison (rsync ...), ou toute autre méthode intégrée avec tes outils

La seule chose qui importe là-dedans, c'est qu’à la fin de la sauvegarde, tu dois être notifié de la bonne exécution (ou pas) des scripts. Dans tous les cas, tu dois recevoir la notification.

On ne peut pas se dire "si tout est OK, n'envoie rien" ! Comment tu sais si le script a bien tourné ?

Planifie les sauvegardes en heures creuses pour ne pas être impacté par les pertes de performances éventuelles

En ce qui concerne la fréquence, ni trop ni pas assez.

Pas assez serait : si je perds mes données tout de suite, combien de travail je suis prêt à perdre (le diff entre la panne et l'heure de la dernière sauvegarde) ?

Trop serait : si je sauvegarde à cette fréquence, combien ça va me couter en espace (la taille des Dump ...) ?

Trouve le bon compromis en fonction de tes besoins et de tes moyens.

Enfin, documente le tout :

Qu'est-ce qui est sauvegardé ? Quand ? Comment ? Où ? Pour combien de temps ?

Ecrit toi la procédure de restauration. Comment, en cas de problème, je fais pour retrouver mes données ?

Quand doit être testée la procédure de restauration ? À quelle fréquence ?

Et surtout, NE stocke PAS cette procédure à l'endroit qui risque de casser :)

Pour aller plus loin, quelques tips :

- Préfère utiliser les outils de backup internes aux outils que tu as pour éviter de multiplier les outils tiers (mysqldump ...)

- Pense à faire des backups avant des changements importants sur ton environnement (Mise à jour ...)

- Penser à vérifier les backups de temps en temps. Même si ton script te dit que tout est OK, est-ce qu’une tentative de restauration fonctionne ? Est-ce que les dumps ont une taille qui parait cohérente ?

Conclusion : 

Savoir contre quoi l’on se protège et surtout contre quoi l’on a décidé de ne pas se protéger, documenter le tout et faire des tests très régulièrement permettent d'augmenter fortement ton niveau de sérénité

Voilà :)

Imrane 🏖

La newsletter pour ne rien louper

Rejoins les 2500 lecteurs de  la newsletter pour obtenir des conseils, des stratégies et des ressources pour développer et monétiser tes compétences Tech.