web-dev-qa-db-fra.com

Que se passe-t-il si les fichiers journaux innovons de la base de données MySQL sont perdus?

Ce que j'ai fait était

/etc/init.d/mysql stop

puis supprimé les fichiers: ib_logfile0, ib_logfile1

puis modifié mon fichier my.cnf, variable: innodb_log_file_size

puis:

/etc/init.d/mysql start

et a permis de recréer les fichiers

J'ai ensuite découvert que la variable globale innodb_fast_shutdown est défini sur "1"

La question est de savoir combien de données a été perdue?

Remarque: j'ai toujours les anciens fichiers ib_logfile0, ib_logfile1, non supprimé.

Et le site Web s'appuyant sur la base de données semble fonctionner.

3
sharp12345

Premières choses d'abord: Kudos pour ne pas supprimer réellement les fichiers - Déménager des fichiers hors de la manière est toujours une meilleure idée que de simplement les supprimer - mais n'essayez pas de remettre les anciens fichiers journaux.

C'est possible Vous pourriez être capable de les analyser, mais vous ne pouvez pas les remettre en service sur ce serveur, car le numéro de séquence de journal (LSN) dans les fichiers journaux ne correspond pas à la un stocké à Ibdata.

InnoDB:                          WARNING!
InnoDB: The log sequence number in ibdata files is higher
InnoDB: than the log sequence number in the ib_logfiles! Are you sure
InnoDB: you are using the right ib_logfiles to start up the database?

Cela commencerait probablement que la récupération des crashs et pourrait potentiellement commencer à "réparer" des choses qui n'étaient pas cassées ... Donc, je ne voudrais donc pas essayer cela.

La question est de savoir combien de données a été perdue?

Si des données ont été perdues, cela aurait été des modifications récentes (insertions/mises à jour/suppresses); Cependant, assez contraire à ce que j'ai toujours pensé, c'est mai En fait être sûr de faire ce que vous avez fait avec innodb_fast_shutdown défini sur 1 (mais pas 2).

http://dev.mysql.com/doc/refman/5.5/fr/innodb-data-log-reconfiguration.html

Ces instructions impliquent que, tant que cela n'est pas défini sur "2", vous alliez bien, et s'il était prêt à "2", disent-ils de la définir sur '1' - par opposition à "0" comme je le ferais Ont attendu ... Donc, on dirait que vous êtes prêt à partir, ou il y a une faille assez grave dans la documentation.

3
Michael - sqlbot