Backups de datos en Sudocu

Buenos dias:

Tenemos una duda acerca de cual seria la forma correcta de hacer un backup de datos en Sudocu. Entendemos que no basta con solo realizar un dump de la base de datos de Postgres para tener un respaldo total de la información. Creemos que es necesario también, realizar una copia de lo almacenado en Nuxeo (para evitar inconsistencias)
Concretamente la consulta seria: que recomiendan las Universidades que ya han implementado EEI en cuanto al respaldo de datos? Desde donde hacer los backups? Postgres + Nuxeo? De que forma?

Hay un hilo en este foro https://foro.comunidad.siu.edu.ar/index.php?topic=23077.msg104129, pero estaria bueno, ya que hay mas instituciones con la implementación realizada, si pudieran compartir cual es la metodologia que utilizan.

Muchas gracias

Ha grandes Rasgos es lo que vos mencionas.
A) Hacer backups de la base de datos periódicamente con script como este:


backupspostgres.sh
```bash
#!/bin/sh
#Creo un directorio con la fecha
cd /home/dba/Backups/PostGres/
PATH_B="/home/dba/Backups/PostGres/"

NOW=$(date +"%Y-%m-%d-%H-%M")
DirBackup=Postgres$NOW

PathBackup=Postgres`date +%F`
mkdir -p $PathBackup

#Exporto la base con pg_dump
cd $PathBackup
pg_dump -U postgres base > base.sql
cd ..

#comprimo el directorio
tar -cvzf $DirBackup.tgz $PathBackup
rm -r $PathBackup
#borro los archivos tgz con 10 dias de antiguedad
find $PATH_B/* -name '*.tgz' -mtime +10 -exec rm {} \;

Nota: El script en postgres debe ser ejecutado como usuario postgres y en el crontab de ese usuario

B) Hacer backups de Nuxeo que es algo asi:
Hacer una copia de la pbase de postgres en el nuxeo origen y de la carpeta con los pdfs usando el script que compartí en el otro hilo.
Este script deberia usarse a diario.

C) Por otro lado Sudocu usa volumenes por lo que ademas quizas deberias hacer backups del volumen:

I) Levantando el volumen para backup
Como se está en producción, se necesita PRIMERO levantar una segunda carpeta en el contenedor que esta corriendo (para copiar desde dentro del contenedor todos los archivos al servidor nfs).
Para hacer esto se procede de la siguiente forma:
En sudocu.yml se agrega un volume adicional, vinculandolo a otra carpeta del contenedor:

volumes:
 files:
 sudocu_files:
   driver: local
   driver_opts:
     type: nfs
     o: nfsvers=4,addr=10.1.64.101,rw
     device: ":/recursos_nfs/sudocu_storage"

(notese que el volume files sigue sin configurarse, sino que se agrega otro volumen llamado sudocu_files)

Dentro del servicio api-server en la sección volumes se agrega el segundo volumen recién creado:

   volumes:
     - files:/app/sudocu-files
     - sudocu_files:/app/sudocu-files-bkp

Luego de tener configurado así sudocu.yml, se hace un nuevo deploy del stack sudocu (solo actualización de containers)

docker stack deploy --with-registry-auth --compose-file sudocu.yml sudocu

Esto hace que se levante el segundo “volume” vinculado al sevidor nfs, en la carpeta del contenedor /app/sudocu-files-bkp

II) Backupeando los archivos

Luego de hacer esto, nos conectamos al bash del contenedor para correr el comando para copiar lo que hay en /app/sudocu-files a la carpeta /app/sudocu-files-bkp

docker exec -it sudocu_api-server.1.r5hqywh18tdf9owi7qn4fx78i /bin/bash

y ya dentro del contenedor se ejecuta

cp -p -r /app/sudocu-files /app/sudocu-files-bkp

(-p para que preserve los atributos, y -r para que lo haga de forma recursiva)

Hecho esto, se copiaron todos los archivos y estructura de directorios al servidor nfs

NOTA: Después hay que bajarlos un nivel de path, pues con ese comando se copian creando una carpeta adicional sudocu-files que al momento de implementar no tiene que estar... es decir, que en el servidor NFS se copia todo a /recursos*nfs/sudocu_storage/sudocu-files/* , hay que bajarlos a /recursos*nfs/sudocu_storage/*

III) Restaurando el estado anterior
Ya con todos los archivos copiados al volumen NFS

  • Se procede a bajar el stack
  • Eliminar los volumes involucrados
docker stack rm sudocu
docker volume rm sudocu_files
docker volume rm sudocu_sudocu_files
  • Eliminar de la configuración el segundo volumen denominado sudocu_files
  • Volver a hacer el deploy para dejar todo como al inicio
docker stack deploy --with-registry-auth --compose-file sudocu.yml sudocu

Cristian, gracias por la rta. Tenemos algunas dudas con esta guía:

  1. Nosotros hicimos los puntos A y B, los restauramos en un nuevo server y pudimos navegar los documentos desde SUDOCU, sin hacer el paso C. ¿Como pudo pasar esto? ¿Se te ocurre en que parte deberíamos verlo fallando?

  2. Si montáramos el volume files con nfs, el cp no se podría hacer directamente en dicho server, en vez de montar un nuevo volumen solo para backup? cual seria el inconveniente de esto? De hecho seria consistente con el despligue del volumen indicado en 1

  3. En los siguientes pasos


docker stack rm sudocu
docker volume rm sudocu_files
docker volume rm sudocu_sudocu_files

El segundo comando docker volume rm sudocu_files esta bien? estaría eliminando el volumen que tiene la información. Habría que regenerarlo? Hay algo que se me esta perdiendo.

Gracias!

El punto C tendría haber puesto como opcional para el caso en que tengas los volúmenes locales y no puedas bajar el sudocu (docker stack rm sudocu).
aca https://expedientes.siu.edu.ar/docs/guia-backup-nfs/Esta docu esta ahora
Si tenes volúmenes con nfs es como decís en el punto 2).
En 3) si el volumen original sigue localmente no se debe hacer “volume rm sudocu_files”.
Saludos