Gibt es eine Möglichkeit, die MySQL-Replikation auf dem Master zu stoppen?

7

Ich möchte, dass der Master die Datenreplikation auf den Slave beendet. Ich weiß, dass ich das mit dem Sklaven machen kann STOP SLAVE;, aber ich frage mich, ob es im Master eine Möglichkeit gibt, das zu tun.

Eine mögliche Lösung könnte darin bestehen, den Wert server_idauf 0 zu ändern. In diesem Fall muss mysql im Master neu gestartet werden, damit die Änderungen wirksam werden.

Was ich suche, ist eine Aussage wie STOP MASTER;.

HalaKuwatly
quelle
Hm, würde es funktionieren, Verbindungen zur IP zu verweigern, auf der sich der Slave befindet?
Ypercubeᵀᴹ
Sie meinen, indem Sie die pw des Replikationsbenutzers oder dergleichen ändern?
HalaKuwatly
Warum soll der Master die Datenreplikation auf den Slave beenden? Liegt es daran, dass Sie die Replikation nicht mehr verwenden möchten, oder versuchen Sie, ein anderes Problem zu lösen? Die beste Antwort und eine sichere Antwort auf Ihre Frage kann ohne diese Informationen nicht gegeben werden.
Michael - sqlbot
Der Slave ist nicht mehr erreichbar und ich möchte die Replikation vom Master stoppen, damit die Replikation nicht fortgesetzt wird, wenn der Slave wieder erreichbar ist.
HalaKuwatly

Antworten:

9

Es gibt weder einen STOP MASTER;Befehl noch einen manuellen Mechanismus vom Master, um die Replikation zu stoppen. Sie müssten zu jedem Slave gehen und Folgendes ausführen:

  • STOP SLAVE; (Tötet den E / A-Thread und den SQL-Thread ab)
  • STOP SLAVE IO_THREAD; (Tötet nur den E / A-Thread)

Wenn Sie eine dieser Optionen ausführen, erhalten Sie Folgendes:

  • Saubere Aufzeichnung der Replikationskoordinaten in master.info
    • Master_Log_File
    • Read_Master_Log_Pos
    • Relay_Master_Log_file
    • Exec_Master_Log_Pos

Der E / A-Thread kommuniziert mit dem Master. Wenn Sie den E / A-Thread auf der Masterseite mit dem KILLBefehl beenden, wird der E / A-Thread auf jedem Slave abgebrochen. Dies könnte die saubere Aufzeichnung von Replikationskoordinaten beschädigen.

RolandoMySQLDBA
quelle
2

Der einfachste Weg, dies online zu tun, besteht darin, alle REPLICATION SLAVEBerechtigungen auf dem Master für alle Benutzer zu widerrufen, die über diese verfügen.

Dies bietet den zusätzlichen Vorteil, dass Sie selektiv auswählen können, welche Slaves Sie entfernen.

Überprüfen Sie anschließend, ob vorhandene Replikationssitzungen mit vorhanden sind, SHOW PROCESSLISTund beenden Sie diese mit dem KILLBefehl (diese werden möglicherweise von selbst gelöscht, nachdem Sie die Berechtigungen widerrufen haben, aber ich vermute, dass dies nicht der Fall ist).

Sie müssen bedenken, dass bei diesem Ansatz die Replikation auf dem Slave nicht vollständig gestoppt wird. Dies kann dazu führen, dass der SLAVE IO_THREADMaster keine neuen Anweisungen (Abfragen) abrufen kann. Wenn Sie jedoch eventuell Abfragen haben Sie erhalten bereits vom Master (diese werden in Ihrem Relay-Protokoll gespeichert), wurden jedoch noch nicht ausgeführt (Sie können überprüfen, ob Sie Sekunden hinter dem Master haben, um festzustellen, ob dies der Fall ist). Dies verhindert jedoch nicht, dass diese Abfragen dies nicht tun ausführen.

Nathan Jolly
quelle
Wenn Sie Berechtigungen widerrufen, stellen Sie sicher, dass Sie auch eine ausführen FLUSH PRIVILEGES, um MySQL anzuweisen, die Berechtigungstabelle im Speicher neu zu laden.
Altmannmarcelo
1
Sie sollten dies selten FLUSH PRIVILEGEStun müssen, es sei denn, Sie ändern die Berechtigungen in den MySQL-Tabellen direkt. Wenn Sie Berechtigungen mit REVOKE oder DROP USER löschen, lädt der Server die Grant-Tabellen automatisch neu.
Nathan Jolly
Ich werde es später heute versuchen
HalaKuwatly
Ich habe es versucht und tatsächlich wurde die Replikation auf dem Slave fortgesetzt, ich musste ausstellen stop slave;und start slave; damit es funktioniert!
HalaKuwatly
auf Flush Doc Seite MySQL können Sie sehen , dass REVOKE, DROP USER, DROP SERVER, und UNINSTALL PLUGINnicht bündig nicht die Privilegien Tabellen aus dem Speicher. Nachdem Sie einen dieser Befehle ausgeführt haben, müssen Sie ihn noch ausführen FLUSH PRIVILEGES.
Altmannmarcelo