Dupliquer une base MySQL

© Paladin. Document créé le 20 mai 2007 , mis à jour le 1er février 2011.

Une personne qui n'a jamais commis d'erreurs n'a jamais tenté d'innover. Albert Einstein

Accueil du site > Astuces > FreeBSD > Dupliquer une base MySQL

MySQL / FreeBSD

Sur un serveur Unix, dupliquer une base, à condition d’avoir les droits administrateur (root) ne demande que quelques secondes. Marche à suivre…

Objectif : dupliquer une base de données MySQL sur son serveur local via un terminal (sh, csh, etc.).

L’exemple est donné ici pour FreeBSD. Il y a probablement peu de différences pour Linux. Je vous laisse compléter l’article par vos remarques (voir Répondre à cet article en bas de page).

1. Chercher le répertoire de dépôt

Les données de votre base sont dans un répertoire, appelé répertoire de dépôt. Pour trouver ce répertoire, éditez le fichier /etc/rc.conf et cherchez les lignes du style :

mysql_enable="YES"
mysql_limits="NO"
mysql_dbdir="/usr/local/var/mysql"
#mysql_args=" --log "
mysql_args=""

La ligne mysql_dbdir précise où se trouve ce répertoire de dépôt.

2. Copier la base

Allez dans la répertoire dépôt :

cd /usr/local/var/mysql/

Dans ce répertoire de dépôt, vous retrouvez vos bases de données. Entrez la commande du style :

cp –Rp Ma_base Copie_de_ma_base

cp est la commande Unix pour copier un fichier ou un répertoire (dossier).

Ma_base est le nom de la base de données à copier.

Copie_de_ma_base est le nom de la copie de la base de données.

L’option –R permet de copier récursivement les données du répertoire (le répertoire et son contenu). Attention à ne pas terminer le nom de ce répertoire par un slash (/), qui demande dans ce cas à recopier le contenu du répertoire.

L’option –p permet de conserver les attributs du dossier et des fichiers (date de modification, mode, utilisateur et groupe, …).

A noter : vérifiez avant copie que les tables sont toutes fermées correctement. En cas de doute, arrêter le démon mysqld proprement, en lançant par exemple :

/usr/local/etc/rc.d/mysql-server.sh stop

Pour redémarrer le service, remplacer dans la ligne précédente stop par start.

A noter : la duplication ne recopie par les droits d’accès (les privilèges).

3. Notes complémentaires

Pour vérifier les tables d’une base, utiliser mysqlcheck. Par exemple :

mysqlcheck Copie_de_ma_base --user=root --password=secret

(remplacer ’secret’ par le mot de passe root).

Dupliquer la structure d’une base

Si vous ne voulez que dupliquer la structure de la base (donc sans le contenu), vous devez passer par les outils qui accompagnent mysql pour exporter la structure dans un script SQL et recréer cette structure dans une nouvelle base.

Exporter la structure de la base :

mysqldump --user=root --password=secret --no-data Ma_base > mon_script.sql

(là aussi, remplacer ’secret’ par le mot de passe root)

Créer la base de données de destination :

mysqladmin --user=root --password=secret create Copie_de_ma_base

Importer le script SQL pour créer les tables dans cette base :

mysql --user=root --password=secret -D Copie_de_ma_base < mon_script.sql

Plussoyez !

Les forums sont fermés.