Backup: Copia de seguridad de Athento ECM

AthentoECM permite realizar copias de seguridad mientras el sistema continúa funcionando. Para realizar las copias es necesario tener en cuenta algunos aspectos:

  • Hora de la copia: escoger una hora en la que el sistema registre poca actividad con el fin de evitar pérdidas de información parciales.
  • Tipo de copia de seguridad: puede ser completa o incremental. Normalmente se realiza una completa y a partir de ese momento, incrementales cada día, semana o mes.
  • Software a copiar: decidir qué elementos de software se desean almacenar:
    • Software y configuración: son los elementos que convierten al sistema en la herramienta que es. No son elementos que cambien con frecuencia (quizá la configuración pueda cambiar), pero conviene disponer de una copia del momento de instalación y de todos los cambios de configuración o software que se realicen.
    • Datos: los datos que procesa, crea, modifica y elimina el sistema en su funcionamiento. En AthentoECM, los datos se almacenan en 2 almacenes, base de datos y sistema de ficheros.
  • Ubicación de las copias. Es recomendable almacenar las copias de seguridad en lugares diferentes para evitar accidentes y pérdida de información.

Para poder restaurar un sistema completamente, es necesario disponer de copias de seguridad del software, la configuración y los datos.

Instalar software requerido

Para realizar copias de seguridad de una instalación standard de AthentoECM es necesario instalar en el servidor los siguientes paquetes:

  • rdiff-backup
  • pigz
apt-get install -qq -y pigz rdiff-backup

Realizar copia de seguridad

Copias semanales

Se recomienda almacenar copia semanalmente de los elementos que conforman el sistema (software + configuración) ya que no son elementos que cambien a diario: 

rdiff-backup --print-statistics /etc /mnt/backupstorage/incremental/etc

rdiff-backup --print-statistics /var/lib/nuxeo/server/ /mnt/backupstorage/incremental/var/lib/nuxeo/server

Copias diarias

Se recomienda almacenar copia diaria incremental de los datos con los que trabaja el sistema. Esto es: base de datos + repositorio.

Volcado de las base de datos mediante la herramienta adecuada para ello (por defecto, postgresql y mondodb):

pg_dump -p 5433 -Z0 -Fc nuxeo | pigz --rsyncable > /mnt/backupstorage/db/nuxeo.pigz.dump.gz

mongodump -h localhost --gzip --db nuxeo --archive=/mnt/backupstorage/db/mongodb.nuxeo.archive.gz

Esto genera ficheros que se sobreescriben diariamente. Antes de ser sobreescritos, se copian incrementalmente a la ubicación definida para ello.

Copia incremental de datos:

rdiff-backup --print-statistics /mnt/backupstorage/db/ /mnt/backupstorage/incremental/db

rdiff-backup --print-statistics /var/lib/nuxeo/repo/ /mnt/backupstorage/incremental/var/lib/nuxeo/repo

ADVERTENCIA: la copia del repositorio de binarios puede ser pesada y ocupar mucho espacio dependiendo del volumen de datos de la instancia. Es recomendable asegurarse de que va a caber en el destino y lanzarla en momentos de poca carga del sistema.

Restaurar la copia de seguridad

Es importante tener en cuenta algunos puntos:

  • La restauración debe hacerse con AthentoECM parado.
  • Es necesario cambiar de nombre o eliminar (previo backup) las bases de datos de postgresql y mongodb ANTES de comenzar el proceso y con AthentoECM parado.
  • Es necesario asegurar que se dispone de espacio suficiente en el servidor para albergar los archivos restaurados.
  • Si alguno de los servidores de base de datos (mongodb o postrgresql) se ha vuelto inestable, estabilizarlo antes de continuar.

Restauración de datos

Normalmente la restauración de datos es suficiente. Supongamos que queremos restaurar el estado del sistema de 10 días atrás.

  • Restaurar los datos binarios y de base de datos.

rdiff-backup -r 10D /mnt/backupstorage/incremental/var/lib/nuxeo/repo /tmp/repo
rdiff-backup -r 10D /mnt/backupstorage/incremental/db /tmp/db

ADVERTENCIA: Asegurar que la restauración se realiza sobre un directorio con capacidad para albergar el volumen de datos del repositorio. En el ejemplo se utiliza /tmp.

  • Cargar las bases de datos con los datos restaurados.
su - postgres -c "gzip -d -c /tmp/db/nuxeo.pgiz.dump.gz | pg_restore -p 5433 --disable-triggers  --clean -d nuxeo -v
mongorestore --gzip --archive=/tmp/db/mongodb.nuxeo.archive.gz --db nuxeo