Informatique:Backup MySql
Un article de MacodaWiki.
Sommaire |
Backup
Article original : ZDNET - Sauvegarde de BD MySQL
Exporter des tables vers des fichiers texte
Une alternative à la simple copie consiste à utiliser l'outil mysqldump inclus dans MySQL. Il peut exporter une table, une base de données ou toutes les bases de données vers un fichier texte. L'utilisation de mysqldump est la simplicité même: il suffit d'exécuter le programme avec le nom de la base de données à exporter, comme ci-dessous:
$ mysqldump -u root -psecret stocksdb
L'outil mysqldump se connectera au serveur MySQL, établira une session à l'aide des justificatifs d'identification fournis, puis affichera la structure et les données de la table sous forme de commandes SQL reproductibles. Voici un fragment du résultat:
-- -- Dumping data for table 'portfolio' -- INSERT INTO portfolio VALUES (1,'DHDU',2589,77.56); INSERT INTO portfolio VALUES (2,'YHOO',3200,45.65); INSERT INTO portfolio VALUES (3,'WMT',100,53.29);
Bien sûr, l'affichage sur la console ne sert pas à grand chose. Il faut que vous inscriviez le résultat dans un fichier qui peut ensuite être sauvegardé et restauré. Il suffit de rediriger le résultat vers un fichier en modifiant la commande précédente:
$ mysqldump -u root -psecret stocksdb > stocksdb.sql [/code]
Pour sauvegarder uniquement une table spécifique, faites suivre le nom de la base de données du nom de la table. La commande suivante n'extrait que la structure et les données de la table users dans la base de données stocksdb:
$ mysqldump -u root -psecret stocksdb users > users.sql
Pour exporter toutes les bases de données du système, utilisez le raccourci --all-databases:
$ mysqldump -u root -psecret --all-databases > backup.sql
Remarque: si vous utilisez l'option --all-databases, le résultat SQL de mysqldump contient une instruction CREATE DATABASE pour initialiser chaque base de données. Il est ainsi plus facile de restaurer l'intégralité des bases de données en une fois (comme vous le verrez ci-après).
Si vous voulez que la sauvegarde ne contienne que la structure de la table, utilisez l'option --no-data:
$ mysqldump -u root -psecret --no-data stocksdb > stocksdb.sql
C'est extrêmement utile si vous avez besoin de créer une copie vierge d'une base de données; par exemple, lorsque vous installez une application et devez initialiser un ensemble de tables sans aucun enregistrement. Vous pouvez également faire l'inverse: sauvegarder uniquement les données, sans la structure de la table:
$ mysqldump -u root -psecret --no-create-info stocksdb > stocksdb.sql
Restauration
Article original : ZDNET - Restauration de BD MySQL
Restaurer des tables MySQL Ã partir de fichiers de sauvegarde texte
La sauvegarde de vos bases de données et tables ne représente que la moitié du processus. L'autre facette consiste à savoir comment les restaurer en cas de panne. Heureusement, cette procédure est très simple avec MySQL. Comme le résultat de mysqldump est une série d'instructions SQL, il peut être simplement redirigé vers un client MySQL pour recréer la structure de la base de données d'origine et son contenu.
En supposant que vous ayez sauvegardé toutes vos bases de données dans un fichier nommé backup.sql avec la commande mysqldump --all-databases, vous pouvez les restaurer à l'aide de la commande suivante:
$ mysql -u root -psecret < backup.sql
Si vous n'avez pas utilisé l'option --all-databases mais avez sauvegardé de façon sélective une ou plusieurs tables ou bases de données, vous devez indiquer à MySQL dans quelle base les placer lorsque vous les restaurez. Pour ce faire, il faut ajouter l'option -D à la ligne de commande précédente. L'exemple suivant restaure les tables du fichier stocksdb.sql dans la base de données appelée stocks2:
$ mysql -u root -psecret -D stocks2 < stocksdb.sql
Exporter et importer dans différents formats
SQL n'est pas le seul format de sortie dans lequel vous pouvez sauvegarder vos bases de données MySQL. Le programme mysqldump vous permet de sauvegarder des enregistrements dans divers formats, dont CSV ou tout autre format avec vos propres délimiteurs. Il vous suffit d'ajouter l'argument --fields-terminated-by à la ligne de commande mysqldump:
$ mysqldump -u root -psecret --no-create-info --tab=/tmp --fields-terminated-by=',' stocksdb
mysqldump générera alors dans le répertorie /tmp un fichier qui contiendra les enregistrements issus de la table stocksdb, les champs étant séparés par une virgule. Si vous voulez que chaque ligne se termine par un séparateur particulier, vous pouvez aussi utiliser l'argument --lines-terminated-by pour marquer chaque ligne par un délimiteur donné.
Tout comme vous pouvez exporter des données dans différents formats, vous pouvez aussi les importer dans différents formats. Par exemple, si vous aviez un fichier séparé par des tabulations qui contient des enregistrements de table, comme suit:
1 DHDU 2589 77.56 2 YHOO 3200 45.65 3 WMT 100 53.29
vous pourriez utiliser l'outil mysqlimport pour lire les données dans une base de données MySQL, de la façon suivante:
$ mysqlimport -u root -psecret --fields-terminated-by='\t' test /tmp/portfolio.txt
Sachez que le nom de la base du fichier source détermine dans quelle table les données sont insérées. Dans le cadre de votre procédure de sauvegarde, conservez toujours au moins deux exemplaires de chaque jeu de sauvegarde (chacun étant conservé dans un endroit différent). Lisez également les pages du manuel MySQL pour connaître les divers outils d'exportation et d'importation de données afin de savoir comment les adapter au mieux à votre environnement.
Il faut espérer que vous n'aurez jamais besoin de restaurer une base de données corrompue à partir de vos sauvegardes. Néanmoins, vous pourrez dormir sur vos deux oreilles sachant que, si le pire devait survenir, vous disposez des outils permettant de le faire en toute efficacité et sans guère de gêne pour vos utilisateurs.
