Que ibdata1
no se está reduciendo es una característica particularmente molesta de MySQL. El ibdata1
el archivo no se puede reducir a menos que elimine todas las bases de datos, elimine los archivos y vuelva a cargar un volcado.
Pero puede configurar MySQL para que cada tabla, incluidos sus índices, se almacene como un archivo separado. De esa manera ibdata1
no crecerá tanto. Según Comentario de Bill Karwin esto está habilitado de forma predeterminada a partir de la versión 5.6.6 de MySQL.
Hace un tiempo hice esto. Sin embargo, para configurar su servidor para usar archivos separados para cada tabla, debe cambiar my.cnf
para habilitar esto:
[mysqld]
innodb_file_per_table=1
https://dev.mysql .com/doc/refman/5.6/en/innodb-file-per-table-tablespaces.html
Como desea recuperar el espacio de ibdata1
en realidad tienes que borrar el archivo:
- Haga un
mysqldump
de todas las bases de datos, procedimientos, activadores, etc. exceptomysql
yperformance_schema
bases de datos - Eliminar todas las bases de datos excepto las 2 bases de datos anteriores
- Detener mysql
- Eliminar
ibdata1
yib_log
archivos - Iniciar mysql
- Restaurar desde volcado
Cuando inicia MySQL en el paso 5, ibdata1
y ib_log
los archivos se volverán a crear.
Ahora estás listo para ir. Cuando crea una nueva base de datos para el análisis, las tablas se ubicarán en ibd*
separados archivos, no en ibdata1
. Como suele soltar la base de datos poco después, ibd*
los archivos serán eliminados.
http://dev.mysql.com/doc/refman /5.1/es/drop-database.html
Probablemente haya visto esto:
http://bugs.mysql.com /bug.php?id=1341
Usando el comando ALTER TABLE <tablename> ENGINE=innodb
o OPTIMIZE TABLE <tablename>
uno puede extraer datos y páginas de índice de ibdata1 a archivos separados. Sin embargo, ibdata1 no se reducirá a menos que realice los pasos anteriores.
Con respecto al information_schema
, que no es necesario ni posible soltar. De hecho, es solo un montón de vistas de solo lectura, no tablas. Y no hay archivos asociados con ellos, ni siquiera un directorio de base de datos. El informations_schema
está utilizando el motor de base de datos de memoria y se descarta y se regenera al detener/reiniciar mysqld. Ver https://dev.mysql.com/doc/ refman/5.7/en/information-schema.html
.