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é:
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.]]CHANGE MASTER TO MASTER_Host=''
qui crache juste sur une erreur car elle a été dépréciée récemment.my.cnf
qui ne possède pas les informations principales car elles ont été ajoutées par programme.RESET MASTER
car certains docs mysql le recommandaient. Cela réinitialise uniquement les journaux de bac.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.
Le moyen le plus rapide et le plus sale pour effacer les informations 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 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.
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=''
.
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. :)