Sauvegarder et restaurer – Base de données avec mysql et mysqldump

Pour Sauvegarder et restaurer des données Mysql en ligne de commande on utilise les utilitaires mysqldump et mysql.
De préférence on utilise le compte utilisateur de la base créé en même temps que votre base de données afin de ne pas avoir les droits partout et de faire de mauvaise manipulation sur les autres base de données de votre serveur mysql.

Sauvegarde MySql

Il y a différents types de sauvegarde mysql.
On peut sauvegarder toutes les bases de données, une seule base de données ou encore certaines tables d’une ou de plusieurs bases.

Pour sauvegarder toutes les bases de données on utilise la commande suivante :

[pastacode lang= »markup » manual= »mysqldump%20–user%3Dmon_user%20–password%3Dmon_password%20–all-databases%20%3E%20fichier_destination.sql%0A%0AOU%0A%0Amysqldump%20-u%20mon_user%20-p%20–all-databases%20%3E%20fichier_destination.sql » message= » » highlight= » » provider= »manual »/]

Pour sauvegarder une base de données précise :

[pastacode lang= »markup » manual= »mysqldump%20–user%3Dmon_user%20–password%3Dmon_password%20–databases%20nom_de_la_base%20%3E%20fichier_destination.sql%0A%0AOU%0A%0Amysqldump%20-u%20mon_user%20-p%20nom_de_la_base%20%3E%20fichier_destination.sql » message= » » highlight= » » provider= »manual »/]

Pour sauvegarder plusieurs bases de données :

[pastacode lang= »markup » manual= »mysqldump%20–user%3Dmon_user%20–password%3Dmon_password%20–databases%20nom_de_la_base_1%20nom_de_la_base_2%20%3E%20fichier_destination.sql%0A%0AOU%0A%0Amysqldump%20-u%20mon_user%20-p%20nom_de_la_base_1%20nom_de_la_base_2%20%3E%20fichier_destination.sql » message= » » highlight= » » provider= »manual »/]

 

Pour sauvegarder une table précise :

[pastacode lang= »markup » manual= »mysqldump%20–user%3Dmon_user%20–password%3Dmon_password%20–databases%20nom_de_la_base%20–tables%20nom_de_la_table%20%3E%20fichier_destination.sql%0A%0AOU%0A%0Amysqldump%20-u%20mon_user%20-p%20nom_de_la_base%20-t%20nom_de_la_table%20%3E%20fichier_destination.sql » message= » » highlight= » » provider= »manual »/]

Pour sauvegarder plusieurs tables :

[pastacode lang= »markup » manual= »mysqldump%20–user%3Dmon_user%20–password%3Dmon_password%20–databases%20nom_de_la_base%20–tables%20nom_de_la_table_1%20nom_de_la_table_2%20%3E%20fichier_destination.sql%0A%0AOU%0A%0Amysqldump%20-u%20mon_user%20-p%20nom_de_la_base%20-t%20nom_de_la_table_1%20nom_de_la_table_2%20%3E%20fichier_destination.sql » message= » » highlight= » » provider= »manual »/]

Pour tous ces types de sauvegarde mysql les fichiers générés sont en .sql. Cela dit on peut mettre l’extension que l’on veut comme .txt par exemple. Ca n’a pas d’importance.
Les fichiers sont lisibles en clair et contiennent toutes les commandes SQL pour pouvoir faire une restauration mysql.

Cela dit les fichiers .sql sont volumineux. Pour gagner de la place, on va les compresser à la volée lors de la sauvegarde.

Compresser la sauvegarde mysql

Pour compresser les données, nous allons utiliser gunzip après avoir invoqué mysqldump.

Cela donnera des commandes du type :

[pastacode lang= »markup » manual= »mysqldump%20%3Ccommandes%3E%20%7C%20gzip%20%3E%20fichier_destination.sql.gz%0A%09%0AExemple%20%3A%0A%09%0Amysqldump%20-u%20mon_user%20-p%20-B%20nom_de_la_base%20%7C%20gzip%20%3E%20fichier_destination.sql.gz » message= » » highlight= » » provider= »manual »/]

Exemple avec la commande de sauvegarde complète :

[pastacode lang= »markup » manual= »mysqldump%20–user%3Dmon_user%20–password%3Dmon_password%20–all-databases%20%7C%20gzip%20%3E%20fichier_destination.sql.gz%0A%0AOU%0A%0Amysqldump%20-u%20mon_user%20-p%20–all-databases%20%7C%20gzip%20%3E%20fichier_destination.sql.gz » message= » » highlight= » » provider= »manual »/]

A noter qu’avec cette méthode, la commande de sauvegarde mysql produit un seul fichier compressé. le fichier source n’existe plus.

Restauration MySql

Pour la restauration mysql on n’utilise plus la commande mysqldump. On utilise la commande mysql.
La commande mysql va aller lire un fichier puis le restaurer en fonction de son contenu et de ses instructions.

La restauration mysql peut se faire pour toutes les bases de données ou pour un base de données précise.

Exemple sans distinction de base de données :

[pastacode lang= »markup » manual= »mysql%20–user%3Dmon_user%20–password%3Dmon_password%20%3C%20fichier_source.sql » message= » » highlight= » » provider= »manual »/]

Exemple avec distinction de base de données :

[pastacode lang= »markup » manual= »mysql%20–user%3Dmon_user%20–password%3Dmon_password%20nom_de_la_base%20%3C%20fichier_source.sql » message= » » highlight= » » provider= »manual »/]

Autre exemple pour restaurer dans une base de données précise :

[pastacode lang= »markup » manual= »mysql%20–user%3Dmon_user%20–password%3Dmon_password%20nom_de_la_base%20%3C%20fichier_source.sql%0A%0AOU%0A%0Amysql%20-u%20mon_user%20-p%20nom_de_la_base%20%3C%20fichier_source.sql » message= » » highlight= » » provider= »manual »/]

Exemple avec base de données compressé :

[pastacode lang= »markup » manual= »gunzip%20-c%20ma_base_de_donnees.sql.gz%20%7C%20mysql%20-u%20mon_user%20-p%20ma_base_de_donn%C3%A9es » message= » » highlight= » » provider= »manual »/]

Maintenant que tout est clair, on peut programmer une tâche CRON pour sauvegarder à intervalle régulier nos bases de données.

 

Sources