Frage

Wenn Sie den Inhalt einer InnoDB MySQL-Tabelle Ändern Sie die folgenden Dateien auf dem Dateisystem erscheint einbezogen werden / geändert:

  • /path/to/mysql/data/[database]/[table].ibd (wegen innodb_file_per_table)
  • /path/to/mysql/data/data/ib_logfile0
  • /path/to/mysql/data/data/ib_logfile1
  • /path/to/mysql/data/data/ibdata1

Für jede dieser Dateien:

  1. Wenn die Datei erstellt?
  2. Wann wird die Datei geschrieben werden?
  3. Wann wird die Datei aus gelesen werden?
  4. Was die Folge sein würde, wenn die Datei beschädigt oder gelöscht ist?
War es hilfreich?

Lösung

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

Dies ist, wo Sie die Daten gespeichert sind. Sie entstehen, wenn die Tabellen erstellen.

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

Dies sind logfiles.

Alle Datenänderungen in die logfiles sequentiell geschrieben werden, die Write-Ahead ermöglicht Protokollierung (entscheidend für Transaktionen)

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

Dies ist, wo Systemdaten und UNDO Daten gespeichert werden.

Wenn ibdata nicht gefunden wird, wird MySQL denken, dass InnoDB Motor nicht initialisiert und gerade die neue ibdata erstellen. Das Gleiche gilt für logfiles.

Wenn eine Abfrage für eine Tabelle ausgegeben wird, und .ibd Datei nicht gefunden wird, MySQL wird mit dieser Meldung fehlschlagen:

  

Tabelle kann nicht database/table aus dem internen Datenwörterbuch von InnoDB obwohl die .frm-Datei für die Tabelle vorhanden finden. Vielleicht haben Sie gelöscht und InnoDB Datendateien neu erstellt, sondern haben die entsprechenden .frm Dateien von InnoDB Tabellen löschen vergessen, oder Sie   .frm Dateien in einer anderen Datenbank verschoben hat?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top