meta data de esta página
  •  

¡Esta es una revisión vieja del documento!


Liberar espacio o reparar la base de datos de Zabbix

A veces en instalaciones de zabbix que llevan un tiempo en funcionamiento y que se han ido actualizando nos econtramos que el fichero ibdata1 es de un tamaño enorme. Eso es debido a que en MySQL cuando usamos InnoDB, todas las tablas e indices se almacenan bajo la tabla system de MySQL, que se corresponde con el fichero ibdata1, que se encuentra en la carpeta /var/lib/mysql

La solución a dicho problema es el siguiente :

  1. Editamos el fichero /etc/my.cnf y añadimos la siguiente líenea bajo la sección [mysqld]

 innodb_file_per_table=1 

  1. Reiniciamos la BDD
    systemctl restart mariadb
  2. Hacemos una copia de todas las Bases de datos
    mysqldump -u root -ptmppassword --all-databases > dump.sql
  3. Hacemos una copia de los ficheros existentes dentro de /var/lib/mysql
  4. Nos conectamos al mysql y borramos la Base de datos zabbix
    mysql>drop database zabbix;
No borrar el resto de BDD
  1. Salimos de la base de datos y paramos el servicio
    systemctl stop mariadb
  2. Borramos los ficheros ibdata1 y los ficheros ib_logfile*

cd /var/lib/mysql/
rm ibdata1
rm ib_logfile*

  1. Iniciamos el servicio de BDD y volvemos a crear la base de datos zabbix

   systemctl start mariadb
mysql -u root -p
Una vez conectados a MySQL creamos una nueva base de datos llamada zabbix
mysqld>    CREATE DATABASE new_database;

Una vez que nos sale el mensaje de que la operación se ha efectuado

Output
Query OK, 1 row affected (0.00 sec)

Salimos de MySQL con CTRL+D. y desde la línea de comando ejecutamos el siguiente comando para importar la copia que había creado:

mysql -u root -p zabbix < dump.sql

Referencias