Modifications apportées à une table MySQL InnoDB - Quels fichiers sont impliqués et pourquoi?

StackOverflow https://stackoverflow.com/questions/1201184

  •  05-07-2019
  •  | 
  •  

Question

Lors de la modification du contenu d'un tableau InnoDB MySQL, les fichiers suivants du système de fichiers semblent être impliqués / modifiés:

  • / chemin / vers / mysql / data / [base de données] / [table] .ibd (en raison de innodb_file_per_table )
  • / chemin / vers / mysql / data / data / ib_logfile0
  • / chemin / vers / mysql / data / data / ib_logfile1
  • / chemin / vers / mysql / data / data / ibdata1

Pour chacun de ces fichiers:

  1. Quand le fichier est-il créé?
  2. Quand le fichier sera-t-il écrit?
  3. Quand le fichier sera-t-il lu?
  4. Quelle serait la conséquence si le fichier est corrompu ou supprimé?
Était-ce utile?

La solution

/path/to/mysql/data/[database]/[table].ibd (due to innodb_file_per_table)

C'est ici que vos données sont stockées. Ils sont créés lors de la création des tables.

/path/to/mysql/data/data/ib_logfile0
/path/to/mysql/data/data/ib_logfile1

Il s’agit de fichiers journaux .

Toutes les modifications de données sont écrites séquentiellement dans les fichiers de journalisation , ce qui permet la journalisation à écriture anticipée (crucial pour les transactions)

/path/to/mysql/data/data/ibdata1

C’est ici que sont stockées les données système et les données UNDO .

Si ibdata n'est pas trouvé, MySQL pensera que le moteur InnoDB n'est pas initialisé et crée simplement le nouveau ibdata . Identique avec fichiers journaux .

Si une requête est émise sur une table et si le fichier .ibd est introuvable, MySQL échouera avec le message suivant:

  

Impossible de trouver la table base de données / table dans le dictionnaire de données interne de InnoDB , bien que le fichier .frm de la table existe. Vous avez peut-être supprimé et recréé des fichiers de données InnoDB mais vous avez oublié de supprimer les fichiers .frm des tables InnoDB correspondants, ou vous   avez déplacé des fichiers .frm vers une autre base de données?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top