Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tutoriel:sauvegarder_automatiquement_ses_bases_de_donnees [Le 02/12/2008, 10:38] – Ajout des balises <code> car sans cela les doubles -- n'apparaissent pas à l'écran jlbrd | tutoriel:sauvegarder_automatiquement_ses_bases_de_donnees [Le 24/11/2020, 18:31] (Version actuelle) – [Programmation de l'exécution des scripts avec Cron] bcag2 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---- | ||
| + | |||
| + | ====== Sauvegarder automatiquement ses bases de données MySQL ====== | ||
| + | |||
| + | Ce mini tutoriel vous présente une méthode simple pour mettre en place une sauvegarde automatique des bases de données de votre serveur [[:MySQL]]. Ce script doit être installé sur le serveur MySQL. | ||
| + | |||
| + | <note tip>Bien que le contenu de cette page reste valide, il est à noter que cette opération peut être réalisée directement avec un script fourni par votre distribution (depuis la version 9.10 inclue) : [[: | ||
| + | |||
| + | Pour ce faire, nous allons utiliser 2 scripts bash et les tâches cron. | ||
| + | |||
| + | Nous allons utiliser le cas suivant : | ||
| + | * Nous voulons sauvegarder nos 3 bases de données **mon_site**, | ||
| + | * Nous nous connectons au serveur de base de données avec le login **root** et le mot de passe **monpass**. | ||
| + | |||
| + | Attention : en aucun cas vous devez sauvegarder la base de données "à l' | ||
| + | |||
| + | Pour sauvegarder les fichiers de votre site accessibles en ftp uniquement, voir avec [[: | ||
| + | |||
| + | |||
| + | ===== Création du script ===== | ||
| + | |||
| + | Nous allons créer le script dans le répertoire **/ | ||
| + | |||
| + | Si le sous répertoire script n' | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | Le script s' | ||
| + | |||
| + | <code bash># | ||
| + | # Script de sauvegarde des bases de données mysql/ | ||
| + | # Les valeurs à paramétrer sont en fin de script dans la fonction main() | ||
| + | |||
| + | get_databases_to_backup() { | ||
| + | mysql_command=$(command -v mysql) | ||
| + | databases_list=$($mysql_command --defaults-file=/ | ||
| + | |||
| + | for exclude in $databases_exclude_list | ||
| + | do | ||
| + | | ||
| + | done | ||
| + | } | ||
| + | dump_databases () { | ||
| + | ext=" | ||
| + | mysqldump_command=$(command -v mysqldump) | ||
| + | compress_command=$(command -v gzip) | ||
| + | current_date=$(date +%F_%Hh%M) | ||
| + | cd " | ||
| + | for database in $databases_list | ||
| + | do | ||
| + | $mysqldump_command --defaults-file=/ | ||
| + | echo " | ||
| + | done | ||
| + | |||
| + | echo " | ||
| + | } | ||
| + | delete_old_backups() { | ||
| + | find_command=$(command -v find) | ||
| + | cd " | ||
| + | $find_command ./ -mtime +" | ||
| + | } | ||
| + | |||
| + | main() { | ||
| + | # toujours exclure information_schema performance_schema de la sauvegarde sinon le script générera des erreurs | ||
| + | databases_exclude_list=" | ||
| + | | ||
| + | # choix du dossier de destination des sauvegardes à ajuster à vos besoins | ||
| + | backup_folder="/ | ||
| + | if [ ! -d " | ||
| + | mkdir -p " | ||
| + | fi | ||
| + | |||
| + | get_databases_to_backup | ||
| + | dump_databases | ||
| + | |||
| + | # nombre de jours pendant lesquels il faut conserver les sauvegardes, | ||
| + | delete_backups_older_than_days=1 | ||
| + | if [ $delete_backups_older_than_days != " | ||
| + | delete_old_backups | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | main | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Modification des permissions ===== | ||
| + | Nous allons faire en sorte que seul root puisse lire, exécuter, et modifier ce scripts : | ||
| + | cd / | ||
| + | |||
| + | |||
| + | |||
| + | ===== Programmation de l' | ||
| + | |||
| + | FIXME Consulter la page [[:cron]] où il est préconisé d' | ||
| + | |||
| + | |||
| + | Dans le répertoire **/etc**, vous pouvez voir qu'il existe des répertoires cron.daily, cron.hourly, | ||
| + | |||
| + | dans le fichier **/ | ||
| + | |||
| + | Donc comme nous l' | ||
| + | cd / | ||
| + | sudo ln -s / | ||
| + | |||
| + | |||
| + | <note important> | ||
| + | Surtout ne faites pas de lien symbolique avec un point " | ||
| + | </ | ||
| + | |||
| + | C'est fini :) | ||
| + | |||
| + | ===== Conclusion ===== | ||
| + | Chaque nuit, à l' | ||
| + | |||
| + | Si vous avez un problème sur une base de données, vous pourrez donc extraire l' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | // | ||
