meta data de esta página
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| seguridad:monitorizacion:zabbix3:ibdata1 [232018/02/ 11:15] – lc | seguridad:monitorizacion:zabbix3:ibdata1 [182023/01/ 13:46] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | {{tag> zabbix mysql mariadb reparar liberar clean recuperar}} | ||
| + | ===== Problemas con la BDD de Zabbix ===== | ||
| + | ==== Liberar espacio ==== | ||
| + | Revisar las configuración del parámetro [[seguridad: | ||
| + | ==== 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 / | ||
| + | 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: | ||
| + | |||
| + | 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 < | ||
| + | < | ||
| + | - Paramos el servidor de BDD < | ||
| + | * Borramos el archivo ibdata1 y sus logs < | ||
| + | rm -rf / | ||
| + | rm -rf / | ||
| + | * Editamos el fichero /etc/my.cnf y añadimos la siguiente línea bajo la sección [mysqld] | ||
| + | <sxh> innodb_file_per_table=1 </ | ||
| + | * Iniciamos la BDD < | ||
| + | * Borramos y volvemos a crear la base de datos < | ||
| + | mysql -u user -p' | ||
| + | * Le damos permisos al usuario < | ||
| + | mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '< | ||
| + | mysql> quit;</ | ||
| + | * Salimos de MySQL y desde la línea de comando ejecutamos el siguiente comando para importar la copia que había creado: | ||
| + | < | ||
| + | mysql -u user -p' | ||
| + | </ | ||
| + | * Iniciampos el servicio de zabbix < | ||
| + | |||
| + | Referencias : | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | ==== Reparar error mysql ‘table’ doesn’t exist in engine ==== | ||
| + | Si al ejecutar el comando < | ||
| + | |||
| + | |||
| + | === Intentar la recuperación automática === | ||
| + | <note warning> | ||
| + | Podemos instentar usar la opción **innodb_force_recovery=** para recuperar nuestra bdd. a este parámetro le damos un valor entre 0 y 6. | ||
| + | Un valor mayor también incluye las comprobaciones de los valores anteriores, es decir si ponemos el 4 estamos incluyendo las comprobaciones de los niveles 1,2 y3 también. | ||
| + | |||
| + | el valor 0 es el valor por defecto que no realiza recuperación. | ||
| + | Los valores entre 1 y 3 son más seguros y se pierden menos datos | ||
| + | Los valores entre 4 y 6 son más peligrosos y se pueden perder más datos. | ||
| + | |||
| + | Para forzar la recuperación de nuestra bdd editamos my.cnf, añadimos innodb_force_recovery=1 y reiniciamos mysql. | ||
| + | |||
| + | < | ||
| + | |||
| + | Intentamos ver si podemos hacer un volcado de la bdd tabla por tabla < | ||
| + | |||
| + | |||
| + | El siguiente paso una vez que hemos podido hacer el volcado es borrar la/s tablas corruptas < | ||
| + | |||
| + | Quitamos las opciones que añadimos al fichero my.cnf y reiniciamos mysql | ||
| + | |||
| + | Como paso final importamos cada tabla que habíamos | ||
| + | |||
| + | |||
| + | === Recuperación mediante los ficheros y frm === | ||
| + | |||
| + | Los ficheros ibd contienen los datos y los ficheros frm la estructura . | ||
| + | |||
| + | Lo primero de todo es que vamos a necesitar es instalar el paquete mysql-utilities para poder usar la herramienta mysqlfrm. | ||
| + | |||
| + | < | ||
| + | |||
| + | Copiamos todos los ficheros de mi BDD a una nueva localización. < | ||
| + | < | ||
| + | |||
| + | Lanzamos desde la ubicación de la copia una nueva instancia de la BDD pero es muy importante que sea en otro puerto distinto y que mysql tengas permisos de escritura en la carpeta | ||
| + | ya que no podemos levantar dos instancias como root | ||
| + | |||
| + | |||
| + | |||
| + | cd /tmp/ | ||
| + | mysqlfrm --user=mysql --server=root: | ||
| + | |||
| + | |||
| + | |||
| + | | ||
| + | |||
| + | |||
| + | ==== Solucionar problemas de corrupción ==== | ||
| + | Si tenemos problemas de que la base de datos de zabbix se queda incoherente, | ||
| + | |||
| + | <sxh sql> | ||
| + | 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 < | ||
| + | |||
| + | ==== Borrar registros huérfanos ==== | ||
| + | https:// | ||
| + | |||
| + | |||
| + | ==== Referencias ==== | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * https:// | ||