web-dev-qa-db-fra.com

Comment changer un ancien esclave MySQL pour être un maître et supprimer les informations sur le statut de l'esclave?

J'ai une configuration maître -> esclave où le maître a échoué. J'ai pu réinitialiser l'ancien esclave pour qu'il devienne maître et l'ancien maître pour qu'il en devienne esclave. Bien.

Ce que je n'arrive pas à faire, c'est de supprimer les informations du maître sur l'ancien esclave qui est maintenant le nouveau maître. Je vois:

mysql> show slave status \G
*************************** 1. row ***************************
           Slave_IO_State: 
              Master_Host: 10.1.2.101
              Master_User: replicationSlave
              Master_Port: 3306
              ...
              Slave_IO_Running: No
              Slave_SQL_Running: No

J'ai lu beaucoup de documentation MySQL mais je n'ai toujours pas trouvé de moyen d'effacer les informations esclaves du nouveau maître. J'ai essayé:

  1. RESET SLAVE qui ne semble pas effacer ces paramètres. [[En fait, il supprime le master.info fichier mais pas les paramètres de la mémoire. Voir ci-dessous.]]
  2. CHANGE MASTER TO MASTER_Host='' qui crache juste sur une erreur car elle a été dépréciée récemment.
  3. Vérification my.cnf qui ne possède pas les informations principales car elles ont été ajoutées par programme.
  4. RESET MASTER car certains docs mysql le recommandaient. Cela réinitialise uniquement les journaux de bac.
  5. Fouiller dans les tables internes de MySQL pour voir si je peux trouver les champs à effacer.

Quelle est la bonne façon de le faire sur MySQL ~ 5.5.9? Merci pour toute aide.


Modifier:

Il s'avère donc que RESET SLAVE supprime le master.info fichier comme @RolandoMySQLDBA implicite. Cependant, vous devez toujours redémarrer le serveur avant de supprimer les informations sur l'esclave.

Existe-t-il un moyen de supprimer ces informations sur l'esclave sans avoir à redémarrer mysqld?

Dans MySQL 5.5.16 et versions ultérieures, vous pouvez utiliser RESET SLAVE ALL pour faire tout ça RESET SLAVE ne et réinitialise les paramètres de connexion de la mémoire, de cette façon, il ne nécessite pas de redémarrage mysqld.

10
Filipe Giusti

Le moyen le plus rapide et le plus sale pour effacer les informations esclaves d'une instance MySQL

  • Ajouter skip-slave-start à /etc/my.cnf sous [mysqld]
  • service mysql stop
  • rm -f /var/lib/mysql/master.info /var/lib/mysql/relay-*
  • service mysql start
  • Retirer skip-slave-start de /etc/my.cnf

Cela devrait le faire pour vous !!!

Cela serait nécessaire car selon Documentation MySQL sur RESET SLAVE :

Dans MySQL 5.5 (contrairement à MySQL 5.1 et versions antérieures), RESET SLAVE ne modifie aucun paramètre de connexion de réplication tel que l'hôte maître, le port maître, l'utilisateur maître ou le mot de passe maître, qui sont conservés en mémoire. Cela signifie que START SLAVE peut être émis sans exiger une instruction CHANGE MASTER TO après RESET SLAVE.

Ainsi, les informations de réplication sont toujours en mémoire. Un redémarrage mysql est la seule façon de procéder.

6
RolandoMySQLDBA

RESET SLAVE suivi d'un redémarrage n'efface pas les informations sur l'esclave en ce qui concerne phpmyadmin. Vous devez également définir CHANGE MASTER TO MASTER_Host=''.

5
Jack

Je recommanderais de conserver la commande skip-slave-start dans votre fichier de configuration (‘in /etc/my.cnf’) sous votre ‘mysqld’ pour éviter toute surcharge des données maître-esclave. Pour vous donner un exemple - lorsque vous travaillez dans un environnement cloud, disons qu'un ancien maître se bloque puis redémarre avec succès lorsque vous êtes votre fournisseur résout le problème - l'ancien esclave (maintenant nouveau maître) se répliquera à partir de l'ancien maître, remplaçant les données avant le DBA a une chance de s'en rendre compte.

BTW, cela est également pertinent dans un environnement non cloud. Si, disons, un autre administrateur fait apparaître l'ancien maître sans coordination. En outre, un autre problème explique pourquoi il est judicieux de conserver la commande "skip-slave-start" même s'il s'agit d'un esclave - pas de réplication automatique, ce qui signifie que vous avez plus de contrôle sur la prévention des résultats imprévisibles. :)

3
Lena Weber