4.10 Réplication de MySQL
4 Administration du serveur
Manuel de Référence MySQL 4.1 : Version Française
. Introduction à la réplication . Présentation de l'implémentation de la réplication ->Comment mettre en place la réplication . Fonctionnalités de la réplication et problèmes connus . Options de réplication dans le fichier my.cnf . Commandes SQL liées à la réplication . FAQ de la réplication . Correction de problèmes courants
|
4.10.3 Comment mettre en place la réplication Voici les instructions pour mettre en place la réplication sur votre
serveur MySQL. Nous supposons que vous voulez répliquer toutes vos bases, et que
vous ne l'avez jamais configuré auparavant. Vous aurez besoin d'éteindre
brièvement le serveur principal pour suivre toutes les instructions.
Si cette méthode n'est pas la plus simple pour configurer un esclave,
ce n'est pas la seule. Par exemple, si vous avez déjà une sauvegarde des
données du maître, et que le maître a déjà un identifiant de serveur,
et le log binaire activé, vous pouvez configurer l'esclave sans éteindre
le serveur et sans bloquer les mises à jours. Pour plus de détails, voyez
FAQ de la réplication .
Si vous voulez devenir un véritable gourou de la réplication MySQL, nous vous
suggérons de commencer par étudier, tester et expérimenter toutes les commandes
mentionnées dans le chapitre Commandes SQL liées à la réplication . Vous devriez aussi vous familiariser
avec les options de démarrage de
my.cnf
, Options de réplication dans le fichier
my.cnf
.
- Assurez vous que vous avez une version récente de MySQL installée comme
maître et comme esclave.Utilisez les versions 3.23.29 et plus récente. Les anciennes versions
utilisaient un autre format de log binaire, et avaient des bogues qui ont
été corrigés dans les nouvelles versions. Ne nous rapportez pas de bogues
avant d'avoir vérifié si le problème est encore présent dans la dernière version
de MySQL.
- Créez un utilisateur MySQL spécial pour la réplication sur le maître, avec
les droits de
FILE
(dans les versions plus anciennes que la
versions 4.0.2) ou le droit de
REPLICATION SLAVE
pour les nouvelles
versions. Vous devez aussi lui donner les droits de connexion depuis tous les
esclaves. Si l'utilisateur ne fait que de la réplication (ce qui est recommandé),
vous n'avez pas à lui donner d'autres droits.Par exemple, pour créer un utilisateur appelé
repl
qui peut accéder au maître,
vous pourriez utiliser une commande comme :
mysql> GRANT FILE ON *.* TO repl@"%" IDENTIFIED BY '<password>';
|
- Eteignez le serveur MySQL maître.
mysqladmin -u root -p<password> shutdown
|
- Sauvegardez toutes les données de votre serveur maître.
Le plus simple pour cela (sous Unix) et d'utiliser la commande
tar
pour produire une archive de votre dossier de données total. Le dossier
de données dépend de votre installation.
tar -cvf /tmp/mysql-snapshot.tar /path/to/data-dir
|
Les utilisateurs Windows peuvent utiliser le programme
WinZIP
ou un
logiciel similaire pour créer une archive du dossier de données.
- Dans le fichier
my.cnf
du maître, ajouter les options
log-bin
et
server-id=unique number
à la section
[mysqld]
et redémarrez le serveur.
Il est très important que l'identifiant des esclaves soient différents de celui
du maître. Pensez à
server-id
comme à une valeur comparable à une adresse IP :
elle identifie de manière unique un serveur dans la communauté des réplicateurs.
[mysqld] log-bin server-id=1
|
- Redémarrez le serveur maître MySQL.
- Ajoutez les lignes de configuration suivantes dans le fichier
my.cnf
des esclaves :
master-host=<nom d'hôte du maître> master-user=<nom d'utilisateur de réplication> master-password=<mot de passe de l'utilisateur de réplication> master-port=<port TCP/IP du maître> server-id=<un identifiant unique, entre 2 et 2^32-1>
|
Remplacez les valeurs entre <> avec ce qui correspond à votre système.
server-id
doit être différent pour chaque serveur qui participe à la
réplication. Si vous spécifiez pas d'identifiant server-id, il sera mis à
1 si vous n'avez pas défini de
master-host
, et sinon, il vaudra 2.
Notez que dans le cas où vous omettez le
server-id
, le maître va
refuser les connexion des esclaves, et les esclaves vont refuser de se connecter
au maître. Par conséquent, omettre
server-id
n'est bon que pour faire des
sauvegarde du log binaire.
- Copiez la sauvegarde des données dans vos esclaves. Assurez vous que les
droits sur ces données sont corrects. L'utilisateur qui fait fonctionner
MySQL doit avoir les droits d'écriture et de lecture sur ces fichiers,
tout comme le maître l'avait.
- Redémarrez les esclaves
Après avoir suivi les instructions ci-dessus, les esclaves doivent se
connecter au maître, et rattraper les modifications qui ont eu lieu depuis
la sauvegarde des données.
Si vous avez oublié de spécifier un
server-id
pour un esclave, vous
allez obtenir l'erreur suivante dans le fichier d'erreur :
Warning: one should set server_id to a non-0 value if master_host is set. The server will not act as a slave.
|
Si vous avez oublié de le faire pour le maître, les esclaves ne pourront
pas se connecter avec le maître.Si un esclave n'est pas capable de faire la réplication pour une raison
quelconque, vous allez trouvez le message d'erreur dans le fichier de log
d'erreurs de l'esclave.
Une fois qu'un esclave fonctionne, vous allez trouver un fichier appelé
master.info
dans le même dossier que vos fichiers de logs.
Le fichier
master.info
est utilisé par l'esclave pour savoir où il
en est rendu dans le log binaire du maître.
Ne le supprimez pas
et
ne l'éditez pas, à moins que vous ne sachiez vraiment ce que vous faites.
Même dans ce cas, il est préférable d'utiliser la commande
CHANGE MASTER TO
.
|