¿Qué es el formato de archivo IBD?
Los archivos con la extensión .ibd almacenan datos de tablas de bases de datos MySQL InnoDB, incluyendo filas de tablas, índices agrupados e índices secundarios. En el modo «file-per-table» -el predeterminado desde MySQL 5.6- cada archivo .ibd contiene los datos e índices de una tabla, y el nombre del archivo corresponde al nombre de la tabla. Las configuraciones anteriores permitían un tablespace compartido para múltiples tablas e índices, donde cada tablespace se identificaba mediante un número de ID único.
Los archivos .ibd contienen páginas de tamaño fijo, de 16 KB por defecto (configurable de 4 KB a 64 KB al momento de la creación). El formato es binario y se divide en varios tipos de páginas con funciones definidas:
FSP_HDR/ página de encabezado - página 0, que contiene el encabezado del tablespace y los metadatos- Páginas
INDEX- páginas de árbol B que contienen las filas de la tabla (agrupadas por la clave primaria) y las entradas de índices secundarios XDES PAGE- Página de Descriptor de Extensión, que describe el contenido de las páginas de extensiónINODE PAGE- página que contiene información del segmento de archivo
Los archivos .ibd tienen una estructura interna compleja y deben abrirse utilizando herramientas de base de datos dedicadas. El formato admite cifrado transparente opcional (InnoDB TDE basado en AES, disponible desde MySQL 5.7) y compresión opcional a nivel de página (ROW_FORMAT=COMPRESSED o compresión de página transparente). Cada página lleva una suma de comprobación CRC32 por página para la verificación de integridad.
A partir de MySQL 8.0, el esquema de la tabla (Serialized Dictionary Information, SDI) se incrusta directamente en el .ibd, eliminando el archivo .frm separado que requerían MySQL 5.7 y versiones anteriores. El formato .ibd también es compatible con MariaDB y Percona Server.
La importación de datos .ibd entre servidores requiere que el archivo de metadatos .cfg acompañante -y, si el tablespace está cifrado, un archivo .cfp- también sea importado.
Seguridad y protección
RIESGO: MEDIUMUn .ibd son datos inertes -no se ejecutan- pero conllevan un riesgo operativo y de privacidad real. Operativamente, nunca copie, mueva o elimine archivos .ibd mientras el servidor MySQL esté en ejecución, y nunca mezcle archivos .ibd de diferentes versiones de servidor o sin su tablespace de sistema (ibdata1) y redo logs; hacerlo corrompe la tabla o bloquea el servidor; la forma admitida de moverlos es mediante tablespaces transportables. En cuanto a la privacidad, un .ibd contiene las filas reales de la tabla en texto plano en el disco (a menos que el cifrado TDE esté habilitado), por lo que un .ibd filtrado es una brecha de datos: los archivos .ibd de producción pueden exponer registros de usuarios, credenciales o PII. Manéjelos y almacénelos como la base de datos sensible que son.
Detalles del formato
en pocas palabrasProgramas que abren archivos IBD
Detalles técnicos
especificación profunda| Tamaño de página predeterminado | 16 KB; configurable en la creación del tablespace a 4 KB, 8 KB, 32 KB o 64 KB mediante innodb_page_size |
| Orden de bytes | Big-endian - todos los enteros multibyte se almacenan en orden big-endian en el disco |
| Variante del formato de archivo | Antelope (formatos de fila REDUNDANT/COMPACT, MySQL ≤5.7) o Barracuda (DYNAMIC/COMPRESSED, MySQL 5.7+) |
| Encabezado/pie de página | Cada página lleva un encabezado FIL de 38 bytes y un pie de página FIL de 8 bytes que encierran el cuerpo de la página |
| Firma de archivo | Sin bytes mágicos fijos; la primera página es FSP_HDR (tipo 0x0008 en los bytes 24-25 del encabezado FIL) |
| Suma de comprobación por página | CRC32 por defecto (desde MySQL 5.6); también admite el legado de InnoDB o ninguno - valor almacenado en el encabezado y pie de página FIL |
| Estructura de índice | Árbol B+ agrupado en la clave primaria; los índices secundarios almacenan referencias a la clave primaria en lugar de punteros directos a las filas |
| Tamaño de extensión | 1 MB (64 páginas consecutivas de 16 KB); el tablespace crece una extensión a la vez |
| Cifrado | Cifrado de datos transparente (TDE) InnoDB AES-256 con envoltura de clave por página; introducido en MySQL 5.7 y MariaDB 10.1 |
| Compresión | ROW_FORMAT=COMPRESSED utiliza zlib a nivel de página (formato Barracuda); la compresión de página transparente utiliza la perforación de archivos (hole-punching) del sistema de archivos |
| Almacenamiento de desbordamiento | Los valores de columna que exceden el umbral de la página se desbordan a páginas BLOB/overflow dedicadas fuera de la página dentro del mismo tablespace |
| Almacenamiento de esquema | MySQL 8.0+ incrusta SDI (Serialized Dictionary Information) en el tablespace; MySQL 5.7 y anteriores almacenan el esquema en un archivo .frm separado |
| Formatos de fila admitidos | REDUNDANT, COMPACT (Antelope); DYNAMIC (predeterminado desde MySQL 5.7), COMPRESSED (Barracuda) |
| Protección contra páginas rotas | El búfer de doble escritura (doublewrite buffer) escribe cada página de 16 KB en un área dedicada antes de la ubicación final del tablespace, protegiendo contra escrituras parciales |
| Tipo MIME | application/octet-stream (no hay un tipo MIME específico registrado para el formato) |
| Desarrollador | Oracle Corporation (motor InnoDB; originalmente Innobase Oy, adquirida por Oracle en 2005) |
| Lanzado | 2005-2008 (file-per-table via innodb_file_per_table; default since MySQL 5.6, 2013) |
| Última versión | InnoDB in MySQL 8.0 / 8.4 (data dictionary moved into the tablespace; .frm removed) |
| Especificación | dev.mysql.com |
Conversiones de IBD
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos IBD.