22 votes

Est-il viable pour gérer les sauvegardes MySQL avec git?

Aujourd'hui, j'ai eu ce vraiment chouette idée pour la sauvegarde de ma base de données: mettre le fichier de vidage dans un dépôt git, puis s'engager sur chaque vidage de sorte que j'ai à la fois la copie la plus récente, mais peut facilement revenir à une précédente sauvegarde. Je peux aussi facilement tirer une copie du dépôt sur une base régulière afin de garder une copie sur mon propre ordinateur comme une sauvegarde de la sauvegarde. Il semble certainement intelligent.

Cependant, je suis conscient que les solutions intelligentes ont parfois des défauts fondamentaux. Quel genre de questions que je pourrais frapper le stockage de mysqldump différences dans git? Est-il utile? Ce que font la plupart des gens dans le but d'avoir plusieurs sauvegardes de base de données sur le serveur et de garder des copies redondantes ailleurs?

12voto

Ben Jackson Points 28358

Normalement, vous ne continuez pas à chaque sauvegarde (ou instantané) pour toujours. Un dépôt git de ne garder tous les checkin vous jamais faire. Si jamais vous décidez de supprimer l'ancien révisions (dites mois révisions vers le bas une fois par semaine, ans à une fois par mois, etc), vous devrez le faire avec git filter-branch qui va réécrire toute l'histoire. Ensuite, git gc supprimer les indésirables révisions.

Étant donné que git points forts sont le contrôle de version distribué et complexe patch/direction générale des flux de travail (ni de qui s'appliquent à des instantanés ou des sauvegardes) j'avais envisager d'utiliser un autre VCS avec un plus malléable de l'histoire.

5voto

cdhowie Points 62253

Cette approche semble bien pour moi. J'utilise Git pour la sauvegarde de mes données importantes.

Notez que vous ne stockez pas de diff -- Git efficacement les magasins des clichés de l'annuaire d'état à chaque commit. Vous pouvez générer la diff de deux commits, mais le mécanisme de stockage n'a rien à voir avec diff.

3voto

Rob Golding Points 1625

En théorie, cela va fonctionner, mais vous allez commencer à avoir des problèmes lorsque la base de données décharges d'obtenir une grande.

Git n'ont pas de limites de taille de fichier, mais il sera diff sur le contenu de votre dernier dump avec celui précédemment stockées dans le référentiel, qui aura besoin d'au moins autant de mémoire que les tailles de ces deux fichiers ajoutés ensemble, donc j'imagine qu'il va commencer à devenir très lent, très vite, avec des fichiers de plus de 100 mo (ou même 10 MO).

Git n'est pas fait pour faire avec les fichiers de ce type (c'est à dire de gros fichiers de données au lieu de code source), donc je pense que c'est fondamentalement une mauvaise idée. Vous pouvez, cependant, utiliser quelque chose comme Dropbox pour stocker les dépôts - qui va encore enregistrer l'historique de version pour vous, mais il est plus adapté vers des fichiers qui ne peuvent pas être efficacement comparable.

1voto

Bryce Points 1620

Si vous utilisez MySQL (et probablement d'autres) et ont binaire journalisation est activée, vous pourriez envisager de mettre en place un repo git pour le répertoire de votre corbeille de journaux et de développer une stratégie d'régulièrement commettre des mises à jour pour la binlog.

Dans MySQL, les binlog stocke les requêtes qui changent les données de toutes les tables dans la base de données. Si vous synchronisez votre commet régulièrement des dumps de la base de données, vous devriez avoir un versionnées façon de restaurer les données.

Honnêtement, je pense tout simplement à l'aide de MySQL outils natifs serait sans doute une meilleure solution, mais ce que j'ai décrites ici, vous reçoit gestion des versions de vos données MySQL qui est ce que je pense que vous avez été au bout de la première place.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X