Chapitre 8 · 8.2
Bien inclure les bases de données et les volumes Docker dans vos sauvegardes
Une base de données en cours d'exécution écrit sans cesse dans ses fichiers. Si vous copiez ces fichiers en pleine écriture, votre sauvegarde risque d'être corrompue. C'est pourquoi vous créez d'abord un dump : une copie propre de la base de données dans un seul fichier.
Où se trouvent vos données ?
| Quoi | Où |
|---|---|
Vos fichiers compose, Caddyfile, .env et des dossiers comme vw-data | /srv/diensten |
Volumes Docker, comme uptime-kuma et n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Dumps de bases de données | /var/backups/db |
| Paramètres du serveur | /etc |
Docker place le nom de votre dossier devant le nom du volume : dans /srv/diensten, uptime-kuma devient donc diensten_uptime-kuma. Consultez les noms réels avec sudo docker volume ls.
Le script de préparation
Placez ceci dans /usr/local/sbin/voor-backup.sh (chmod 700). Il est lancé par le script de sauvegarde de Sauvegardes avec restic vers un autre emplacement.
#!/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 vous n'utilisez pas WordPress, supprimez cette partie. Si vous avez une base de données en dehors de Docker, la procédure est la même avec mariadb-dump --single-transaction ou pg_dump.
Applications avec une base de données SQLite
Vaultwarden, Uptime Kuma et n8n conservent par défaut leurs données dans un fichier SQLite, dans leur volume ou leur dossier. La solution la plus simple et la plus sûre : arrêtez-les brièvement pendant la sauvegarde. C'est ce que fait le script de sauvegarde de Sauvegardes avec restic vers un autre emplacement avec docker compose stop, puis docker compose start. Cela ne dure généralement qu'un instant ; la nuit, personne ne s'en aperçoit. Si vous ne souhaitez aucune interruption, suivez les instructions de sauvegarde de l'application elle-même, comme celles du wiki de Vaultwarden.
Vous ignorez le dossier de la base de données elle-même (ici diensten_wp-db) : le dump est là pour cela.
Restaurer une application
- Arrêtez l'application :
sudo docker compose stop vaultwarden. - Récupérez le dossier :
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(avec les variables de Sauvegardes avec restic vers un autre emplacement). - Remplacez le dossier par la version restaurée et redémarrez l'application.
- Pour restaurer une base de données, importez le dump, par exemple
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
