Differences

This shows you the differences between two versions of the page.

Link to this comparison view

unix:mysql_replication [2010/01/12 13:29] (current)
Line 1: Line 1:
 +Voici comment, en 2 coups de cuiller à pot, installer une réplication de type master / slave avec MySQL.
 +
 +Prérequis, 2 serveurs MySQL recents ( pour ma part il s'agit d'un 3.23.47 sur un NetBSD et d'un 3.23.42 sur un FreeBSD ), et le port MySQL du master choisi ouvert pour le slave.
 +
 +**1. sur le master**
 +
 +Créer un compte SQL pour la réplication. Admettons que l'on utilise le compte "​replic"​ avec le password "​miam",​ on autorise alors ce compte à accéder aux fichiers de cette façon :
 +
 +GRANT FILE ON *.* TO replic@<​host du slave> IDENTIFIED BY '​miam';​
 +
 +Stoppez alors votre serveur master, et faites une archive des données actuelles. Le plus judicieux est d'​utiliser "​tar"​ de cette façon :
 +
 +tar zcvf db-22022002.tar.gz /​var/​db/​mysql
 +
 +Enfin, ajoutez à votre /​etc/​my.cnf,​ dans la section [mysqld] :
 +
 +log-bin
 +server-id=1
 +
 +Vous pouvez alors redémarrer le serveur MySQL sur le master.
 +
 +**2. sur le slave**
 +
 +Ajoutez à votre /​etc/​my.cnf,​ dans la section [mysqld] :
 +
 +master-host=<​hostname du master>
 +master-user=replic
 +master-password=miam
 +master-port=3306
 +server-id=2
 +
 +On note que le server-id du master est 1, et celui du slave est 2, pour ajouter
 +on sent intuitivement qu'il faudra utiliser des server-id'​s supérieurs,​ et
 +autoriser les-dits serveurs de la même façon qu'au 1.
 +
 +Enfin, décompresser l'​archive créée plus haut et copier le contenu dans
 +l'​arborescence de données de MySQL sur le slave.
 +
 +Redémarrez maintenant le slave.
 +
 +Si tout s'est bien passé, vous devriez voir dans le fichier
 +/​var/​mysql/<​host>​.err des lignes comme celles-ci :
 +
 +020224 ​ 4:​38:​15 ​ Slave: connected to master '​replic@<​master.host>:​3306', ​ replication started in log '​master-bin.001'​ at position 73
 +
 +et un netstat -an|grep 3306 devrait vous montrer une connexion persistante sur
 +le port MySQL ( 3306 ) du serveur master.
 +
 +Dernier point, si vous souhaitez ne répliquer qu'une seule base et que vous
 +en possédez bien d'​autres sur le serveur master, ajoutez au my.cnf master :
 +
 +binlog-do-db=<​la base que vous souhaitez répliquer>​
 +
 +et dans le my.cnf slave :
 +
 +replicate-do-db=<​la base que vous souhaitez répliquer>​
  
unix/mysql_replication.txt · Last modified: 2010/01/12 13:29 (external edit)