Services webmasters
Partenaires
Jeux concours gratuits
 
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
>>>

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 .

<< Comment mettre en place la réplication >>
Présentation de l'implémentation de la réplication Réplication de MySQL Fonctionnalités de la réplication et problèmes connus
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -