Ich führe eine Dual-Master-MySQL-Replikation aus und möchte jetzt zu einer einzelnen Datenbank ohne Replikation wechseln. Wie deaktiviere ich die Replikation für beide Datenbanken vollständig?
Ich führe eine Dual-Master-MySQL-Replikation aus und möchte jetzt zu einer einzelnen Datenbank ohne Replikation wechseln. Wie deaktiviere ich die Replikation für beide Datenbanken vollständig?
Antworten:
Um die Replikation mit einem Master-Master-Setup vollständig zu deaktivieren, müssen Sie auf jedem Slave folgende Schritte ausführen:
STOP SLAVE;
RESET SLAVE;
(Verwendung RESET SLAVE ALL;
für MySQL 5.5.16 und höher)SLAVE STATUS
Abfragen gemeldet, auch nachdem der RESET SLAVE
Befehl erteilt wurde. Wichtig für Tools zur Überwachung oder zum Remotekonfigurationsmanagement. Bestätigtes Verhalten mit MySQL 5.5.38 unter CentOS 6.5.
Ich weiß, dass dies eine alte Frage ist, aber ich habe festgestellt, dass ich auch die Slave-Variablen zurücksetzen muss. Wenn Sie "blah" wie vorgeschlagen verwenden, versucht der Server beim Start, den Server "blah" zu finden.
Wechseln Sie
MASTER
zuMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';
Sie können überprüfen, ob das Gerät kein Slave mehr ist
SHOW SLAVE STATUS \G;
CHANGE MASTER TO MASTER_HOST=''
jetzt einen Fehler aus.
Auf den Slave-Servern:
Weder auf dem Master noch auf dem Slave muss MySQL neu gestartet werden. Eine vollständige Dokumentation finden Sie in Abschnitt 19 des MySQL-Referenzhandbuchs .
Es wird empfohlen, die restlichen Replikationseinstellungen beizubehalten, falls Sie die vorherige Konfiguration wiederherstellen möchten. Auf diese Weise müssen Sie nur die Daten verschieben und die Slave-Position zurücksetzen (vergessen Sie nicht, den Skip-Slave-Start zu entfernen), anstatt das gesamte Setup-Tuch neu zu erstellen.
Unabhängig von der MySQL-Version ist der vollständigste Weg, dies zu tun, der folgende
cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start
Dies muss für die neueste Version funktionieren, da die Replikationseinstellungen für MySQL 5.5 noch im RAM verbleiben.
Ich habe gerade eine ähnliche Frage zu diesem Thema beantwortet: Wie ändere ich einen früheren MySQL-Slave in einen Master und entferne Slave-Statusinformationen?
Das Bearbeiten der Datei my.cnf allein reicht nicht aus, um die Replikation zu deaktivieren. Tatsächlich ist dies nicht mehr die empfohlene Möglichkeit, dies zu aktivieren. Das Einfügen von Einträgen in die Datei my.cnf wirkt sich nur beim nächsten Start aus und verhält sich so, als hätten Sie den Befehl im mysql-Client eingegeben:
mysql> change master to master_host = 'blah', master_user = 'blah', master_password = 'blah' ...;
Beide Methoden erstellen eine Datei im Datenverzeichnis mit dem Namen master.info . Solange diese Datei vorhanden ist, versucht der Server, mit den dort angegebenen Details zu replizieren. Der "RESET SLAVE;" Der in der ersten Antwort aufgeführte Befehl entfernt die Datei master.info (sowie die Datei relay-log.info ). Wie in der ersten Antwort erwähnt, möchten Sie auch sicherstellen, dass diese Konfigurationsinformationen nicht in der Datei my.cnf enthalten sind. Andernfalls wird die Protokollierung beim nächsten Neustart des Servers wieder aktiviert.
Eine Antwort ist hier:
http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm
* Bearbeiten Sie die MySQL-Konfigurationsdatei: /etc/my.cnf und entfernen Sie die folgenden 7 Zeilen aus dem Abschnitt [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*
Starten Sie MySQL neu.
Ich füge dies zu Harrison Fisk's Antwort hinzu:
Wenn Sie verwendet haben, RESET SLAVE ALL;
ist ein Neustart nicht erforderlich.
Außerdem möchten Sie möglicherweise Ereignisse aktivieren, die auf dem Slave deaktiviert wurden:
select * from information_schema.events where status = 'SLAVESIDE_DISABLED';
Für jeden von ihnen:
alter event <event_name> enable;