Comment désactiver complètement la réplication MySQL

64

J'exécute la réplication double maître MySQL et souhaite maintenant passer à une base de données unique sans réplication. Comment désactiver complètement la réplication sur les deux bases de données?


la source

Réponses:

81

Pour désactiver complètement la réplication avec une configuration maître-maître, procédez comme suit sur chaque esclave:

  1. STOP SLAVE;
  2. RESET SLAVE;(Utilisez RESET SLAVE ALL;pour MySQL 5.5.16 et versions ultérieures)
  3. Editez le fichier my.cnf et supprimez toute information (le cas échéant) faisant référence aux options "master -..." ou "replicate -...". Vous ne pouvez rien avoir dans le fichier my.cnf, car la réplication peut également être configurée de manière dynamique.
  4. Redémarrez mysqld.

la source
Si la réplication est configurée de manière dynamique, les étapes 1 et 2 devraient suffire.
Tanyehzheng
4
Jusqu'au redémarrage de MySQL, il transmettra les anciennes informations de réplication sur les SLAVE STATUSrequêtes, même après que la RESET SLAVEcommande a été donnée. Important à savoir pour les outils de surveillance ou de gestion de la configuration à distance. Comportement confirmé avec MySQL 5.5.38 sur CentOS 6.5.
Chris Laskey
Je fais les étapes mais pourquoi cet esclave inactif est toujours dans la liste des commandes mtop? Comment le supprimer de la liste?
Scott Chu
18

Je sais que c’est une vieille question, mais j’ai constaté que je devais également réinitialiser les variables esclave. Si vous utilisez "blah" comme suggéré, le serveur essaiera au démarrage de trouver le serveur "blah".

Changer MASTERenMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

Vous pouvez vérifier que la machine n'est plus un esclave

SHOW SLAVE STATUS \G;
H. Pauwelyn
la source
5
Cela ne fonctionne plus. Le réglage CHANGE MASTER TO MASTER_HOST=''génère maintenant une erreur.
Grey
ERROR 1210 (HY000): arguments incorrects à MASTER_HOST
Kazimieras Aliulis
Fonctionne pour moi sur CentOS 6 (MySQL 5.1), après cette option, SHOW SLAVE STATUS renvoie un ensemble vide, tandis qu’après RESET SLAVE, il affichait encore quelques informations sur le maître.
Martijn
Cette réponse est toujours valable pour les utilisateurs de MySQL 5.1 (il peut encore y en avoir).
RolandoMySQLDBA
12

Sur le ou les serveurs esclaves:

  1. Exécutez "stop slave" pour arrêter la réplication.
  2. Exécutez "reset slave" pour indiquer au serveur esclave d’oublier sa position dans le journal binaire extrait du serveur maître.
  3. Ajoutez "skip-slave-start" à my.cnf pour empêcher le démarrage de la réplication lorsque vous redémarrez MySQL.

Il n'est pas nécessaire de redémarrer MySQL sur le maître ou l'esclave. Une documentation complète est disponible dans la section 19 du manuel de référence MySQL .

Je vous recommande de laisser le reste des paramètres de réplication en place si vous décidez de revenir à votre configuration précédente. De cette façon, il vous suffirait de repousser les données et de réinitialiser la position de l'esclave (n'oubliez pas de supprimer skip-slave-start) plutôt que de recréer la configuration complète.


la source
7

Quelle que soit la version de MySQL, la manière la plus complète de procéder est la suivante

cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start

Cela doit fonctionner pour la dernière version car les paramètres de réplication sont toujours présents dans la RAM pour MySQL 5.5.

Je viens de répondre à une question similaire à ce sujet: Comment changer un esclave précédent de MySQL en maître et supprimer les informations sur son statut?

RolandoMySQLDBA
la source
6

La modification du fichier my.cnf seul ne suffit pas pour désactiver la réplication. En fait, ce n'est plus la méthode recommandée pour l'activer. Mettre des entrées dans le fichier my.cnf n’est effectif que pour le prochain démarrage et se comporte comme si vous aviez entré la commande dans le client mysql:

mysql> change master en master_host = 'blah', master_user = 'blah', master_password = 'blah' ...;

Ces deux méthodes créeront un fichier dans le répertoire de données appelé master.info . Tant que ce fichier existe, le serveur essaiera de se répliquer en utilisant les détails qu'il contient. Le "RESET SLAVE;" La commande listée dans la première réponse supprimera le fichier master.info (ainsi que le fichier relay-log.info ). Comme indiqué dans la première réponse, vous voulez également vous assurer que vous ne disposez pas de ces informations de configuration dans le fichier my.cnf, sinon la journalisation sera réactivée au prochain redémarrage du serveur.

Tim
la source
5

Une réponse est ici:

http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm

* Editez le fichier de configuration MySQL: /etc/my.cnf et supprimez les 7 lignes suivantes dans la section intitulée [mysqld]:

port=3306
log-bin
server-id=1
master-host=10.0.0.2
master-user=server_1_repl
master-password=server_1_passwd
master-port=3306*

Redémarrez MySQL.


la source
4

J'ajoute ceci à la réponse de Harrison Fisk:

Si vous avez utilisé RESET SLAVE ALL;alors redémarrer n'est pas nécessaire.

De plus, vous souhaiterez peut-être activer les événements qui ont été désactivés sur esclave:

select * from information_schema.events where status = 'SLAVESIDE_DISABLED';

Pour chacun d'eux:

alter event <event_name> enable;
Franc Drobnič
la source