Capítulo 8 · 8.2
Cómo incluir correctamente las bases de datos y los volúmenes de Docker
Una base de datos en funcionamiento escribe constantemente en sus archivos. Si copia esos archivos a medias, su copia de seguridad puede quedar dañada. Por eso, primero se crea un volcado: una copia limpia de la base de datos en un único archivo.
¿Dónde se encuentran sus datos?
| Qué | Dónde |
|---|---|
Sus archivos compose, Caddyfile, .env y carpetas como vw-data | /srv/diensten |
Volúmenes de Docker, como uptime-kuma y n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Volcados de bases de datos | /var/backups/db |
| Configuración del servidor | /etc |
Docker antepone el nombre de su carpeta al nombre del volumen: en /srv/diensten, uptime-kuma pasa a ser diensten_uptime-kuma. Consulte los nombres reales con sudo docker volume ls.
El script de preparación
Coloque esto en /usr/local/sbin/voor-backup.sh (chmod 700). Lo inicia el script de copia de seguridad de Copias de seguridad con restic en otro lugar.
#!/bin/sh
set -e
mkdir -p /var/backups/db
chmod 700 /var/backups/db
cd /srv/diensten
# WordPress-database (MariaDB) als dump
docker compose exec -T wp-db sh -c \
'mariadb-dump --single-transaction -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' \
> /var/backups/db/wordpress.sql
Si no utiliza WordPress, omita esa parte. Si tiene una base de datos fuera de Docker, el procedimiento es el mismo con mariadb-dump --single-transaction o pg_dump.
Aplicaciones con una base de datos SQLite
Vaultwarden, Uptime Kuma y n8n guardan sus datos de forma predeterminada en un archivo SQLite dentro de su volumen o carpeta. Lo más sencillo y seguro es detenerlas brevemente durante la copia de seguridad. El script de copia de seguridad de Copias de seguridad con restic en otro lugar lo hace con docker compose stop y después docker compose start. Normalmente solo tarda un momento; por la noche nadie lo nota. Si no quiere ninguna interrupción, siga las instrucciones de copia de seguridad de la propia aplicación, como las de la wiki de Vaultwarden.
La carpeta de la propia base de datos (aquí diensten_wp-db) puede omitirla: para eso tiene el volcado.
Restaurar una aplicación
- Detenga la aplicación:
sudo docker compose stop vaultwarden. - Recupere la carpeta:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(con las variables de Copias de seguridad con restic en otro lugar). - Sustituya la carpeta por la versión restaurada y vuelva a iniciar la aplicación.
- Una base de datos se restaura importando el volcado, por ejemplo
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
