Hvad er IBD-filformatet?
Filer med filtypen .ibd gemmer MySQL InnoDB-databasetabeldata, herunder tabelrækker, klyngede indeks og sekundære indeks. I «file-per-table»-tilstand - standarden siden MySQL 5.6 - indeholder hver .ibd-fil én tabels data og indeks, hvor filnavnet svarer til tabelnavnet. Tidligere konfigurationer tillod et delt tablespace for flere tabeller og indeks, hvor hvert tablespace blev identificeret ved et unikt ID-nummer.
.ibd-filer indeholder sider med fast størrelse, som standard 16 KB (konfigurerbar fra 4 KB til 64 KB ved oprettelse). Formatet er binært og er opdelt i flere sidetyper med definerede roller:
FSP_HDR/ header-side - side 0, der indeholder tablespace-header og metadataINDEX-sider - B-træ-sider, der indeholder tabelrækker (klynget på primærnøglen) og sekundære indeksindtastningerXDES PAGE- Extent Descriptor Page, der beskriver indholdet af extent-siderINODE PAGE- side der indeholder information om filsegmenter
.ibd-filer har en kompleks intern struktur og bør åbnes ved hjælp af dedikerede databaseværktøjer. Formatet understøtter valgfri gennemsigtig kryptering (AES-baseret InnoDB TDE, tilgængelig siden MySQL 5.7) og valgfri komprimering på sideniveau (ROW_FORMAT=COMPRESSED eller gennemsigtig sidekomprimering). Hver side bærer en CRC32-kontrolsum pr. side til verificering af integritet.
Fra og med MySQL 8.0 er tabelskemaet (Serialized Dictionary Information, SDI) indlejret direkte i .ibd-filen, hvilket eliminerer den separate .frm-fil, der krævedes af MySQL 5.7 og tidligere. .ibd-formatet understøttes også af MariaDB og Percona Server.
Import af .ibd-data mellem servere kræver, at den medfølgende .cfg-metadatafil - og, hvis tablespacet er krypteret, en .cfp-fil - også importeres.
Sikkerhed og tryghed
RISIKO: MEDIUMEn .ibd-fil er inaktive data - den kan ikke eksekveres - men den medfører reel drifts- og privatlivsrisiko. Driftsmæssigt må du aldrig kopiere, flytte eller slette .ibd-filer, mens MySQL-serveren kører, og aldrig blande .ibd-filer fra forskellige serverversioner eller uden deres system-tablespace (ibdata1) og redo logs - dette vil korrumpere tabellen eller få serveren til at gå ned; den understøttede måde at flytte dem på er via transportable tablespaces. Privatlivsmæssigt indeholder en .ibd-fil tabellens faktiske rækker i klartekst på disken (medmindre TDE-kryptering er aktiveret), så en lækket .ibd-fil er et databrud: produktions-.ibd-filer kan afsløre brugeroplysninger, legitimationsoplysninger eller PII. Håndter og opbevar dem som den følsomme database, de er.
Formatdetaljer
kort fortaltProgrammer der åbner IBD-filer
Tekniske detaljer
dyb specifikation| Standard sidestørrelse | 16 KB; kan konfigureres ved oprettelse af tablespace til 4 KB, 8 KB, 32 KB eller 64 KB via innodb_page_size |
| Byte-orden | Big-endian - alle multi-byte heltal gemmes i big-endian rækkefølge på disken |
| Filformatvariant | Antelope (REDUNDANT/COMPACT rækkeformater, MySQL ≤5.7) eller Barracuda (DYNAMIC/COMPRESSED, MySQL 5.7+) |
| Side-header/trailer | Hver side bærer en 38-byte FIL-header og en 8-byte FIL-trailer, der omslutter sideindholdet |
| Filsignatur | Ingen faste magic bytes; første side er FSP_HDR (type 0x0008 ved byte 24-25 i FIL-headeren) |
| Kontrolsum pr. side | CRC32 som standard (siden MySQL 5.6); understøtter også InnoDB legacy eller ingen - værdien gemmes i FIL-header og trailer |
| Indeksstruktur | B+ træ klynget på primærnøglen; sekundære indeks gemmer primærnøglereferencer frem for direkte række-pointere |
| Extent-størrelse | 1 MB (64 på hinanden følgende 16 KB sider); tablespacet vokser med ét extent ad gangen |
| Kryptering | AES-256 InnoDB transparent datakryptering (TDE) med nøgleindpakning pr. side; introduceret i MySQL 5.7 og MariaDB 10.1 |
| Komprimering | ROW_FORMAT=COMPRESSED bruger zlib på sideniveau (Barracuda-format); gennemsigtig sidekomprimering bruger filsystemets «hole-punching» |
| Overflow-lagring | Kolonneværdier, der overstiger tærsklen på siden, flyder over til dedikerede off-page BLOB/overflow-sider i samme tablespace |
| Skema-lagring | MySQL 8.0+ indlejrer SDI (Serialized Dictionary Information) i tablespacet; MySQL 5.7 og tidligere gemmer skemaet i en separat .frm-fil |
| Understøttede rækkeformater | REDUNDANT, COMPACT (Antelope); DYNAMIC (standard siden MySQL 5.7), COMPRESSED (Barracuda) |
| Beskyttelse mod delvise sideskrivninger | Doublewrite-buffer skriver hver 16 KB side til et dedikeret område før den endelige placering i tablespacet for at beskytte mod ufuldstændige skrivninger |
| MIME-type | application/octet-stream (ingen formatspecifik MIME-type registreret) |
| Udvikler | Oracle Corporation (InnoDB-motor; oprindeligt Innobase Oy, erhvervet af Oracle i 2005) |
| Udgivet | 2005-2008 (file-per-table via innodb_file_per_table; default since MySQL 5.6, 2013) |
| Seneste version | InnoDB in MySQL 8.0 / 8.4 (data dictionary moved into the tablespace; .frm removed) |
| Specifikation | dev.mysql.com |
IBD-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om IBD-filer.