January 13, 2014

Mysql: ibdata1 gigante no es limpiado al eliminar schemas

Hace unos días tuve que mirar una maquinita que estaba teniendo problemas de espacio. Lo extraño es que solo tenía un par de servicios corriendo, entre estos servicios estaba mysql pero con bases de datos pequeñas…

Para mirar por donde iba el consumo de espacio instalé ncdu, que te provee una linda interfaz ncurses para analizar el uso de espacio en linux. Ahí encontré que uno de los directorios grandes y que no concordaban con la utilización descrita de la máquina, era el de mysql.

Esta maquinita fue usada en algún momento para procesar una base de datos con una tabla que contenía algunos millones de registros(ya no era pequeña), con un par de índices. Claro, que esto fue realizado en 2 copias de la misma base de datos dentro del server, y el server tenía una configuración casi default, donde existía solo un archivo ibdata para todas las bases de datos.

Pero si la base de datos había sido dropeada, ¿por qué seguía usando tanto espacio?

Bueh, eso está explicado acá http://bugs.mysql.com/bug.php?id=1341 … un bug de 10 años :)

Siguiendo con lo importante, el directorio de mysql medía más del doble de lo que debía medir y la mayoría del espacio era del ibdata. La única forma de deshacerse del espacio mal utilizado es bajando el servicio.

Voy a describir brevemente los pasos para recuperar el espacio.

  1. Dump de todas tus bases de datos, excepto mysql y performance_schema. Esto lo puedes hacer vía mysqldump o bien usando workbench.
  2. Eliminar todas las bases de datos (DROP), excepto las mismas 2 del paso anterior.
  3. Detener el servicio mysql.
  4. Cambiar/agregar en my.cnf para que use 1 archivo data por cada base de datos. Debajo de [mysqld], agrega innodb_file_per_table.
  5. Eliminar los archivos ibdata1 e ib_log*. Estos van a ser automáticamente reconstruidos.
  6. Iniciar el servicio mysql.
  7. Recuperar las bases de datos desde el dump.
  8. Obtener el brebaje preferido y esperar.

Luego de esto, habrás recuperado espacio que no debiera estar utilizado.

 

Planeta Ubuntu-cl

Planeta Ubuntu-cl es una ventana a las actividades y experiencias de usuarios y colaboradores de Ubuntu en Chile.

Si te interesa ser parte de este planeta, visita el siguiente link.

Buscador de contenidos


Ultima actualización:
November 26, 2014 10:56 AM
Horario UTC

Planet ATOM
RSS10 RSS20
OPML FOAF

Miembros


© 2006 Ubuntu Chile. Ubuntu, el logo Ubuntu y Canonical son marcas registradas de Canonical Ltd.
Los comentarios de blogs agregados en esta página representan la opinión de su autor.