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 :

  • Paramos el servicio de zabbix
    systemctl stop zabbix-server
  • Editamos el fichero /etc/my.cnf y añadimos la siguiente líenea bajo la sección [mysqld]

 innodb_file_per_table=1 

  • Reiniciamos la BDD
    systemctl restart mariadb
  • Hacemos una copia de todas las Bases de datos
    mysqldump -u root -ptmppassword --all-databases > dump.sql
  • También deberíamos de hacer una copia de los ficheros existentes dentro de /var/lib/mysql
  • Nos conectamos al mysql y borramos la Base de datos zabbix
    mysql>drop database zabbix;
No borrar el resto de BDD

* Salimos de la base de datos y paramos el servicio

systemctl stop mariadb

  • Borramos los ficheros ibdata1 y los ficheros ib_logfile*

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

  • 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 zabbix;

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

  • Iniciampos el servicio de zabbix
    systemctl start zabbix-server

Reparar error mysql ‘table’ doesn’t exist in engine

si nos aparece este error y no podemos hacer un copia de seguridad de nuestra BDD, debemos de ir a la ubicación de nuestra base de datos /var/lib/mysql/zabbix y renombrar o borrar todos los ficheros con extensión frm que aparecen.

es preferible renombrar los ficheros, ya que desde dichos ficheros frm también es posible recuperar la BDD con el siguiente proceso http://www.juanmitaboada.com/recuperar-una-tabla-de-mysql-desde-los-ficheros-frm-y-ibd/

Solucionar problemas de corrupción

Si tenemos problemas de que la base de datos de zabbix se queda incoherente, normalmente será porque la tabla history_uint es muy grande o está corrupta. Para solucionarlo podemos hacer lo siguiente:

mysqlq -p
mysql> use zabbix; 
mysql> TRUNCATE TABLE history;
mysql> TRUNCATE TABLE history_str;
mysql> TRUNCATE TABLE history_uint;
mysql> TRUNCATE TABLE history_log;
mysql> TRUNCATE TABLE history_text;
Cerrar mysql y ejecutar
mysqlcheck -u root -p --auto-repair --check --all-databases

Borrar registros huérfanos

Referencias