Sauvegarde automatique de mysql sur ubuntu

12

J'ai un serveur Ubuntu avec une daatabase Mysql. Je souhaite mettre en place une sauvegarde automatique de cette base de données pendant la nuit sur un autre serveur (ovh par exemple).

Je ne sais pas quel serait le meilleur outil pour cela. Si quelqu'un a des conseils ...

Merci d'avance.

user1260928
la source

Réponses:

29

La façon la plus simple d'automatiser cette tâche serait de combiner MySQL Dumps et un cronjob. Vous pouvez trouver beaucoup d'informations sur ce sujet sur ce site et sur d'autres sites Internet, mais pour des raisons de finalisation:

Créez un fichier mysqldump.sh

Qui contiendra la commande de vidage mysql que nous planifierons dans un travail cron (remplacez l'utilisateur, le mot de passe et le chemin d'accès pour correspondre à votre environnement):

mysqldump -u root -p<mysql_root_password> --all-databases | gzip > /desired/backup/folder/mysqldb_`date +%F`.sql.gz

Modifier: si vous souhaitez que le script stocke la sauvegarde dans un emplacement distant, montez simplement le périphérique correspondant ou partagez et utilisez le chemin de montage dans le script.

Testez le script

Assurez-vous que le script dispose des autorisations d'exécution:

chmod +x /path/to/mysqldump.sh

Exécutez le script:

sh /path/to/mysqldump.sh

Et testez qu'il fonctionne correctement (le fichier de sauvegarde sera créé dans le dossier de sauvegarde spécifié).

Créer et planifier un nouveau travail cron

Dans une invite de commandes, tapez

sudo crontab -e

Et ajoutez la ligne suivante au bas du fichier:

30 23 * * * /path/to/mysqldump.sh

Cela exécutera le script tous les jours à 23h30.

Étendez ce script simple

Il y a littéralement beaucoup de choses que vous pouvez faire pour améliorer cette méthode de sauvegarde simple:

  • Sauvegarde sur un autre système
  • Surveiller l'espace disque
  • Rapports par e-mail
  • ...

Alors ne vous arrêtez pas ici et expérimentez! :-)

Utilisez des outils de sauvegarde ou des services de sauvegarde basés sur le cloud

Bien que la méthode ci-dessus soit l'une des plus faciles et puisse être étendue pour répondre à vos besoins spécifiques, il convient de mentionner qu'il existe d'autres alternatives:

  • des outils de sauvegarde tels que AutoMySQLBackup, une application open source qui pourrait faciliter le processus de configuration de la notification par e-mail, la compression, le chiffrement, la rotation et le type (par exemple incrémentiel) de vos sauvegardes. Quant à Mai 2018, il est disponible pour Ubuntu Server via APT.
  • des services de sauvegarde basés sur le cloud tels que BackupBird, myRepono, Bitcan, etc. qui peuvent être intéressants si vous gérez plusieurs serveurs de base de données et souhaitez gérer de manière centralisée toutes leurs sauvegardes.

Veuillez garder à l'esprit que je ne suis en aucun cas lié aux solutions et services mentionnés ci-dessus et que je ne les répertorie qu'à titre de référence, alors utilisez-les à vos propres risques.

Liens / références utiles:

Cron -> https://en.wikipedia.org/wiki/Cron

Déchargement MySQL -> https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

Eduardo López
la source
4
Utiliser date +%F- qui choisira automatiquement une combinaison année + mois + date adaptée aux paramètres régionaux de l'utilisateur (par exemple, j'obtiendrai YYYY-MM-DD).
muru
Oh oui, beaucoup mieux. Je vais éditer la réponse :-)
Eduardo López
+1 Bonne réponse: exactement ce qui est nécessaire ici, ni plus ni moins.
Jos
2
Si vous devez utiliser sudo pour effectuer cette opération (a) appelez sudo crontab -eet n'oubliez pas de rendre le script exécutable:chmod +x /path/to/mysqldump.sh
zinon
zinon - Merci pour les conseils! J'ai mis à jour la réponse.
Eduardo López