Problemas con la BDD de Zabbix

Liberar espacio, fichero ibdata muy grande

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 el motor de bases de datos 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

Para colmo de males cuando se elimina una tabla o toda una base de datos, el espacio que ocupaban en el fichero ibdata1 no se recupera.

La solución a dicho problema podemos hacer dos cosas: cambiar el motor de bases de datos a MyISAM o bien realizar un volcado completo de todas las bases de datos, reiniciar el servidor y recuperar el volcado y reconfigurar el servidor para que las tablas innodb se almacenen en ficheros independientes, evitando de este modo que vuelva a aparecer el problema.

Yo he optado por el segundo método, para ello he seguido estos pasos:

Lo primero es tener una copia de seguridad de la base de datos

Paramos el servidor de zabbix y hacemos la copia o si tenemos más bases de datos

tampoco está de más hacer una copia de los ficheros existentes dentro de /var/lib/mysql

- Paramos el servidor de BDD

Borramos el archivo ibdata1 y sus logs

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

Iniciamos la BDD

Borramos y volvemos a crear la base de datos

Le damos permisos al usuario

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

también podemos crearla nueva ejecutando zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

Iniciampos el servicio de zabbix

Referencias :

https://blog.openalfa.com/como-reducir-el-tamano-del-fichero-ibdata1-en-mysql

https://mierda.tv/2017/06/19/solucion-a-archivo-ibdata1-gigante-con-mysql/

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 todos los ficheros con extensión frm que aparecen.

En último extremo y si no tenemos una copia de la BDD podemos intentar recuperar la misma desde lo ficheros frm con el siguiente proceso

http://www.juanmitaboada.com/recuperar-una-tabla-de-mysql-desde-los-ficheros-frm-y-ibd/

http://www.sohailriaz.com/recover-innodb-tables-using-frm-and-ibd-files/

https://www.claudiokuenzler.com/blog/752/recover-crashed-mysql-mariadb-innodb-database-from-ibd-files#.Wo_8KucWW73

https://www.thegeekstuff.com/2014/04/recover-innodb-mysql/

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:

Cerrar mysql y ejecutar

Borrar registros huérfanos

https://github.com/mattiasgeniar/zabbix-orphaned-data-cleanup

Referencias

http://www.thegeekstuff.com/2016/02/mysql-innodb-file-per-table/

http://www.michaelfoster82.co.uk/zabbbix-database-is-down/

https://www.zabbix.com/documentation/3.4/manual/appendix/install/db_scripts#mysql