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)