Dupliquer une base de données dans MySQL

Mars 2013

Cloner une base de données MySQL est très pratique pour par exemple faire des tests sans modifier la base originale, ou pour installer un environnement de développement à partir d'un environnement de production.

Malheureusement, c'est impossible à faire directement en langage SQL comme le table copy. La solution consiste à procéder en 2 étapes :

  1. Dump de la base de données (export dans un fichier .sql)
  2. Import du dump dans une nouvelle base

Dump MySQL

Pour exporter une base de données MySQL, on utilise généralement le programme mysqldump qui est l'utilitaire officiel pour faire ça. On peut aussi utiliser des applications tierces comme phpMyAdmin, Adminer, HeidiSQL ou Navicat...

Voici la commande pour faire un backup avec mysqldump :

mysqldump -e -c -u php -pphp pstuto > "pstuto_dump.sql"

Cette ligne de commande se connecte au serveur MySQL sur localhost avec le nom d'utilisateur php (-u php) et le mot de passe php (-pphp). Elle dump la base de données pstuto dans le fichier pstuto_dump.sql (répertoire courant).

Pour l'utiliser, lancer une invite de commande (cmd.exe sur windows) et copier-coller la commande (en remplaçant le nom d'utilisateur / mot de passe et base de données).

Si le programme vous demande le mot de passe (Enter Password:) c'est que mysqldump n'a pas reconnu votre mot de passe, ou qu'il est vide (comme le mot de passe de l'utilisateur root sur EasyPHP).

Étrangement il y a un espace après -u, mais pas après -p, comme c'est écrit dans la documentation officielle.

Autre point : il faut ajouter le répertoire qui contient tous les programmes MySQL (exemple: C:\EasyPHP5.2.10\mysql\bin) à la variable d'environnement %path%.

Si vous voulez en savoir plus c'est par ici : additionner des cellules avec une formule excel.

Créer une nouvelle base et y importer le dump

Une fois qu'on a notre dump, il faut créer une nouvelle base de données vide, puis y importer le dump :

mysql -u php -pphp -e "create database pstuto_copy"
mysql -u php -pphp pstuto_copy < "pstuto_dump.sql"

Méthode express

Pour les gens pressés, sachez qu'on peut faire ça en juste 2 lignes de commande, en utilisant le pipe (|) pour envoyer directement le résultat de mysqldump à mysql pour l'import :

mysql -u php -pphp -e "create database pstuto_copy"
mysqldump -u php -pphp pstuto | mysql -u php -pphp pstuto_copy

Cette méthode peut aussi servir à renommer une base de données MySQL. En fait le renommage d'une base n'est pas implémenté par MySQL, donc à la place on duplique la base en lui donnant un autre nom, et on supprime la base originale.

Allez donc jeter un oeil sur cette page : micromonde.

0 commentaire
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré