MySQL
Un article de WindowsLinux.net - Astuces pour Windows et Linux !.
Installation
L'installation sous Debian se fait très simplement :
aptitude install mysql-server-5.0
Un script très intéressante se trouve alors à cet emplacement :
/usr/bin/mysql_secure_installation
Vérifier la version installée
Vous pouvez afficher la version de MySQL avec la commande suivante :
# mysql -V mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2
Pour visualiser l'état de fonctionnement de la base de données
# /etc/init.d/mysql status /usr/bin/mysqladmin Ver 8.41 Distrib 5.0.32, for unknown-linux-gnu on arm Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Server version 5.0.32-Debian_7etch5-log Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 10 days 3 hours 34 min 59 sec Threads: 1 Questions: 471 Slow queries: 0 Opens: 142 Flush tables: 1 Open tables: 24 Queries per second avg: 0.001.
Comment démarrer/arrêter/redémarrer une base de données
- Dans le cas d'une base de données classique :
# /etc/init.d/mysql (start|stop|restart|reload|force-reload)
- Dans le cas d'un noeud de cluster :
# /etc/init.d/mysql-ndb (start|stop|restart|reload|force-reload)
- Dans le cas d'un médiateur de cluster :
# /etc/init.d/mysql-ndb-mgm (start|stop|restart|reload|force-reload)
Fichiers de configuration
Tous les fichiers se trouvent dans le dossier /etc/mysql :
- debian.cnf : fichier de configuration généré automatiquement par Debian, contient le login de l'utilisateur système Debian dans MySQL ainsi que son mot de passe. Cet utilisateur permet à Debian de faire la maintenance des bases de MySQL.
Exemple :
Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = XXXXXXXXXXXXXXXX socket = /var/run/mysqld/mysqld.sock
- debian-log-rotate.conf : Définit la quantité de fichiers de logs à stocker.
Exemple :
KEEP_BINARY_LOGS=2
- debian-start : Script qui contient la liste des opérations de maintenance à effectuer lors du démarrage de MySQL.
Exemple :
#!/bin/bash # # This script is executed by "/etc/init.d/mysql" on every (re)start. # # Changes to this file will be preserved when updating the Debian package. # source /usr/share/mysql/debian-start.inc.sh MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" MYCHECK="/usr/bin/mysqlcheck --defaults-file=/etc/mysql/debian.cnf" MYCHECK_SUBJECT="WARNING: mysqlcheck has found corrupt tables" MYCHECK_PARAMS="--all-databases --fast --silent" # Put commands in the background if they should not block the server start. ( mycheck; ) & exit 0
- my.cnf : Tous les paramètres de configuration de MySQL comme les ports/sockets d'écoute, les interfaces réseaux autorisées, le tuning de la base, l'emplacement des logs et des fichiers de base de données... Enfin, ce fichier définit si le serveur MySQL est un noeud de cluster ou un le maître du cluster. Les commentaires dans ce fichier sont assez détaillés.
Exemple :
# # The MySQL database server configuration file. # # You can copy this to one of: # - "/etc/mysql/my.cnf" to set global options, # - "/var/lib/mysql/my.cnf" to set server-specific options or # - "~/.my.cnf" to set user-specific options. # # One can use all long options that the program supports. # Run program with --help to get a list of available options and with # --print-defaults to see which it would actually understand and use. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html # This will be passed to all mysql clients # It has been reported that passwords should be enclosed with ticks/quotes # escpecially if they contain "#" chars... # Remember to edit /etc/mysql/debian.cnf when changing the socket location. [client] port = 3306 socket = /var/run/mysqld/mysqld.sock # Here is entries for some specific programs # The following values assume you have at least 32M ram # This was formally known as [safe_mysqld]. Both versions are currently parsed. [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english skip-external-locking # # For compatibility to other Debian packages that still use # libmysqlclient10 and libmysqlclient12. old_passwords = 1 # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 # # * Fine Tuning # key_buffer = 16M max_allowed_packet = 16M thread_stack = 128K # # * Query Cache Configuration # query_cache_limit = 1048576 query_cache_size = 16777216 query_cache_type = 1 # # * Logging and Replication # # Both location gets rotated by the cronjob. # Be aware that this log type is a performance killer. #log = /var/log/mysql.log #log = /var/log/mysql/mysql.log # # Error logging goes to syslog. This is a Debian improvement :) # # Here you can see queries with especially long duration #log-slow-queries = /var/log/mysql/mysql-slow.log # # The following can be used as easy to replay backup logs or for replication. #server-id = 1 log-bin = /var/log/mysql/mysql-bin.log # See /etc/mysql/debian-log-rotate.conf for the number of files kept. max_binlog_size = 104857600 #binlog-do-db = include_database_name #binlog-ignore-db = include_database_name # # * BerkeleyDB # # According to an MySQL employee the use of BerkeleyDB is now discouraged # and support for it will probably cease in the next versions. skip-bdb # # * InnoDB # # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. # Read the manual for more InnoDB related options. There are many! # # * Security Features # # Read the manual, too, if you want chroot! # chroot = /var/lib/mysql/ # # If you want to enable SSL support (recommended) read the manual or my # HOWTO in /usr/share/doc/mysql-server/SSL-MINI-HOWTO.txt.gz # ssl-ca=/etc/mysql/cacert.pem # ssl-cert=/etc/mysql/server-cert.pem # ssl-key=/etc/mysql/server-key.pem [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] key_buffer = 16M # # * NDB Cluster # # See /usr/share/doc/mysql-server-*/README.Debian for more information. # # The following configuration is read by the ndbd storage daemons, # not from the ndb_mgmd management daemon. # # [MYSQL_CLUSTER] # ndb-connectstring=127.0.0.1
Localisation physique des données
- Déterminer la localisation dans l'arborescence système des bases de données à partir du fichier de configuration. Par exemple pour MySQL, il se situe dans /var/lib/mysql
- Taper :
# mount
pour connaître le point de montage des partitions.
Exemple :
/dev/md0 on / type reiserfs (rw,notail) /dev/sda6 on /home type ext3 (rw)
- Si le fichier du périphérique commence par /dev/md, alors il s'agit d'une partition en RAID software. Pour connaître la localisation physique des fichiers, il faut regarder le fichier : /etc/mdadm/mdadm.conf
Exemple :
DEVICE partitions ARRAY /dev/md0 level=raid1 num-devices=2 UUID=8402604e:5b65bb45:f6c894f0:906c8b43 devices=/dev/hda1,/dev/hdd1 MAILADDR example@example.com
Dans cet exemple, on peut voir que /dev/md0 est un RAID réparti entre deux partitions, hda1 et hdd1. L'adresse de l'administrateur à avertir en cas de défaillance d'une des deux partitions est également indiqué.
- La commande :
# df -h
affiche l'espace disponible pour chaque partition
Exemple :
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur /dev/md0 186G 163G 23G 88% / /dev/sda6 9,2G 1,7G 7,1G 20% /home
Cette commande :
# du -hs /var/lib/mysql/*
affiche des informations précises sur la taille de chaque fichier.
Interfaces de connexion à la base de données
Web
- PhpMyAdmin est l'interface web la plus utilisée pour gérer une base de données MySQL.
Graphique
Charge de la base de données
Connaître la charge moyenne d'une base de données permet d'anticiper la montée en charge et la migration de la base de données vers un nouveau serveur ou un cluster de serveurs. Le logiciel Nagios fournit une interface web afin d'afficher un état détaillé du serveur. Il permet également d'envoyer une alerte mail ou SMS à l'administrateur système en cas de panne ou de saturation du serveur.
MySQL
- MySQLAR est un logiciel qui génère des courbes à partir de l'activité du serveur MySQL, très utile pour auditer des engorgements dans le temps. (Site officiel | Démonstration)
Logs
Les logs sont des fichiers textes qui contiennent tout ce qui se passe dans le logiciel. Ces fichiers sont importants pour détecter et localiser une panne.
Les logs des distributions linux sont dans le dossier : /var/log Le fichier de log le plus important est : /var/log/syslog
- /var/log/mysql.log contient toutes les erreurs autour du serveur MySQL. C'est le premier fichier à regarder quand le serveur ne MySQL démarre pas.
Il est possible d'activer des logs pour sauvegarder toutes les requêtes, les modifications dans les tables ou pour identifier les requêtes les plus lentes. (Détails sur les types de logs)
Sauvegardes
- à chaud :
La procédure recommandée pour sauvegarder est :
# mysqldump --tab=/emplacement/du/fichier.sql --opt nom_bdd
Ceci génère un fichier SQL de la base de données qui est facile à compresser et à sauvegarder. (Documentation détaillée)
- à froid :
Sauvegarder le dossier où MySQL stocke ses bases de données. (Généralement /var/lib/mysql)
Restauration
Si la sauvegarde a été effectuée à chaud :
# mysql < nom_du_fichier.sql
Sinon : Arrêter le serveur, et copier la sauvegarde dans le dossier de travail MySQL, puis démarrer le serveur.
Réplication MySQL
La procédure décrite ci-dessous explique la mise en place d'une sauvegarde de l'intégralité d'un serveur MySQL avec une mise à jour automatique entre les deux serveurs.
De nombreuses informations sont disponibles ici : http://dev.mysql.com/doc/refman/5.0/fr/replication-howto.html
Pré-requis
- Deux serveurs MySQL.
- Un compte root MySQL pour chaque serveur.
- Accès ssh.
- Adresse IP ou nom d’hôte du maitre MySQL.
Le Maitre est le serveur à sauvegarder, l'Esclave est le serveur de sauvegarde.
Préparation du Maitre
Il faut :
- Un compte de réplication (à créer), ayant l'autorisation de connexion afin d'obtenir les mises à jour.
- Modifier la configuration du serveur.
- Faire une sauvegarde complète des données à un instant T connu.
- Sauvegarder le fichier de configuration debian.cnf.
Création du compte de réplication
Cette étape peut être fait avec PHPMyAdmin, ou en ligne de commande (console mysql).
Concernant PHPMyAdmin, la gestion des comptes via le lien Privilèges.
On accède tout à la console MySQL de la manière suivante :
maitre:~# mysql -u root -p
Puis saisissez votre mot de passe.
Pour information :
- % désigne le host.
- % désigne aussi les bases de données.
- Utilisation de REPLICATION SLAVE pour les privilèges de l'utilisateur de réplication.
En utilisant ces paramètres :
- le compte de réplication peut accéder à l'ensemble des bases de données.
- depuis n'importe quelle machine.
Afin de définir l'IP du serveur Esclave, ou de définir les bases sauvegardées, reportez vous à la documentation MySQL sur le site officiel .
Ensuite il faut saisir :
CREATE USER 'esclave'@ '%' IDENTIFIED BY '***'; GRANT REPLICATION SLAVE ON * . * TO 'esclave'@ '%' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT ALL PRIVILEGES ON `esclave_%` . * TO 'esclave'@ '%';
Vérification de la configuration
Vérifier que les paramètres suivants sont présents dans le fichier :
/etc/mysql/my.cnf
[mysqld] log-bin server-id=master_id
Le master_id est un entier compris entre 1 et 2^32 − 1.
Si ces informations ne sont pas présentes, et qu'elles sont ajoutées, il faut relancer (ou arrêter et lancer) MySQL :
/etc/init.d/mysql stop /etc/init.d/mysql start
Exporter les données
La réplication ne se fait que si :
- Il existe un référentiel de temps commun.
- Une copie des données exactes à cet instant T.
Pour réaliser cette copie, il existe plusieurs solutions. Ici encore la documentation officielle de MySQL vous guidera dans les choix.
Quelque soit votre configuration MySQL (Myisam, innodb, ...) cette solution, bien que lente, devrait fonctionner :
ServeurMaitre:~# mysqldump -u root -p --all-databases --master-data > export.sql
--all-databases indique une copie de toutes les bases du serveur.
--master-data exporte aussi le référentiel temps au moment de la copie, de plus il verrouille les bases le temps de la sauvegarde.
Utilisateur(s) (Debian)
Toute la base sera copiée, y compris les données présentes dans la table mysql. Cette base contiens les paramètres des comptes.
Pour éviter toute erreur, il faut copier le fichier /etc/mysql/debian.cnf .
Configuration de l'Esclave
La configuration de l'Esclave se fait en plusieurs étapes :
- Importer les données du Maitre vers l'Esclave.
- Mise à jour du fichier debian.cnf.
- Indiquer l’adresse du Maitre.
- Lancer la synchronisation.
Importer
Importez les données en ligne de commande :
Esclave:~# mysql -u root -p < dump.sql
Utilisateur(s) (Debian)
Toutes les données du MySQL Exclave sont remplacées, il font donc aussi remplacer les paramètres de connexion MySQL utilisés par Debian.
Copiez debian.cnf depuis le Maitre vers l'Esclave.
Puis relancez MySQL :
Esclave:~# /etc/init.d/mysql stop Esclave:~# /etc/init.d/mysql start
Configuration de l'Esclave
Il faut :
- Donner à l'Esclave un identifiant serveur différent du Maitre dans /etc/mysql/my.cnf
- Indiquer la localisation du Maitre.
Pour changer l'identifiant :
Esclave:~# vi /etc/mysql/my.cnf [mysqld] server-id=slave_id
slave_id doit être un entier compris entre 1 et 2^32−1, et différent de l'ID du Maitre.
Depuis la ligne de commande MySQL lancée ainsi :
Esclave:~# mysql -u root -p
Nous indiquons les paramètres de connexion :
CHANGE MASTER TO
MASTER_HOST='nom d'hôte du maitre ou IP',
MASTER_USER='compte esclave',
MASTER_PASSWORD='mot de passe'
Les paramètres de synchronisation MASTER_LOG_FILE et MASTER_LOG_POS ont déjà été sauvegardé lors de l’importation, pour plus d'informations lisez la documentation officielle.
Synchronisation
A cette étape, le Maitre est prêt à transmettre ses mises à jours à l'Esclave, depuis l'instant T.
La synchronisation se fait à l'aide de :
START SALVE;
Le contrôle du comportement du serveur peut se faire par la lecture du fichier système :
Esclave:~# tail -f -n 50 /var/log/syslog <date> Esclave mysqld[3600]: <date> [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.XYZ' at position ABCD, relay log './mysqld-relay-bin.000001' position: 4 <date> Esclave mysqld[3600]: <date> [Note] Slave I/O thread: connected to master 'Esclave@hote.maitre.tld:3306', replication started in log 'mysql-bin.XYZ' at position ABCD
N'hésitez pas à lire la documentation officielle en cas d'erreurs.
Commandes utiles
Voici quelques commandes utiles :
mysql> SHOW MASTER STATUS
mysql> SHOW SLAVE STATUS
mysql> SHOW MASTER LOGS
Scripts utiles
Script de nettoyage des logs sur le serveur esclave (source : Zataz.net ) :
#!/usr/bin/php <?php # mysql-reset-master-replication-log.php $master_quota = 3; exec("mysqladmin flush-logs"); $dbh = mysql_connect("localhost", "root", "passwd") or die(mysql_error($dbh)); $resp = mysql_query("SHOW MASTER STATUS;", $dbh) or die(mysql_error($dbh)); $row = mysql_fetch_assoc($resp); if (preg_match("/^([^\.]+)\.(\d+)$/", $row["File"], $matches)) { $fileprefix = $matches[1]; $filesufix = $matches[2]; $delind = $filesufix - $master_quota; if ($delind > 0) { while (strlen($delsufix.$delind) < strlen($filesufix)) $delsufix .= "0"; $delsufix .= $delind; $logfilename = "$fileprefix.$delsufix"; echo "Delete binary logs up to $logfilename\n"; mysql_query("PURGE MASTER LOGS TO '$logfilename';", $dbh) or die(mysql_error($dbh)); } else echo "No binary logs to delete\n"; } ?>
Requêtes / Syntaxes utiles
Mise en forme des informations avec export dans un fichier
SELECT `username` , `password` FROM `UsersTable` INTO OUTFILE ‘/tmp/fichierDetravail.txt’ FIELDS TERMINATED BY ‘:’ LINES TERMINATED BY ‘\n’
JOIN
Voici un exemple de ce que la commande JOIN peut faire.
Tout d'abord, on crée une table t1 et une table t2, avec différentes informations.
CREATE TABLE t1 ( a INT ); CREATE TABLE t2 ( b INT ); INSERT INTO t1 VALUES (1), (2), (3); INSERT INTO t2 VALUES (2), (4);
Ensuite effectuons ces requêtes :
SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.b; SELECT * FROM t1 CROSS JOIN t2; SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.b; SELECT * FROM t2 LEFT JOIN t1 ON t1.a = t2.b;
Les deux premiers SELECTs sont, pour la compréhension, écris d'une manière ancienne :
SELECT * FROM t1, t2 WHERE t1.a = t2.b; SELECT * FROM t1, t2;
L'utilisation d'INNER JOIN produit un résultat qui affiche seulement les commandes qui ont un résultat donné, dans les deux tables (t1 et t2), pour des conditions spécifiques.
SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.b; ------ ------ | a | b | ------ ------ | 2 | 2 | ------ ------ 1 row IN SET (0.00 sec)
L'utilisation de CROSS JOIN produit un résultat dans lequel chaque colonne dans une table est fusionnée à chaque colonne dans l'autre table, ceci est aussi nommé "produit cartésien".
SELECT * FROM t1 CROSS JOIN t2; ------ ------ | a | b | ------ ------ | 1 | 2 | | 2 | 2 | | 3 | 2 | | 1 | 4 | | 2 | 4 | | 3 | 4 | ------ ------ 6 rows IN SET (0.00 sec)
L'utilisation de LEFT JOIN, produit un résultat avec toutes les informations contenues dans la table de gauche (left, ici t1). Les valeurs contenues dans la colonne de l'autre table (t2) dépend de la présence ou non de résultats dans celle-ci. Si aucun résultat n'est trouvé, le résultat retourné est NULL.
SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.b; ------ ------ | a | b | ------ ------ | 1 | NULL | | 2 | 2 | | 3 | NULL | ------ ------ 3 rows IN SET (0.00 sec)
SELECT * FROM t2 LEFT JOIN t1 ON t1.a = t2.b; ------ ------ | b | a | ------ ------ | 2 | 2 | | 4 | NULL | ------ ------ 2 rows IN SET (0.00 sec)
Source : http://hashmysql.org/
Pour faire des requêtes "correctes" avec les versions récentes de MySQL (voir un peu "meilleures"), reportez vous à cet article : http://hashmysql.org/index.php?title=Comma_vs_JOIN
Serveur de base de données.
Changer le mot de passe root
Si vous avez oublié votre mot de passe de l'utilisateur root de MySQL, voici la procédure à suivre pour le changer.
Tout d'abord il faut arrêter le serveur MySQL :
/etc/init.d/mysql stop
Puis il faut lancer le serveur avec l'option skip-grant-tables pour désactiver les logins/pass, et skip-networking pour éviter les connexions TCP/IP.
ATTENTION : Avec ces options, n'importe quelle personne se connectant à l'aide des sockets aura un accès total à la base ! Il ne faut pas laisser le serveur s'exécuter dans ce mode.
Voici la commande à taper :
/usr/sbin/mysqld --skip-grant-tables --skip-networking --user=root &
Une fois ceci effectué, connectez vous à mysql en ligne de commande :
mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 330933 Server version: 5.0.38 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>'
Sélectionnez la base mysql ou sont inscrit les tables des privilèges :
mysql> USE mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
Tapez ensuite la commande suivante en remplaçant "MotDePasse" par celui souhaité :
mysql> UPDATE user
-> SET password=password("MotDePasse")
-> WHERE user="root";
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
Appliquez les changements de privilèges :
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
Sortez du client mysql:
mysql> exit
Redémarrez le serveur :
/etc/init.d/mysql restart
Affichage
Afficher le status
mysql> status -------------- mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2 Connection id: 466801 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: Using delimiter: ; Server version: 5.0.51a-24 (Debian) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 67 days 2 hours 7 min 11 sec Threads: 5 Questions: 4053579 Slow queries: 552 Opens: 127041 Flush tables: 1 Open tables: 64 Queries per second avg: 0.699 --------------
Ajouts et modifications
Ajouter un champ à une table existante
alter table NomDeLaTable add column ChampAAjouter bigint default null;
Modifier une colonne en auto_increment
alter table NomDeLaTable modify column id bigint(20) auto_increment;
Ajouter NOT NULL à une colonne
ALTER TABLE user MODIFY name NOT NULL;
Backup
Backup global
mysqldump --all-databases > all_databases.sql
Optimisations
Optimiser les requêtes
Pour vérifier les requêtes trop consommatrices en ressources, effectuer les opérations suivantes :
logguer les requêtes dépassant un certains délai d’exécution ou bien celle n’ayant pas recours à des indexs.
Editer la configuration :
vi /etc/mysql/my.cnf
Editer les 3 propriétés suivantes :
log_slow_queries = /var/log/mysql/mysql-slow.logs
long_query_time = 5
log-queries-not-using-indexes
La 1ère ligne défini le fichier de log dans lequel on enregistre les requêtes "lentes".
La 2ème ligne indique en secondes le temps d’exécution à partir duquel les requetes seront logguées (compris entre 1 et 10)
La 3ème ligne permet quant à elle d’indiquer les requêtes effectuées sans utilisation d’index.
Après un redémarrage de MySQL, toutes les requêtes exécutées et "trop longues" seront logguées, avec des informations explicites sur :
- le temps de la requete ;
- le temps de vérouillage s’il existe ;
- le nombre de lignes renvoyées ;
- le nombre de lignes analysées.
Scripts / Utilitaires
Voir MaatKit sur http://www.maatkit.org (package debian : maatkit).
Ces outils permet d'effectuer des tâches complètes de manière simple.
Ainsi vous pouvez améliorer :
- La réplication.
- L'archivage des données, l'importation et l'exportation.
- L'analyse des logs et la ré-exécution (permet de tester la charge d'une machine).
- L'analyse des requêtes, schémas et paramètres.
Bugs
Le gestionnaire de bugs de MySQL permet de soumettre les bugs rencontrés lors de l'utilisation de MySQL.
Liens
Externes
Sources : WikiBooks
http://dev.mysql.com/doc/refman/5.0/fr/replication-howto.html
http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html#option_mysqldump_all-databases
http://www.webexpertys.com/replication-maitre-esclave-mysql-5
http://www.zataz.net/docs/6894/documentation-replication-mysql.html

