...
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
Code Block |
---|
apt-get install -qq -y pigz rdiff-backup |
Realizar copia de seguridad
Paso 0: copia inicial
Una vez instalado el sistema, se recomienda hacer una copia en el instante 0 para poder restaurar ese punto de desarrollo del software. Se recomienda repetir esta copia cuando haya cambios de software y/o de configuración. Ubicados en la ruta donde almacenemos los backups, ejecutar:
Code Block |
---|
tar cfvz athentoecm.tar.gz <path_to_athentoecm_base_dir> --exclude "data"
|
Paso 1: copia de datos
Incrementalmente y comenzando tras la copia inicial, se han de salvar los datos del sistema que, como hemos visto, requieren 2 almacenados:
...
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:
Code Block |
---|
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 , en el caso de PostgreSQL(por defecto, postgresql y mondodb):
Code Block |
---|
pg_dump -Ft <database_name_here> > athentoecm.database.tar
|
Repositorio de binarios: es el lugar donde athentoecm almacena los binarios adjuntos a documentos. Los valores de source y destination son parte de la configuración de la instancia.
Code Block |
---|
rsync -avzh <source> <destination> |
...
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:
Code Block |
---|
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. Para ello:
Restaurar el directorio de binarios. Para ello, se recomienda restaurar mediante copia el directorio de backup (destination en el paso anterior) sobre una nueva ruta y configurar athentoecm para apuntar a la nueva ruta.
Code Block |
---|
cp -r destination source |
Restautar la base de datos. También para este caso se recomienda crear una nueva base de datos y restaurar sobre ella la última copia de seguridad disponible.
Code Block |
---|
su postgres <<'EOF'
psql -c "CREATE DATABASE athentoecm_1 WITH ENCODING 'UTF8';"
pg_restore -Ft athentoecm.database.tar
EOF |
...
Supongamos que queremos restaurar el estado del sistema de 10 días atrás.
Restaurar los datos binarios y de base de datos.
Code Block |
---|
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.
Code Block |
---|
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 |