¿Cuál es el archivo ibdata1 en mi directorio / var / lib / mysql?
32
Al iniciar sesión en mi panel de control de Webmin, noté que prácticamente todo mi espacio en disco está lleno. Busqué los diez archivos / directorios más grandes en mi sistema y descubrí que un archivo llamado ibdata1 ocupa alrededor de 94 GB de espacio. Reside en mi directorio / var / lib / mysql.
¿Qué hace ibdata1? ¿Estoy seguro de eliminarlo? Mi suposición es que es un tipo de basura, pero eso es una suposición descabellada.
El archivo ibdata1es el espacio de tabla del sistema para la infraestructura de InnoDB.
Contiene varias clases de información vital para InnoDB
Páginas de datos de tabla
Páginas de índice de tabla
Diccionario de datos
Datos de control de MVCC
Deshacer espacio
Segmentos de reversión
Memoria intermedia de doble escritura (páginas escritas en segundo plano para evitar el almacenamiento en caché del sistema operativo)
Insertar búfer (cambios en los índices secundarios)
Tenga en cuenta el lugar de ibdata1 en el universo InnoDB (en el lado derecho)
Puede separar las páginas de datos e índices ibdata1habilitando innodb_file_per_table . Esto hará que cualquier tabla InnoDB recién creada almacene datos e páginas de índice en un .ibdarchivo externo .
innodb_file_per_table habilitado, Páginas de datos / índice almacenadas en /var/lib/mysql/mydb/mytable.ibd
innodb_file_per_table deshabilitado, Páginas de datos / índice almacenadas en ibdata1
No importa dónde esté almacenada la tabla InnoDB, la funcionalidad de InnoDB requiere buscar metadatos de tabla y almacenar y recuperar información MVCC para admitir el cumplimiento de ACID y el aislamiento de transacciones .
Aquí están mis artículos anteriores sobre la separación de datos de tablas e índices de ibdata1
Puede continuar teniendo ibdata1 almacenado todo, pero eso hace que hacer instantáneas LVM sea un trabajo pesado (mi opinión personal).
Debe usar la publicación My StackOverflow y reducir ese archivo de forma permanente.
Por favor ejecute esta consulta:
SELECT
((POWER(1024,3)*94 - InnoDBDiskDataAndIndexes))/POWER(1024,3) SpaceToReclaim
FROM
(SELECT SUM(data_length+index_length) InnoDBDiskDataAndIndexes
FROM information_schema.tables WHERE engine='InnoDB') A;
Esto le dirá cuánto espacio desperdiciado puede recuperarse después de aplicar la limpieza de InnoDB.
Gracias por tu contribución. Desde entonces, mi cuota de disco se ha llenado por completo. Antes de seguir cualquiera de los consejos de sus publicaciones, ¿necesitaré espacio libre? Noto que su publicación original en SO menciona acerca de hacer un volcado de SQL, pero presumiblemente esto crearía un archivo de ~ 90GB sin ningún lugar a donde ir.
James
mysqldump solo mostrará la representación lógica de las páginas de datos, no los índices. Necesitará otro montaje en disco, quizás un servidor remoto, para volcar los datos.
RolandoMySQLDBA
99
Devuelve 91.25350952148438 para mí como SpaceToReclaim. ¿Está esto en megabytes? ¿por ciento? bytes?
Isaac
Sé que esto es demasiado viejo. Pero para cualquiera que venga aquí con el problema, debe reemplazar el número 94con el tamaño de su ibdata1archivo en GB y SpaceToReclaimle dará el tamaño en GB.
Anupsabraham
8
Ese archivo es ibdata1, no, ibdataly contiene todas sus bases de datos InnoDB. Si lo elimina, pierde todos sus datos.
Si usa innodb como motor MySQL, por defecto almacenará todas sus bases de datos en ibdata1. También hay archivos de registro ib_logfile0 e ib_logfile1. No elimine esos archivos.
SpaceToReclaim
. ¿Está esto en megabytes? ¿por ciento? bytes?94
con el tamaño de suibdata1
archivo en GB ySpaceToReclaim
le dará el tamaño en GB.Ese archivo es
ibdata1
, no,ibdatal
y contiene todas sus bases de datos InnoDB. Si lo elimina, pierde todos sus datos.Para obtener algunas ideas sobre cómo tratarlo, consulte Cómo reducir / purgar el archivo ibdata1 en MySQL .
fuente
Si usa innodb como motor MySQL, por defecto almacenará todas sus bases de datos en ibdata1. También hay archivos de registro ib_logfile0 e ib_logfile1. No elimine esos archivos.
fuente