Eso ibdata1no se está reduciendo es una característica particularmente molesta de MySQL. El ibdata1archivo no puede reducirse 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 ibdata1no crecerá tanto. Según el 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, necesita cambiar my.cnfpara habilitar esto:
[mysqld]
innodb_file_per_table=1
http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
Como desea recuperar el espacio ibdata1, debe eliminar el archivo:
- Realice una
mysqldumpde todas las bases de datos, procedimientos, disparadores, etc., excepto las bases de datos mysqlyperformance_schema
- Descarte todas las bases de datos excepto las 2 bases de datos anteriores
- Deja de mysql
- Eliminar
ibdata1y ib_logarchivos
- Comience mysql
- Restaurar desde el volcado
Cuando inicie MySQL en el paso 5 , se volverán a crear los archivos ibdata1y ib_log.
Ahora estás listo para ir. Cuando crea una nueva base de datos para análisis, las tablas se ubicarán en ibd*archivos separados , no en ibdata1. Como suele soltar la base de datos poco después, los ibd*archivos se eliminarán.
http://dev.mysql.com/doc/refman/5.1/en/drop-database.html
Probablemente has visto esto:
http://bugs.mysql.com/bug.php?id=1341
Al usar el comando ALTER TABLE <tablename> ENGINE=innodbo OPTIMIZE TABLE <tablename>uno puede extraer datos e páginas de índice de ibdata1 para separar archivos. Sin embargo, ibdata1 no se reducirá a menos que realice los pasos anteriores.
En cuanto a information_schemaeso, eso no es necesario ni posible abandonar. 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_schemaes el uso de la memoria db-motor y se deja caer y regenerados en parada / reinicio de mysqld. Ver https://dev.mysql.com/doc/refman/5.7/en/information-schema.html .