Ich möchte diese ibdata-Dateien verstehen, da diese eine wichtige Rolle bei der Wiederherstellung nach einem Absturz spielen. Ich konnte über das Internet keine geeigneten Ressourcen dafür finden.
Die Datei ibdata1 ist der Systemtabellenbereich für die InnoDB-Infrastruktur.
Es enthält mehrere Informationsklassen, die für InnoDB von entscheidender Bedeutung sind
Klicken Sie hier, um eine bildliche Darstellung zu sehen
Sie können Daten- und Indexseiten von ibdata1 trennen, indem Sie innodb_file_per_table aktivieren . Dadurch speichert jede neu erstellte InnoDB-Tabelle Daten und Indexseiten in einer externen .ibd
Datei.
Beispiel
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
schafft /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibd
Unabhängig davon, wo die InnoDB-Tabelle gespeichert ist, muss die InnoDB-Funktionalität nach Tabellenmetadaten suchen und MVCC- Informationen speichern und abrufen , um die ACID-Konformität und die Transaktionsisolation zu unterstützen .
Hier sind meine früheren Artikel zum Trennen von Tabellendaten und Indizes von ibdata1
Oct 29, 2010
: Mein ursprünglicher Beitrag in StackOverflowNov 26, 2011
: FEHLER 1114 (HY000) in Zeile 6308 in Datei & Die Tabelle user_analysis ist vollFeb 03, 2012
: Geplante Optimierung von Tabellen in MySQL InnoDBMar 25, 2012
: Warum speichert InnoDB alle Datenbanken in einer Datei?Apr 01, 2012
: Ist innodb_file_per_table ratsam?ib_logfile0
, ib_logfile1
)Wenn Sie wissen möchten, wofür ib_logfile0
und ib_logfile1
sind, sind dies die InnoDB Redo Logs. Sie sollten niemals gelöscht oder in der Größe verändert werden, bis ein vollständiges normales Herunterfahren von mysqld stattgefunden hat . Sollte mysqld jemals abstürzen, starten Sie mysqld einfach. Es liest über ib_logfile0
und ib_logfile1
überprüft, ob Datenänderungen vorliegen, die nicht in den Doppelschreibpuffer von gesendet wurden ibdata1
. Diese Änderungen werden wiederholt (wiederholt). Sobald sie wiedergegeben und gespeichert wurden, ist mysqld bereit für neue DB-Verbindungen.
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibd
undinnodb_file_per_table enbled, Data/Index Pages Stored in ibdata1
sollte umgekehrt sein, nicht wahr?