Copias programadas y su prueba de restauración

Programa una copia diaria del clúster con systemd, borra las antiguas y comprueba que se restauran.

teseladb admin backup hace una copia consistente de todo el clúster sin parar las escrituras. Esta guía la programa cada noche y comprueba que una copia se puede restaurar.

1. El script

Guárdalo en /usr/local/bin/teseladb-backup.sh en uno de los nodos y dale permiso de ejecución. Con --dbpath, la CLI se presenta con el certificado de ese nodo:

Shell
#!/bin/sh
set -eu
DEST="/backups/$(date -u +%Y-%m-%dT%H%M)"
teseladb admin --dbpath /var/lib/teseladb backup --at now --out "$DEST"
# Keep 14 days of backups.
find /backups -mindepth 1 -maxdepth 1 -type d -mtime +14 -exec rm -rf {} +

Cada copia es una carpeta con los ficheros de cada rango y manifest.bson, que guarda el SHA-256 de cada fichero.

2. El temporizador

# /etc/systemd/system/teseladb-backup.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/teseladb-backup.sh

# /etc/systemd/system/teseladb-backup.timer
[Timer]
OnCalendar=*-*-* 03:00:00 UTC
Persistent=true

[Install]
WantedBy=timers.target
Shell
sudo systemctl enable --now teseladb-backup.timer

3. Prueba la restauración

Una copia que no has restaurado nunca no es una copia. Arranca un nodo vacío en otra máquina o directorio y restaura en él:

Shell
teseladb start --dbpath /tmp/prueba --port 28017 --peer-listen 127.0.0.1:28100 --admin-listen 127.0.0.1:28200 &
teseladb admin --node 127.0.0.1:28200 --dbpath /tmp/prueba restore --from /backups/2026-11-03T0300

restore comprueba el SHA-256 de cada fichero antes de tocar nada y solo funciona sobre un clúster vacío. Después compara recuentos con mongosh contra el puerto 28017.

4. Vigila que se hacen

Revisa systemctl list-timers teseladb-backup.timer y alerta si la última carpeta de /backups tiene más de un día.

Última actualización