Sauvegarde de PostgreSQL/MySQL vers un espace de stockage dans le cloud
Introduction
La sauvegarde des bases de données est l'une des procédures les plus importantes pour garantir la sécurité et la fiabilité des sites web et des applications. La perte de données peut survenir pour de nombreuses raisons : panne de serveur, erreur de l'administrateur, problèmes de mise à jour, logiciels malveillants ou simplement erreur humaine. Des sauvegardes régulières vous permettent de restaurer rapidement votre projet sans perte de données.
Ce guide explique comment sauvegarder des bases de données PostgreSQL et MySQL, comment stocker ces sauvegardes sur un serveur Linux distant à l'aide de rsync ou de scp, et comment les transférer vers un espace de stockage cloud à l'aide de rclone.
Sauvegarde de PostgreSQL
PostgreSQL fournit l’utilitaire standard pg_dump, qui permet de créer une copie complète de la base de données sous forme de fichier SQL.
Exemple de création d’une sauvegarde :
pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql
Explication des paramètres :
-U myuser— nom d'utilisateur de la base de données-h localhost— adresse du serveur (peut être omise si le serveur est local)mydatabase— nom de la base de données/backup/...— chemin de destination$(date +%F)— ajoute la date du jour au nom du fichier
Pour gagner de l'espace, compressez immédiatement la sauvegarde :
pg_dump -U myuser mydatabase | gzip > /backup/mydatabase_$(date +%F).sql.gz
Pour sauvegarder toutes les bases de données du serveur :
pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz
Sauvegarde MySQL
Pour MySQL et MariaDB, utilisez l'utilitaire mysqldump.
Exemple de sauvegarde d’une seule base de données :
mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql
Lorsque vous exécutez cette commande, le système vous demandera le mot de passe de l'utilisateur.
Pour sauvegarder toutes les bases de données :
mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz
Pour inclure les procédures stockées et les déclencheurs, ajoutez les options --routines --triggers.
Sauvegarde vers CloudBox
CloudBox d'INTROSERV est une solution de stockage dans le cloud prenant en charge plusieurs protocoles de connexion (notamment rsync, scp, rsync via SSH, WebDAV). La simplicité d'utilisation de CloudBox facilite considérablement les tâches de téléchargement, de gestion et de récupération des données.
Vous pouvez l'utiliser comme emplacement distant pour stocker vos sauvegardes de bases de données. Vous trouverez ci-dessous les détails de configuration et des exemples de scripts.
Étape 1. Obtenir l’accès à CloudBox
Commandez l’une des formules CloudBox disponibles sur notre site web — introserv.com
Une fois le paiement effectué, le service est disponible en quelques minutes. Après l’activation du service, vous recevrez les informations de connexion :
- l'adresse du serveur (
box#####.introserv.cloud) - nom d'utilisateur (
box#####) et mot de passe
Étape 2. Connexion et synchronisation à l'aide de rsync ou scp
Utilisation de rsync (recommandée) :
rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/
Où :
user— nom d’utilisateur CloudBoxcloudbox-server— adresse de connexion/chemin_vers_les_sauvegardes_cloud/— chemin d'accès sur CloudBox
Pour un fonctionnement automatisé, il est conseillé de configurer des clés SSH :
- Générer une clé publique :
ssh-keygen -t rsa - Copiez le contenu du fichier de clé publique créé, par exemple
/root/.ssh/id_rsa.pub, dans le presse-papiers. - Accédez à la section « Profil » (passez la souris sur l'icône utilisateur en haut à droite), ajoutez le contenu de la clé dans le champ « Clés publiques » et enregistrez les paramètres.


Désormais, rsync fonctionnera sans demander de mot de passe, ce qui est pratique pour les tâches cron.
Alternative — scp :
scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/
Étape 3. Connexion et synchronisation à l'aide de rclone
Si vous souhaitez utiliser rclone pour interagir avec CloudBox, configurez-le comme suit :
- Installez rclone :
sudo apt install rclone - Lancez la configuration :
rclone config
Lors de la configuration, sélectionnez :
n— pour créer un nouveau- , par exemple «
cloudbox» - type de stockage — choisissez
sftpoussh - saisissez l'adresse du serveur au format
box#####.introserv.cloud, le nom d'utilisateur au formatbox#####, le port (dans ce cas, le port SSH — 22 par défaut) et le chemin d'accès au répertoire - effectuez l'authentification (si nécessaire)
Testez la connexion :
rclone ls cloudbox:/path_to_cloudbackups/
Copiez les données de sauvegarde :
rclone copy /backup/ cloudbox:/db-backups/ --progress
Synchronisez en supprimant les fichiers manquants localement :
rclone sync /backup/ cloudbox:/db-backups/ --progress
Si nécessaire, cryptez les fichiers avant le transfert :
rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt
Étape 4. Exemple de script d'automatisation avec CloudBox
Créez le script /usr/local/bin/db_backup_cloudbox.sh, par exemple :
#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Upload to CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Upload to CloudBox (rclone option, uncomment if used) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Remove backups older than 7 days find /backup/ -type f -mtime +7 -delete
Ajoutez ensuite une tâche cron (dans l'exemple, le script s'exécute tous les jours à 2 h du matin) :
0 2 * * * /usr/local/bin/db_backup_cloudbox.sh
Points importants à prendre en compte :
- Assurez-vous que la connexion à CloudBox est stable et que la bande passante est suffisante.
- Mettez en place une surveillance : vérifiez que les fichiers sont bien copiés.
- Testez régulièrement la restauration à partir des sauvegardes CloudBox.
- Lorsque vous utilisez des données confidentielles, pensez à chiffrer les sauvegardes.
Copie vers un serveur Linux distant via SSH
Si vous souhaitez stocker vos sauvegardes non seulement localement, mais également sur un autre serveur, utilisez rsync ou scp.
Utilisation de rsync (recommandé, car il ne copie que les modifications) :
rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/
Explication des paramètres :
user— nom d’utilisateur sur le serveur distantremote.server— adresse IP ou nom de domaine du serveur distant/remote_backups/— chemin d'accès pour le stockage des sauvegardes
Pour fonctionner sans avoir à saisir de mot de passe, configurez les clés SSH :
# Generate SSH keys: ssh-keygen -t rsa # Copy key to remote server: ssh-copy-id [email protected]
Après cela, rsync fonctionnera sans demander de mot de passe, ce qui est pratique pour les tâches cron.
Alternative à rsync — utilisation de scp :
scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/
Copie vers un espace de stockage cloud via rclone
Si vous avez besoin de stocker des sauvegardes dans le cloud (Google Drive, Dropbox, Amazon S3, etc.), utilisez rclone — un outil universel permettant de synchroniser des données avec divers services cloud.
Installation :
sudo apt install rclone
Configuration :
rclone config
Suivez les étapes de configuration interactive :
- Sélectionnez
npour créer une nouvelle connexion - Saisissez un nom, par exemple «
remote» - Sélectionnez le type de stockage (par exemple «
s3», «drive», «dropbox») - Saisissez les clés d'accès ou effectuez l'autorisation via le navigateur
Vérifiez la connexion :
rclone ls remote:path
Exemple de transfert de sauvegardes vers le cloud :
rclone copy /backup/ remote:db-backups/ --progress
Commande de synchronisation (supprime les fichiers manquants localement) :
rclone sync /backup/ remote:db-backups/ --progress
Vous pouvez également chiffrer les fichiers avant leur transfert :
rclone copy /backup/ remote:db-backups/ --progress --crypt
Sécurité et contrôle
- Stockez les sauvegardes à au moins deux emplacements : localement et à distance.
- Vérifiez régulièrement que les sauvegardes sont bien créées et transférées.
- Effectuez des restaurations tests au moins une fois par mois.
- Chiffrez les fichiers contenant des données sensibles si vous utilisez des clouds publics :
gpg -c /backup/mysql_mydatabase.sql.gz - Assurez-vous que les droits d'accès aux fichiers du répertoire
/backupsont corrects et sécurisez vos identifiants de base de données.
Restauration à partir d'une sauvegarde
PostgreSQL :
gunzip < backup.sql.gz | psql -U myuser -d mydatabase
MySQL :
gunzip < backup.sql.gz | mysql -u myuser -p mydatabase
Conclusion
La sauvegarde des bases de données PostgreSQL et MySQL est une procédure simple mais d’une importance cruciale. Même l’infrastructure la plus fiable ne peut vous protéger contre les erreurs humaines ou les défaillances techniques. La meilleure stratégie consiste à effectuer régulièrement des sauvegardes automatisées stockées sur au moins un serveur externe et dans le cloud, et à réaliser des tests de restauration périodiques.
En combinant pg_dump, mysqldump, rsync, rclone et cron, vous pouvez mettre en place un système de sauvegarde fiable et entièrement automatisé sans avoir recours à aucun logiciel tiers payant. Cette approche est facile à mettre en œuvre et convient à tous les systèmes Linux.