Lors du test de l'utilitaire de sauvegarde Back In Time de Linux, j'ai constaté que je ne comprenais pas comment MariaDB sauvegardait les données.
Après avoir ajouté un enregistrement fictif à une table et l'avoir laissée jusqu'au prochain instantané, j'ai été surpris de constater que la restauration de l'ancien instantané (prise avant l'ajout de l'enregistrement fictif) n'entraînait pas la suppression de cet enregistrement.
J'ai essayé deux fois de plus: un nouvel enregistrement factice ajouté, un instantané se produit (automatiquement, car c'est ce que j'ai dit à Back In Time) ... et la restauration ne fait pas ce que j'avais prévu.
En regardant les fichiers «Modifiés par», dans le répertoire principal (où toutes les bases de données sont des sous-répertoires), je constate que seuls deux fichiers semblent avoir changé: ib_logfile0
et ib_logfile1
. Lors de la configuration de mon travail Back In Time, j’ai délibérément omis de les exclure de la configuration car j’imaginais que c’était «juste des journaux». Clairement PAS.
Pour résoudre mon problème immédiat, il me semble que tout ce que j'ai à faire est d'inclure ces deux fichiers dans mes instantanés. Mais comment ou par quel processus ibdata1
être mis à jour avec les nouvelles informations? Est-ce peut-être lorsque le service MySQL est arrêté? Ou commencé?
Ce qui est étrange, c’est que je ne semble pas trouver beaucoup d’informations à ce sujet.
ib_logfile0/1
... Vous semblez impliquer que MySQL met effectivement à jour ibdata1
quand il ferme ... mais que se passe-t-il en cas de coupure brutale d'une machine? Évidemment, je peux faire des expériences moi-même pour essayer de trouver des réponses ...
ibdata1
est nécessaire. ib_logfile0
et ib_logfile1
ne sont pas.
ibdata1
,ib_logfile0
etib_logfile1
des dossiers. Il suffit de fermer MySQL, de supprimer ces fichiers et MySQL les reconstruira au redémarrage.