Cómo borrar respaldos de exist-db para evitar falta de espacio en disco. Válido a partir de O3 BI versión 7.
Introducción
Cuando se realiza una instalación de O3 BI, por defecto se crea una carpeta contenedora de respaldos de Exist-db, en <instalación o3>/ideasoft\o3bi\exist-db\data\backup
Esta base de datos xml almacena la metadata de O3 y se respalda a diario en forma automática, generando un archivo .zip cada vez. Su finalidad es disponer de un respaldo actualizado en caso de tener que restaurar la instalación de O3. En esa base de datos se guardan la mayoría de los artefactos creados en O3, en particular, los de mayor relevancia: las vistas de los cubos.
Esta frecuencia de respaldo hace que si no se controlan los archivos guardados, pueden terminar consumiendo espacio hasta llenar la unidad donde se encuentre la instalación de O3 BI.
En este escenario la base exist queda en modo Read-only, afectando la operativa normal de O3 BI (cubos se actualizan pero no quedan en línea, se presenta error al intentar guardar vistas). La forma de identificar con certeza esta situación es consultando server.log o el log de construcción de los cubos que no se encuentren disponibles, donde el mensaje es:
Error: Exception occured: ideasoft.o3.schema.O3Exception: Failed to invoke method parse in class org.exist.xmlrpc.RpcConnection: Database is read-only (08/01/2019 01:01:07) Debug: ideasoft.o3.schema.O3Exception: Failed to invoke method parse in class org.exist.xmlrpc.RpcConnection: Database is read-only
Se propone un procedimiento manual a ejecutar por única vez, para solucionar el problema rápidamente y reestablecer el servicio de exist, y un procedimiento a ejecutar con regularidad a través de una ejecución programada en el sistema operativo.
Procedimiento manual
- Eliminar en forma manual todos los backups de exist en el directorio <instalación o3>/ideasoft\o3bi\exist-db\data\backup
- Asegurarse que se generó suficiente espacio libre, y que la falta de espacio no está siendo causada por otro sistema/proceso. Es relativo a cada servidor, pero una referencia de espacio disponible pueden ser al menos 10 GB.
- Reiniciar el servicio de exist (O3 metadata service en Windows, exist en Linux)
Procedimiento programado
Se propone un procedimiento para mantener acotada la cantidad de respaldos. A continuación se detalla el script a definir, tanto como para Windows como para Linux, para la eliminación de los respaldos.
Para Windows
- Se debe crear un archivo batch (.bat), con el siguiente contenido:
@echo off forfiles /P "C:\ideasoft\o3bi\exist-db\data\backup" /S /M *.* -d -30 /C "cmd /c del @file /F"
"C:\ideasoft\o3bi" es la ubicación de la instalación de O3BI y "30" es la cantidad de días (respaldos) que se desea mantener, eliminando todos los que tienen mayor antigüedad.
2. Una vez definido el script, se debe programar su ejecución con el "Programador de tareas", con la frecuencia y en el horario que se consideren necesarias.
Queda a disposición para su descarga el script para Windows: BorrarBackupExist-db.bat
Para Linux
1. Se debe crear el script (.sh) y otorgarle permisos de ejecución:
#!/bin/bash find /opt/ideasoft/o3bi/exist-db/data/backup* -mtime +30 -exec rm {} \;
2. Se puede programar en cron el script, o directamente ejecutarlo como se explica a continuación:
0 5 * * * find /opt/ideasoft/o3bi/exist-db/data/backup* -mtime +30 -exec rm {} \;
Nota: En este ejemplo se va a ejecutar a las 05:00 AM diariamente