Eso ibdata1
no se está reduciendo es una característica particularmente molesta de MySQL. El ibdata1
archivo 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 ibdata1
no 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.cnf
para 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
mysqldump
de todas las bases de datos, procedimientos, disparadores, etc., excepto las bases de datos mysql
yperformance_schema
- Descarte todas las bases de datos excepto las 2 bases de datos anteriores
- Deja de mysql
- Eliminar
ibdata1
y ib_log
archivos
- Comience mysql
- Restaurar desde el volcado
Cuando inicie MySQL en el paso 5 , se volverán a crear los archivos ibdata1
y 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=innodb
o 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_schema
eso, 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_schema
es 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 .