2011-05-12 22 views
20

He creado algunas bases de datos muy grandes y desde entonces he descartado algunas. Me di cuenta de que mi espacio en disco no se había recuperado tanto como esperaba. Por ejemplo, la última base de datos que agregué realmente agotó todo mi espacio libre y se canceló, por lo que descarté ese esquema. Antes tenía 12.4 GB gratis, ahora solo tengo 7.52 GB gratis.
¿Qué está pasando aquí? ¿Cómo recupero mi ~ 5 GB?Recuperar espacio en disco después de soltar la base de datos en mysql

+1

InnoDB o tablas MyISAM? – bot403

+1

http://crazytoon.com/2007/04/03/mysql-ibdata-files-do-not-shrink-on-database-deletion-innodb/ – Brad

+0

Está utilizando InnoDB – VenerableAgents

Respuesta

22

De http://dev.mysql.com/doc/refman/5.1/en/innodb-data-log-reconfiguration.html:

Actualmente, no se puede eliminar un archivo de datos desde el espacio de tabla. Para reducir el tamaño del espacio de tablas, utilice este procedimiento:

  1. Uso mysqldump para volcar todas las tablas InnoDB.

  2. Detenga el servidor.

  3. Elimina todos los archivos de espacio de tabla 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.

  4. Elimine cualquier archivo .frm para tablas InnoDB.

  5. Configure un nuevo tablespace.

  6. Reinicie el servidor.

  7. Importe los archivos de volcado.

InnoDB crea un sistema de ficheros (el "tablas") dentro de los archivos de datos a sí mismos. Nunca "encoge" los archivos de datos cuando se eliminan los datos, ya que la reorganización de los datos dentro del archivo podría ser costosa (no hay garantía de que los datos eliminados fueron al final, o incluso contiguos). Al recrear la base de datos como se describe anteriormente, hace que el archivo sea tan grande como sea necesario para todos los datos, pero no más grande.

+5

Una versión más útil de la misma respuesta: http://stackoverflow.com/questions/3456159/how-to-shrink-purge-ibdata1-file-in-mysql/3456885 # 3456885 – Tgr

+0

Aquí está el enlace correcto para la respuesta proporcionada: http://dev.mysql.com/doc/refman/5.1 /en/innodb-resize-system-tablespace.html – Travis

Cuestiones relacionadas