it-swarm.com.de

Wie ändere ich einen vorherigen MySQL-Slave in einen Master und entferne Slave-Statusinformationen?

Ich habe eine Master -> Slave-Konfiguration, bei der der Master fehlgeschlagen ist. Ich konnte den alten Slave zurücksetzen, um ein Master zu sein, und den alten Master, um daraus einen Slave zu machen. Fein.

Was ich scheinbar nicht tun kann, ist, die Master-Informationen auf dem alten Slave zu entfernen, der jetzt der neue Master ist. Aha:

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

Ich habe viel gelesen MySQL-Dokumentation , aber ich habe immer noch keinen Weg gefunden, die Slave-Informationen vom neuen Master zu löschen. Ich habe es versucht:

  1. RESET SLAVE, das diese Einstellungen nicht zu löschen scheint. [[Eigentlich entfernt es das master.info Datei, aber nicht die Speichereinstellungen. Siehe unten.]]
  2. CHANGE MASTER TO MASTER_Host='', der nur auf einen Fehler spuckt, da er kürzlich veraltet war.
  3. Überprüfen von my.cnf, das nicht über die Stamminformationen verfügt, da diese programmgesteuert hinzugefügt wurden.
  4. RESET MASTER weil einige MySQL-Dokumente es empfohlen haben. Dadurch werden nur die Bin-Protokolle zurückgesetzt.
  5. Stöbern Sie in den internen MySQL-Tabellen, um zu sehen, ob ich die zu löschenden Felder finde.

Was ist der richtige Weg, um dies unter MySQL ~ 5.5.9 zu tun? Vielen Dank für jede Hilfe.


Bearbeiten:

Es stellt sich also heraus, dass RESET SLAVE entfernt das master.info Datei wie @RolandoMySQLDBA impliziert. Sie müssen den Server jedoch noch neu starten, bevor die Slave-Informationen entfernt werden.

Gibt es eine Möglichkeit, diese Slave-Informationen zu entfernen ohne mysqld neu starten zu müssen?

In MySQL 5.5.16 und höher können Sie RESET SLAVE ALL Verwenden, um alles zu tun, was RESET SLAVE Tut nd die Verbindungsparameter aus dem Speicher zurücksetzen, auf diese Weise nicht erfordern einen mysqld Neustart.

10
Filipe Giusti

Der schnellste und schmutzigste Weg, Slave-Informationen aus einer MySQL-Instanz zu löschen

  • Hinzufügen skip-slave-start zu /etc/my.cnf unter [mysqld]
  • service mysql stop
  • rm -f /var/lib/mysql/master.info /var/lib/mysql/relay-*
  • service mysql start
  • Entfernen skip-slave-start von /etc/my.cnf

Das sollte es für dich tun !!!

Dies wäre notwendig, weil gemäß MySQL-Dokumentation auf RESET SLAVE :

In MySQL 5.5 (im Gegensatz zu MySQL 5.1 und früheren Versionen) ändert RESET SLAVE keine Replikationsverbindungsparameter wie Master-Host, Master-Port, Master-Benutzer oder Master-Kennwort, die im Speicher gespeichert sind. Dies bedeutet, dass START SLAVE ausgegeben werden kann, ohne dass nach RESET SLAVE eine Anweisung CHANGE MASTER TO erforderlich ist.

Somit befinden sich die Replikationsinformationen immer noch im Speicher. Ein MySQL-Neustart ist der einzige Weg.

6
RolandoMySQLDBA

RESET SLAVE, Gefolgt von einem Neustart, löscht die Slave-Informationen für phpmyadmin nicht. Sie müssen auch CHANGE MASTER TO MASTER_Host='' Setzen.

5
Jack

Ich würde empfehlen, den Befehl zum Überspringen des Slave-Slaves in Ihrer Konfigurationsdatei ("in /etc/my.cnf") unter Ihrem "mysqld" beizubehalten, um ein Überschreiben der Master-Slave-Daten zu vermeiden. Um Ihnen ein Beispiel zu geben: Wenn Sie in einer Cloud-Umgebung arbeiten, sagen wir, ein alter Master stürzt ab und wird dann erfolgreich neu gestartet, wenn Ihr Provider das Problem behebt. Der alte Slave (jetzt neuer Master) wird vom alten Master repliziert und überschreibt zuvor die Daten Der DBA hat die Chance, dies zu realisieren.

Übrigens ist dies auch in Nicht-Cloud-Umgebungen relevant. Wenn beispielsweise ein anderer Administrator den alten Master ohne Koordination aufruft. Ein weiteres Problem, warum es eine gute Idee ist, den Befehl "Skip-Slave-Start" beizubehalten, auch wenn es sich um einen Slave handelt - keine automatische Replikation, was bedeutet, dass Sie mehr Kontrolle darüber haben, unvorhersehbare Ergebnisse zu verhindern. :) :)

3
Lena Weber