Was ist das IBD-Dateiformat?
Dateien mit der Erweiterung .ibd speichern MySQL InnoDB-Datenbanktabellendaten, einschließlich Tabellenzeilen, Clustered-Indizes und Sekundärindizes. Im Modus „file-per-table” - dem Standard seit MySQL 5.6 - enthält jede .ibd-Datei die Daten und Indizes einer Tabelle, wobei der Dateiname dem Tabellennamen entspricht. Frühere Konfigurationen erlaubten einen gemeinsamen Tablespace für mehrere Tabellen und Indizes, wobei jeder Tablespace durch eine eindeutige ID-Nummer identifiziert wurde.
.ibd-Dateien enthalten Seiten (Pages) fester Größe, standardmäßig 16 KB (konfigurierbar von 4 KB bis 64 KB bei der Erstellung). Das Format ist binär und in verschiedene Seitentypen mit definierten Rollen unterteilt:
FSP_HDR/ Header-Seite - Seite 0, enthält den Tablespace-Header und MetadatenINDEX-Seiten - B-Baum-Seiten, die Tabellenzeilen (geclustert nach dem Primärschlüssel) und Sekundärindexeinträge enthaltenXDES PAGE- Extent Descriptor Page, beschreibt den Inhalt von Extent-SeitenINODE PAGE- Seite mit Informationen zu Dateisegmenten
.ibd-Dateien haben eine komplexe interne Struktur und sollten mit speziellen Datenbank-Tools geöffnet werden. Das Format unterstützt optionale transparente Verschlüsselung (AES-basiertes InnoDB TDE, verfügbar seit MySQL 5.7) und optionale Komprimierung auf Seitenebene (ROW_FORMAT=COMPRESSED oder transparente Seitenkomprimierung). Jede Seite trägt eine CRC32-Prüfsumme pro Seite zur Integritätsprüfung.
Seit MySQL 8.0 ist das Tabellenschema (Serialized Dictionary Information, SDI) direkt in die .ibd eingebettet, wodurch die separate .frm-Datei entfällt, die für MySQL 5.7 und früher erforderlich war. Das .ibd-Format wird auch von MariaDB und Percona Server unterstützt.
Das Importieren von .ibd-Daten zwischen Servern erfordert, dass die zugehörige .cfg-Metadatendatei - und, falls der Tablespace verschlüsselt ist, eine .cfp-Datei - ebenfalls importiert wird.
Sicherheit
RISIKO: MEDIUMEine .ibd-Datei besteht aus inerten Daten - sie wird nicht ausgeführt -, birgt jedoch erhebliche betriebliche und datenschutzrechtliche Risiken. Aus betrieblicher Sicht sollten .ibd-Dateien niemals kopiert, verschoben oder gelöscht werden, während der MySQL-Server läuft. Mischen Sie niemals .ibd-Dateien verschiedener Serverversionen oder ohne deren System-Tablespace (ibdata1) und Redo-Logs - dies führt zu Tabellenbeschädigungen oder Serverabstürzen. Der unterstützte Weg zum Verschieben sind transportable Tablespaces. In Bezug auf den Datenschutz enthält eine .ibd-Datei die tatsächlichen Zeilen der Tabelle im Klartext auf der Festplatte (sofern keine TDE-Verschlüsselung aktiviert ist). Eine geleakte .ibd-Datei stellt somit eine Datenpanne dar: Produktions-.ibd-Dateien können Benutzerdatensätze, Anmeldedaten oder personenbezogene Daten (PII) offenlegen. Behandeln und speichern Sie diese wie die sensible Datenbank, die sie sind.
Formatdetails
kurz gefasstProgramme zum Öffnen von IBD-Dateien
Technische Details
technische Spezifikation| Standard-Seitengröße | 16 KB; bei der Erstellung des Tablespaces über innodb_page_size auf 4 KB, 8 KB, 32 KB oder 64 KB konfigurierbar |
| Byte-Reihenfolge | Big-endian - alle Multi-Byte-Integer werden in Big-endian-Reihenfolge auf der Festplatte gespeichert |
| Dateiformat-Variante | Antelope (REDUNDANT/COMPACT Zeilenformate, MySQL ≤5.7) oder Barracuda (DYNAMIC/COMPRESSED, MySQL 5.7+) |
| Seiten-Header/Trailer | Jede Seite trägt einen 38-Byte FIL-Header und einen 8-Byte FIL-Trailer, die den Seitenkörper umschließen |
| Dateisignatur | Keine festen Magic Bytes; die erste Seite ist FSP_HDR (Typ 0x0008 an den Bytes 24-25 des FIL-Headers) |
| Prüfsumme pro Seite | Standardmäßig CRC32 (seit MySQL 5.6); unterstützt auch InnoDB-Legacy oder keine - Wert im FIL-Header und -Trailer gespeichert |
| Index-Struktur | B+-Baum, geclustert nach dem Primärschlüssel; Sekundärindizes speichern Primärschlüssel-Referenzen anstelle von direkten Zeilen-Pointern |
| Extent-Größe | 1 MB (64 aufeinanderfolgende 16-KB-Seiten); der Tablespace wächst jeweils um einen Extent |
| Verschlüsselung | AES-256 InnoDB Transparent Data Encryption (TDE) mit Schlüssel-Wrapping pro Seite; eingeführt in MySQL 5.7 und MariaDB 10.1 |
| Komprimierung | ROW_FORMAT=COMPRESSED verwendet zlib auf Seitenebene (Barracuda-Format); transparente Seitenkomprimierung nutzt Filesystem Hole-Punching |
| Überlaufspeicher | Spaltenwerte, die den Schwellenwert innerhalb der Seite überschreiten, werden in dedizierte Off-Page BLOB/Überlaufseiten innerhalb desselben Tablespaces ausgelagert |
| Schema-Speicherung | MySQL 8.0+ bettet SDI (Serialized Dictionary Information) in den Tablespace ein; MySQL 5.7 und früher speichern das Schema in einer separaten .frm-Datei |
| Unterstützte Zeilenformate | REDUNDANT, COMPACT (Antelope); DYNAMIC (Standard seit MySQL 5.7), COMPRESSED (Barracuda) |
| Schutz vor unvollständigen Seiten | Der Doublewrite-Buffer schreibt jede 16-KB-Seite in einen dedizierten Bereich, bevor sie an den endgültigen Tablespace-Ort geschrieben wird, um vor teilweisen Schreibvorgängen zu schützen |
| MIME-Typ | application/octet-stream (kein formatspezifischer MIME-Typ registriert) |
| Entwickler | Oracle Corporation (InnoDB-Engine; ursprünglich Innobase Oy, 2005 von Oracle übernommen) |
| Veröffentlicht | 2005-2008 (file-per-table via innodb_file_per_table; default since MySQL 5.6, 2013) |
| Neueste Version | InnoDB in MySQL 8.0 / 8.4 (data dictionary moved into the tablespace; .frm removed) |
| Spezifikation | dev.mysql.com |
IBD-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu IBD-Dateien.