Restaurando Alfresco: cómo se usa una copia de seguridad

/ / Blog, Document Management
Cada vez queda menos para la BeeCon 2016
Creando presentaciones con Markdown y herramientas Open Source

La semana pasada estábamos realizando una prueba de carga en uno de nuestro servidores internos de test de Alfresco para evaluar el comportamiento del sistema con un millón de documentos en una instalación Community 5.1.

No obstante, no tuvimos en cuenta que nuestro CentOS 6 estaba configurado para almacenar únicamente 1 millón de inodos, por lo que a mitad de carga nos quedamos sin espacio.

$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/vzfs      1000000 997947    2053  100% /
none           1572864    154 1572710    1% /dev

Dado que era un servidor de prueba, pensamos que la manera más rápida de devolverlo a la vida era restaurar la copia de seguridad semanal que habíamos programado en nuestro /etc/cron.weekly

Comenzamos generando un poco de espacio en el sistema, para poder trabajar sin problemas, eliminando del sistema de ficheros el repositorio de Alfresco.

$ service alfresco stop
$ cd /opt/alfresco 
$ rm -rf alf_data

A continuación, descomprimimos la copia de seguridad para extraer el DUMP de PostgreSQL.

$ cd /opt/alfresco-backup
$ cp alfresco-backup-03_14_2016.tar.gz /tmp
$ cd /tmp
$ tar xvf alfresco-backup-03_14_2016.tar.gz
$ cd tmp/03_14_2016
$ ls
alf_data.tar.gz   pgdump_alfresco.sql

Después eliminamos la base de datos actual y restauramos el DUMP.

$ su - postgres
postgres=# drop database alfresco;
DROP DATABASE
postgres=# CREATE DATABASE alfresco
postgres-# WITH OWNER = postgres
postgres-# ENCODING = 'UTF8'
postgres-# TABLESPACE = pg_default
postgres-# LC_COLLATE = 'es_ES.utf8'
postgres-# LC_CTYPE = 'es_ES.utf8'
postgres-# CONNECTION LIMIT = -1
postgres-# TEMPLATE template0;
CREATE DATABASE
postgres=# GRANT ALL ON DATABASE alfresco TO public;
GRANT
postgres=# GRANT ALL ON DATABASE alfresco TO postgres;
GRANT
postgres=# GRANT ALL ON DATABASE alfresco TO alfresco;
GRANT
postgres=# \q

$ psql alfresco < /tmp/tmp/03_14_2016/pgdump_alfresco.sql

$ exit

Una vez que la base de datos se encuentra operativa, restauramos el contenido del sistema de ficheros y arrancamos Alfresco.

$ cd /tmp/tmp/03_14_2016
$ tar xvf alf_data.tar.gz
$ cd opt/alfresco
$ mv alf_data /opt/alfresco

$ service alfresco start

Tras verificar que el sistema funciona correctamente, podemos eliminar los recursos temporales y comprobar el uso de recursos tras la actuación.

$ cd /tmp
$ rm -rf tmp
$ rm -rf alfresco-backup-03_14_2016.tar.gz

$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/vzfs      1000000 135588  864412   14% /
none           1572864    154 1572710    1% /dev

Si los backups de Alfresco se realizan correctamente, almacenando junto el DUMP de base de datos y el sistema de ficheros del repositorio, bastan 10 minutos para devolver el sistema a la vida.

El método descrito es aplicable a entornos de desarrollo, ya que hemos omitido algunas precauciones que serían esenciales para la realización de esta operación en entornos productivos. No obstante, los pasos de esta operativa son en esencia equivalentes en ambos escenarios.

Unidad de negocio, keensoft