Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Excerpt

Como borrar respaldos de exist-db para evitar falta de espacio en disco. Válido a partir de O3BI 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>\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.

La frecuencia y horario de ejecución del respaldo puede consultarse o modificarse en <instalación o3>/exist-db/conf.xml, en la línea 567 aprox. El horario sugerido es a las 5 AM.

Code Block
<job type="system" name="daily-backup" 
            class="org.exist.storage.ConsistencyCheckTask"
            cron-trigger="0 0 5 * * ?">
            <parameter name="output" value="backup"/>
            <parameter name="backup" value="yes"/>
            <parameter name="incremental" value="no"/>
            <parameter name="incremental-check" value="no"/>
            <parameter name="max" value="2"/>
        </job>

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:

Code Block
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 otro procedimiento a ejecutar con regularidad a través de una ejecución programada en el sistema operativo.

Procedimiento manual

  1. Confirmar que el problema es el que se describe. Ante la duda revisar logs o solicitar apoyo a Soporte de Ideasoft.

  2. Eliminar en forma manual todos los backups de exist en el directorio <instalación o3>/ideasoft\o3bi\exist-db\data\backup

  3. 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.

  4. Reiniciar el servicio de exist (O3 metadata service en Windows, exist en Linux). Este paso es necesario únicamente para que eXist encuentre espacio disponible e inicie inmediatamente.


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 

  1. Se debe crear un archivo batch (.bat), con el siguiente contenido:

Code Block
@echo off
forfiles /P "C:\ideasoft\o3bi\exist-db\data\backup" /S /M *.* -d -30 /C  "cmd /c del @file /F"

Donde:

"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.

(info) En el siguiente link se puede descargar el script para Windows: BorrarBackupExist-db.bat

Para Linux

1. Se debe crear el script (.sh)  y otorgarle permisos de ejecución:

Code Block
#!/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:

Code Block
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

(info) En el siguiente link se puede descargar el script para Linux: (BorrarBackupExist-db.sh)