Je teste actuellement une application pour gérer le backup de divers base de données
https://github.com/databasus/databasus
Développé en Go
Interface un peu vieillote, n’est pas très optimisé et pas très propre dans le code.
Un fichier .env à la racine du système /.env, 2.6Go de données dans le /home/user/go
https://github.com/Skyfay/DBackup
Développé en TypeScript
Pour l’instant, pas d’agent, pas de tunnel ssh possible. Mais ça fonctionne sur ma vieille debian. Le développeur est actif, les backups sont accessible facilement.
Sur les 3 applis testé, je valide.
https://github.com/David-Crty/databasement
Développé en laravel
Galère pour configurer le ssh vers une vieille debian. Après avoir configurer un .ssh/config dans les container databasement et databasement-worker et ajouté les clés à la main
Le PUID et PGID du .env n’est pas pris en compte dans le databasement-worker, obligé de modifier la command de lancement
services:
app:
image: davidcrty/databasement:1
container_name: databasement
restart: unless-stopped
ports:
- "2226:2226"
env_file: .env
volumes:
- ./data:/data
- ./backups:/backups
- ./ssh_config:/home/application/.ssh
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:2226/health"]
interval: 10s
timeout: 5s
retries: 5
worker:
image: davidcrty/databasement:1
container_name: databasement-worker
restart: unless-stopped
command: sh -c "groupmod -o -g 1001 application && usermod -o -u 1001 application && php artisan db:wait --check-migrations && php artisan queue:work --queue=backups,default --tries=3 --timeout=3600 --sleep=3 --max-jobs=1000"
env_file: .env
volumes:
- ./data:/data
- ./ssh_config:/home/application/.ssh
depends_on:
app:
condition: service_healthy
Une fois cette étape fastidieuse réussi, le mariadb-dump ne fonctionne pas, car j’ai du mysql. Dommage d’écrire en gros “Mysql/Mariadb”.
Contrairement à DBackup qui lui fait bien la distinction entre mysql et mariadb et qui fonctionne sur ma vieille debian.
Databasement intègre un agent, mais c’est dommage qu’il faille installer docker pour le faire fonctionner. Surtout que pour lancer l’agent, le container télécharge toute l’application juste pour exécuter l’agent. Il faudrait un agent executable autonome.