O que é o formato de ficheiro IBD?
Arquivos com a extensão .ibd armazenam dados de tabelas de banco de dados MySQL InnoDB, incluindo linhas de tabela, índices clusterizados e índices secundários. No modo «file-per-table» - o padrão desde o MySQL 5.6 - cada arquivo .ibd contém os dados e índices de uma única tabela, com o nome do arquivo correspondendo ao nome da tabela. Configurações anteriores permitiam um tablespace compartilhado para várias tabelas e índices, onde cada tablespace era identificado por um número de ID exclusivo.
Os arquivos .ibd contêm páginas de tamanho fixo, 16 KB por padrão (configurável de 4 KB a 64 KB na criação). O formato é binário e é dividido em vários tipos de página com funções definidas:
FSP_HDR/ página de cabeçalho - página 0, contendo o cabeçalho do tablespace e metadados- Páginas
INDEX- páginas de árvore B que contêm as linhas da tabela (clusterizadas na chave primária) e entradas de índice secundário XDES PAGE- Página Descritora de Extensão, descrevendo o conteúdo das páginas de extensãoINODE PAGE- página contendo informações de segmento de arquivo
Os arquivos .ibd possuem uma estrutura interna complexa e devem ser abertos usando ferramentas de banco de dados dedicadas. O formato suporta criptografia transparente opcional (InnoDB TDE baseada em AES, disponível desde o MySQL 5.7) e compressão opcional em nível de página (ROW_FORMAT=COMPRESSED ou compressão de página transparente). Cada página carrega um checksum CRC32 por página para verificação de integridade.
A partir do MySQL 8.0, o esquema da tabela (Serialized Dictionary Information, SDI) é incorporado diretamente no .ibd, eliminando o arquivo .frm separado exigido pelo MySQL 5.7 e versões anteriores. O formato .ibd também é suportado pelo MariaDB e Percona Server.
A importação de dados .ibd entre servidores exige que o arquivo de metadados .cfg acompanhante - e, se o tablespace estiver criptografado, um arquivo .cfp - também seja importado.
Segurança e proteção
RISCO: MEDIUMUm .ibd contém dados inertes - não é executado - mas acarreta riscos operacionais e de privacidade reais. Operacionalmente, nunca copie, mova ou exclua arquivos .ibd enquanto o servidor MySQL estiver em execução e nunca misture arquivos .ibd de diferentes versões de servidor ou sem seu tablespace de sistema (ibdata1) e redo logs - fazer isso corrompe a tabela ou trava o servidor; a maneira suportada de movê-los é através de tablespaces transportáveis. Em termos de privacidade, um .ibd contém as linhas reais da tabela em texto simples no disco (a menos que a criptografia TDE esteja ativada), portanto, um .ibd vazado é uma violação de dados: arquivos .ibd de produção podem expor registros de usuários, credenciais ou PII. Manipule-os e armazene-os como o banco de dados sensível que são.
Detalhes do formato
em resumoProgramas que abrem arquivos IBD
Detalhes técnicos
especificação profunda| Tamanho de página padrão | 16 KB; configurável na criação do tablespace para 4 KB, 8 KB, 32 KB ou 64 KB via innodb_page_size |
| Ordem dos bytes | Big-endian - todos os inteiros de vários bytes são armazenados em ordem big-endian no disco |
| Variante do formato de arquivo | Antelope (formatos de linha REDUNDANT/COMPACT, MySQL ≤5.7) ou Barracuda (DYNAMIC/COMPRESSED, MySQL 5.7+) |
| Cabeçalho/rodapé da página | Cada página carrega um cabeçalho FIL de 38 bytes e um rodapé FIL de 8 bytes envolvendo o corpo da página |
| Assinatura do arquivo | Sem magic bytes fixos; a primeira página é FSP_HDR (tipo 0x0008 nos bytes 24-25 do cabeçalho FIL) |
| Checksum por página | CRC32 por padrão (desde o MySQL 5.6); também suporta o legado do InnoDB ou nenhum - valor armazenado no cabeçalho e rodapé FIL |
| Estrutura de índice | Árvore B+ clusterizada na chave primária; índices secundários armazenam referências de chave primária em vez de ponteiros de linha diretos |
| Tamanho da extensão | 1 MB (64 páginas consecutivas de 16 KB); o tablespace cresce uma extensão por vez |
| Criptografia | Criptografia de dados transparente (TDE) InnoDB AES-256 com encapsulamento de chave por página; introduzida no MySQL 5.7 e MariaDB 10.1 |
| Compressão | ROW_FORMAT=COMPRESSED usa zlib no nível da página (formato Barracuda); a compressão de página transparente usa o recurso de «hole-punching» do sistema de arquivos |
| Armazenamento de transbordamento | Valores de coluna que excedem o limite da página transbordam para páginas BLOB/overflow dedicadas fora da página dentro do mesmo tablespace |
| Armazenamento de esquema | O MySQL 8.0+ incorpora SDI (Serialized Dictionary Information) no tablespace; o MySQL 5.7 e versões anteriores armazenam o esquema em um arquivo .frm separado |
| Formatos de linha suportados | REDUNDANT, COMPACT (Antelope); DYNAMIC (padrão desde o MySQL 5.7), COMPRESSED (Barracuda) |
| Proteção contra páginas corrompidas | O buffer de gravação dupla (doublewrite buffer) grava cada página de 16 KB em uma área dedicada antes da localização final do tablespace, protegendo contra gravações parciais |
| Tipo MIME | application/octet-stream (nenhum tipo MIME específico do formato registrado) |
| Desenvolvedor | Oracle Corporation (mecanismo InnoDB; originalmente Innobase Oy, adquirida pela Oracle em 2005) |
| Lançado | 2005-2008 (file-per-table via innodb_file_per_table; default since MySQL 5.6, 2013) |
| Versão mais recente | InnoDB in MySQL 8.0 / 8.4 (data dictionary moved into the tablespace; .frm removed) |
| Especificação | dev.mysql.com |
Conversões de IBD
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos IBD.