Au travail, nous faisons un vidage nocturne de nos bases de données mysql. De jour en jour, je pense que près de 90 à 95% des données sont en double, augmentant avec le temps. (Heck à ce stade, certains sont probablement à 99%)
Ces vidages sont là où une ligne est une seule instruction mysql INSERT, donc les seules différences sont les lignes entières et l'ordre dans lequel elles se trouvent dans le fichier. Si je les triais, la différence réelle d'un fichier à l'autre serait très faible.
J'ai cherché et je n'ai trouvé aucun moyen de trier la sortie sur le vidage. Je pourrais le diriger via la sort
commande, cependant. Il y aurait alors de longs, longs blocs de lignes identiques.
J'essaie donc de trouver un moyen de stocker uniquement les différences. Je pourrais commencer avec un vidage principal, et faire la différence contre cela chaque nuit. Mais les différences seraient plus importantes chaque nuit. Ou, je pourrais faire des différences de roulement, qui individuellement seraient très petites, mais il semble que cela prendrait de plus en plus de temps à calculer, si je dois assembler un diff principal de chaque série chaque nuit.
Est-ce faisable? Avec quels outils?
Edit Je ne demande pas comment faire des sauvegardes mysql. Oubliez mysql pour le moment. C'est un hareng rouge. Ce que je veux savoir, c'est comment créer une série de différences de roulement à partir d'une série de fichiers. Chaque nuit, nous obtenons un fichier (qui se trouve être un fichier mysqldump ) qui est similaire à 99% à celui qui le précède. Oui, nous les gzipons tous. Mais c'est redondant d'avoir toute cette redondance en premier lieu. Tout ce dont j'ai vraiment besoin, c'est des différences par rapport à la veille ... ce qui n'est différent que de 1% de la veille ... et ainsi de suite. Donc, ce que je veux, c'est comment faire une série de différences, donc je n'ai besoin que de stocker ce 1% chaque nuit.
la source
Dernièrement, j'ai essayé de stocker des vidages de base de données dans git. Cela peut devenir impossible si vos vidages de base de données sont vraiment volumineux, mais cela a fonctionné pour moi pour les petites bases de données (sites Wordpress et autres).
Mon script de sauvegarde est à peu près:
la source
Vous pouvez faire quelque chose comme ça (avec
a.sql
comme sauvegarde hebdomadaire).Vos fichiers diff deviendront plus volumineux d'ici la fin de la semaine.
Ma suggestion est juste de le gzip (à utiliser
gzip -9
pour une compression maximale). Nous le faisons pour le moment et cela donne un fichier gz de 59 Mo alors que l'original est de 639 Mo.la source
Il existe plusieurs approches possibles, selon la taille et la similitude textuelle réelle des vidages de base de données:
la source
(Je ne l'ai pas fait en production.)
Effectuez une sauvegarde complète une fois par jour ou par semaine. Le relais de sauvegarde se connecte une fois par heure ou par jour.
la source