Hva er IBD-filformatet?
Filer med filendelsen .ibd lagrer MySQL InnoDB-databasetabelldata, inkludert tabellrader, klyngede indekser og sekundære indekser. I «fil-per-tabell»-modus - standard siden MySQL 5.6 - inneholder hver .ibd-fil data og indekser for én tabell, der filnavnet tilsvarer tabellnavnet. Tidligere konfigurasjoner tillot et delt tabellområde for flere tabeller og indekser, der hvert tabellområde ble identifisert med et unikt ID-nummer.
.ibd-filer inneholder sider med fast størrelse, 16 KB som standard (konfigurerbart fra 4 KB til 64 KB ved opprettelse). Formatet er binært og er delt inn i flere sidetyper med definerte roller:
FSP_HDR/ topptekstside - side 0, inneholder tabellområdets topptekst og metadataINDEX-sider - B-tre-sider som inneholder tabellrader (klynget på primærnøkkelen) og sekundære indeksoppføringerXDES PAGE- Extent Descriptor-side, som beskriver innholdet i utstrekningssiderINODE PAGE- side som inneholder informasjon om filsegmenter
.ibd-filer har en kompleks intern struktur og bør åpnes med dedikerte databaseverktøy. Formatet støtter valgfri gjennomsiktig kryptering (AES-basert InnoDB TDE, tilgjengelig siden MySQL 5.7) og valgfri komprimering på sidenivå (ROW_FORMAT=COMPRESSED eller gjennomsiktig sidekomprimering). Hver side har en CRC32-kontrollsum per side for integritetsverifisering.
Fra og med MySQL 8.0 er tabellskjemaet (Serialized Dictionary Information, SDI) innebygd direkte i .ibd-filen, noe som eliminerer den separate .frm-filen som var nødvendig i MySQL 5.7 og tidligere. .ibd-formatet støttes også av MariaDB og Percona Server.
Import av .ibd-data mellom servere krever at den medfølgende .cfg-metadatafilen - og, hvis tabellområdet er kryptert, en .cfp-fil - også blir importert.
Sikkerhet og trygghet
RISIKO: MEDIUMEn .ibd-fil er inerte data - den kjører ikke - men den innebærer reell operasjonell risiko og personvernrisiko. Operasjonelt må du aldri kopiere, flytte eller slette .ibd-filer mens MySQL-serveren kjører, og aldri blande .ibd-filer fra forskjellige serverversjoner eller uten deres systemtabellområde (ibdata1) og redo-logger - dette vil korrumpere tabellen eller krasje serveren; den støttede måten å flytte dem på er transportable tabellområder. Når det gjelder personvern, inneholder en .ibd-fil tabellens faktiske rader i klartekst på disken (med mindre TDE-kryptering er aktivert), så en lekket .ibd-fil er et databrudd: .ibd-filer fra produksjon kan eksponere brukerposter, påloggingsinformasjon eller personopplysninger. Håndter og lagre dem som den sensitive databasen de er.
Formatdetaljer
i et nøtteskallProgrammer som åpner IBD-filer
Tekniske detaljer
dyp spesifikasjon| Standard sidestørrelse | 16 KB; konfigurerbart ved opprettelse av tabellområde til 4 KB, 8 KB, 32 KB eller 64 KB via innodb_page_size |
| Byterekkefølge | Big-endian - alle heltall over flere byte lagres i big-endian-rekkefølge på disken |
| Filformatvariant | Antelope (REDUNDANT/COMPACT radformater, MySQL ≤5.7) eller Barracuda (DYNAMIC/COMPRESSED, MySQL 5.7+) |
| Sidetopptekst/bunntekst | Hver side har en 38-byte FIL-topptekst og en 8-byte FIL-bunntekst som omslutter sideinnholdet |
| Filsignatur | Ingen faste magiske byte; første side er FSP_HDR (type 0x0008 ved byte 24-25 i FIL-toppteksten) |
| Kontrollsum per side | CRC32 som standard (siden MySQL 5.6); støtter også InnoDB legacy eller ingen - verdi lagret i FIL-topptekst og bunntekst |
| Indeksstruktur | B+ tre klynget på primærnøkkelen; sekundære indekser lagrer primærnøkkelreferanser i stedet for direkte radpekere |
| Utstrekningsstørrelse | 1 MB (64 påfølgende 16 KB-sider); tabellområdet vokser med én utstrekning om gangen |
| Kryptering | AES-256 InnoDB gjennomsiktig datakryptering (TDE) med nøkkelinnpakning per side; introdusert i MySQL 5.7 og MariaDB 10.1 |
| Komprimering | ROW_FORMAT=COMPRESSED bruker zlib på sidenivå (Barracuda-format); gjennomsiktig sidekomprimering bruker filsystemets «hole-punching» |
| Overflytslagring | Kolonneverdier som overstiger sidens terskelverdi, flyttes til dedikerte BLOB/overflytssider utenfor siden i samme tabellområde |
| Skjemalagring | MySQL 8.0+ bygger inn SDI (Serialized Dictionary Information) i tabellområdet; MySQL 5.7 og tidligere lagrer skjema i en separat .frm-fil |
| Støttede radformater | REDUNDANT, COMPACT (Antelope); DYNAMIC (standard siden MySQL 5.7), COMPRESSED (Barracuda) |
| Beskyttelse mot delvis skrevne sider | Doublewrite-buffer skriver hver 16 KB-side til et dedikert område før den endelige plasseringen i tabellområdet, noe som beskytter mot delvise skrivinger |
| MIME-type | application/octet-stream (ingen formatspesifikk MIME-type registrert) |
| Utvikler | Oracle Corporation (InnoDB-motor; opprinnelig Innobase Oy, kjøpt opp av Oracle i 2005) |
| Utgitt | 2005-2008 (file-per-table via innodb_file_per_table; default since MySQL 5.6, 2013) |
| Siste versjon | InnoDB in MySQL 8.0 / 8.4 (data dictionary moved into the tablespace; .frm removed) |
| Spesifikasjon | dev.mysql.com |
IBD-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om IBD-filer.