Hola, encontramos la respuesta a lo que necesitas, has scroll y la obtendrás a continuación.
Solución:
MySQL no reduce el tamaño de ibdata1. Alguna vez. Incluso si usas optimize table
para liberar el espacio utilizado de los registros eliminados, lo reutilizará más tarde.
Una alternativa es configurar el servidor para usar innodb_file_per_table
, pero esto requerirá una copia de seguridad, descartar la base de datos y restaurar. El lado positivo es que el archivo .ibd de la tabla se reduce después de un optimize table
.
Acabo de tener el mismo problema yo mismo.
Lo que sucede es que incluso si elimina la base de datos, innodb aún no liberará espacio en disco. Tuve que exportar, detener mysql, eliminar los archivos manualmente, iniciar mysql, crear una base de datos y usuarios, y luego importar. Gracias a Dios, solo tenía 200 MB de filas, pero ahorró 250 GB de archivo innodb.
Fallar por diseño.
Si no usa innodb_file_per_table, es posible recuperar espacio en disco, pero es bastante tedioso y requiere una cantidad significativa de tiempo de inactividad.
El Cómo es bastante detallado, pero pegué la parte relevante a continuación.
Asegúrese de conservar también una copia de su esquema en su volcado.
Actualmente, no puede eliminar un archivo de datos del tablespace del sistema. Para disminuir el tamaño del tablespace del sistema, utilice este procedimiento:
Use mysqldump para volcar todas sus tablas de InnoDB.
Detenga el servidor.
Elimine todos los archivos de tablespace existentes, incluidos los archivos ibdata e ib_log. Si desea conservar una copia de seguridad de la información, copie todos los archivos ib* en otra ubicación antes de eliminar los archivos en su instalación de MySQL.
Elimine los archivos .frm de las tablas de InnoDB.
Configure un nuevo tablespace.
Reinicie el servidor.
Importe los archivos de volcado.