Cet article a été écrit il y a plusieurs années, et depuis l'utilisation de l'informatique a encore évolué. Et à cette évolution se sont ajoutées (depuis le 25 mai 2018) les contraintes de le RGPD. Si les grandes lignes sont toujours valables, j'ai rajouté quelques commentaires pour ceux qui seraient soumis à la nouvelle réglementation qui ajoute une couche de complexité à la sauvegardes des données dès lors qu'elles concernent les DCP.
Une grande partie de ces réflexions repose sur mon expérience de prestataire informatique indépendant et de mon expérience en entreprise. Il s'agit essentiellement de bonnes pratiques et de réflexions de bon sens à avoir pour essayer de sauvegarder ses données de façon la plus efficace possible et au moindre coût.
Avec MySQL comme avec les autres SGBDr, la façon la plus portable de sauvegarder ses données est d'en extraire des fichiers sql susceptibles de servir à reconstruire la base et y replacer ses données ce qui s'appelle en anglais un « dump ».
MySQL propose un script du nom de mysqldump qui fait ça très bien. Il produit des fichiers texte qui contiennent des instructions sql. Ces fichiers se compressent très bien, et comme les bases sont souvent grandes, les utilitaires comme gzip sont très utiles pour gagner de l'espace disque.
Le problème commence lorsqu'on envisage des sauvegardes incrémentales. Avec les utilitaires comme rsnapshot qui utilise rsync et les liens en dur, seuls les fichiers modifiés depuis la dernière sauvegarde sont sauvegardés. On économise ainsi de l'espace disque et de la bande passante. Mais les fichiers de dump sont à chaque fois nouveaux, car même si leur contenu n'a pas changé, le fichier lui est nouveau. Du coup rsync le télécharge. Et si vous faites un dump des bases de votres serveur MySQL toutes les quatre heures vous allez télécharger six fois par jour la même chose si vos bases reçoivent rarement des modifications.
Depuis Debian 6.0 Squeeze, le Shell générique par défaut n'est plus bash mais dash qui est beaucoup plus rapide à charger. Dash est un shell plus limité que Bash (voir ce comparatif en anglais). Pour une utilisation sur un serveur que l'on ne passe pas son temps à démarrer, l'argument du temps de démarrage n'a pas beaucoup de sens et si comme moi vous avez certains scripts qui ne fonctionnent pas sous dash, pouvoir revenir à bash par défaut n'est pas sans intérêt.