Problème
J'ai la configuration de réplication MySQL entre 2 serveurs, maître ( A ) et esclave ( B ). J'ai besoin d'ajouter un nouvel esclave au mix ( C ). Je veux que cet esclave obtienne ses mises à jour directement du maître, je ne veux pas de réplication de chaîne de l'esclave. Cependant, le maître est "chaud", j'utilise généralement Xtrabackup pour créer une sauvegarde complète du maître, mais cela le verrouillera pendant 10 bonnes minutes, car la base de données fait environ 20 Go.
Solution possible
RINCER LES TABLES AVEC VERROUILLAGE DE LECTURE sur l'esclave B , utiliser SHOW SLAVE STATUS sur B , écrire le journal des pannes et la position. Ensuite, sauvegardez la base de données avec Xtrabackup, expédiez la sauvegarde à C et utilisez-la pour créer l'esclave et définissez la réplication sur A avec la position binlog que je viens d'écrire.
Question
Existe-t-il un meilleur moyen qui ne me demande pas de verrouiller B aussi longtemps? Ou quelque chose qui est plus facilement automatisé?
la source
start slave
(SlaveC), je reçois "Impossible d'ouvrir le journal du relais '/var/log/mysql/mysql-relay-bin.001603"Lorsque nous ajoutons un esclave à notre mix, nous procédons comme suit:
la source
J'ai fait ce que suggère @RolandoMySQLDBA mais en ajoutant également des pas de 6 ' et 8' (cela résout ce que @Hussain Tamboli commente .):
Étape 1) Configurer un nouveau serveur (ServerC)
Étape 2) Sur ServerC, installez MySQL (même version que ServerB)
Étape 3) Sur ServerC, service mysql stop
Étape 4) Copiez /etc/my.cnf de ServerB vers ServerC
Étape 5) Sur ServerC, remplacez server_id par une valeur différente de ServerA et ServerB
Étape 6) rsync / var / lib / mysql sur ServerB à ServerC
Étape 6 ') rsync / var / log / mysql sur ServerB vers ServerC
Étape 7) Lorsque rsync est terminé, exécutez "STOP SLAVE;" sur ServerB
Étape 8) rsync / var / lib / mysql sur ServerB vers ServerC
Étape 8 ') rsync / var / log / mysql sur ServerB vers ServerC
Étape 9) Sur ServerB, exécutez "START SLAVE;"
Étape 10) Sur ServerC, service mysql start
Étape 11) Sur ServerC, exécutez "START SLAVE;" (Faites ceci si skip-slave-start est dans /etc/my.cnf)
la source
Vous avez l'option "LOAD DATA FROM MASTER" mais c'est fortement déconseillé.
Effectuez-vous des sauvegardes nocturnes / hebdomadaires sur votre système? Si c'est le cas, notez également la position avec votre sauvegarde, vous pouvez alors utiliser cette sauvegarde pour configurer un nouvel esclave. Laissez-le tranquille et laissez-le se mettre à jour pendant un certain temps.
la source
J'ai essayé les réponses de Rolando et j'ai bien fonctionné, mais il a été recommencé depuis le début et j'ai dû ajouter plus de code d'erreur à ignorer (je sais que ce n'est pas recommandé, mais je sais ce que je faisais).
Une fois l'étape 7 terminée, j'ai vérifié le journal mysql et noté le nom et la position du journal bin et j'ai continué jusqu'à la 9ème étape. Avant la 10e étape, je viens d'exécuter
change master
pour le fichier journal et la position du journal. Et a continué à partir de l'étape 11. Tout me va bien.la source
Vous devez modifier l'uuid esclave dans auto.cnf afin que le maître puisse différencier les deux esclaves.
la source