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 un 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 sur l'esclave du nouveau maître. J'ai essayé:
RESET SLAVE
ce qui ne semble pas effacer ces paramètres. [[En fait, il supprime lemaster.info
fichier mais pas les paramètres de mémoire. Voir ci-dessous.]]CHANGE MASTER TO MASTER_HOST=''
qui crache juste sur une erreur car elle a été dépréciée récemment.- Vérification
my.cnf
qui ne contient pas les informations de base car elles ont été ajoutées par programme. RESET MASTER
parce que certains docs mysql l'ont recommandé. Cela réinitialise uniquement les journaux de bacs.- 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.
Éditer:
Il s'avère donc que RESET SLAVE
le master.info
fichier est supprimé comme @RolandoMySQLDBA le sous-entend. 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 esclaves sans avoir à redémarrer mysqld?
la source
Réponses:
Dans MySQL 5.5.16 et versions ultérieures, vous pouvez utiliser
RESET SLAVE ALL
pour faire tout ce qui estRESET SLAVE
fait et réinitialiser les paramètres de connexion à partir de la mémoire, de cette façon, cela ne nécessite pas de redémarrage mysqld.la source
Le moyen le plus rapide et le plus sale pour effacer les informations sur les esclaves d'une instance MySQL
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
skip-slave-start
de /etc/my.cnfCela devrait le faire pour vous !!!
Cela serait nécessaire car selon la documentation MySQL sur
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.
la source
master.info
fichier. Est-ce toujours là sur un "maître" ou un "esclave"?RESET SLAVE
suivi d'un redémarrage n'efface pas les informations sur l'esclave en ce qui concerne phpmyadmin. Vous devez également définirCHANGE MASTER TO MASTER_HOST=''
.la source
Je recommanderais de maintenir la commande skip-slave-start dans votre fichier de configuration ('dans /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. :)
la source