it-swarm.com.de

Wie deaktiviere ich die MySQL-Replikation vollständig?

Ich verwende die Dual-Master-MySQL-Replikation und möchte jetzt zu einer einzelnen Datenbank ohne Replikation wechseln. Wie deaktiviere ich die Replikation in beiden Datenbanken vollständig?

64
David Collie

Um die Replikation mit einem Master-Master-Setup vollständig zu deaktivieren, sollten Sie auf jedem Slave Folgendes ausführen:

  1. STOP SLAVE;
  2. RESET SLAVE; (Verwenden RESET SLAVE ALL; für MySQL 5.5.16 und höher)
  3. Bearbeiten Sie die Datei my.cnf und entfernen Sie alle Informationen (falls vorhanden), die sich auf die Optionen "master -..." oder "replicate -..." beziehen. Möglicherweise befindet sich in der Datei my.cnf nichts, da die Replikation auch dynamisch eingerichtet werden kann.
  4. Starten Sie mysqld neu.
81
Harrison Fisk

Ich weiß, dass dies eine alte Frage ist, aber ich habe festgestellt, dass ich auch die Slave-Variablen zurücksetzen muss. Wenn Sie "bla" wie vorgeschlagen verwenden, versucht der Server beim Start, den Server "bla" zu finden.

Ändern Sie MASTER in MASTER_Host='',MASTER_USER='',MASTER_PASSWORD='';

Sie können überprüfen, ob das Gerät kein Slave mehr ist

SHOW SLAVE STATUS \G;
18
AndyW

Auf den Slave-Servern:

  1. Führen Sie "Slave stoppen" aus, um die Replikation zu stoppen.
  2. Führen Sie "Slave zurücksetzen" aus, um den Slave-Server anzuweisen, seine Position im vom Master-Server abgerufenen Binärprotokoll zu vergessen.
  3. Fügen Sie my.cnf "skip-Slave-Start" hinzu, um zu verhindern, dass die Replikation beim Neustart von MySQL gestartet wird.

Es ist nicht erforderlich, MySQL auf dem Master oder dem Slave neu zu starten. Die vollständige Dokumentation finden Sie in Abschnitt 19 des MySQL-Referenzhandbuchs .

Ich würde empfehlen, die restlichen Replikationseinstellungen beizubehalten, falls Sie sich entscheiden, zu Ihrer vorherigen Konfiguration zurückzukehren. Auf diese Weise müssten Sie nur die Daten verschieben und die Slave-Position zurücksetzen (vergessen Sie nicht, den Skip-Slave-Start zu entfernen), anstatt das Setup-Ganztuch neu zu erstellen.

12
Chris Hall

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 immer noch in RAM für MySQL 5.5) verbleiben.

Ich habe gerade eine ähnliche Frage zu diesem Thema beantwortet: Wie ändere ich einen vorherigen MySQL-Slave in einen Master und entferne Slave-Statusinformationen?

7
RolandoMySQLDBA

Das Bearbeiten der Datei my.cnf allein reicht nicht aus, um die Replikation zu deaktivieren. Tatsächlich ist dies nicht mehr die empfohlene Methode, um es zu aktivieren. Das Einfügen von Einträgen in die Datei my.cnf ist nur für den nächsten Start wirksam und verhält sich so, als hätten Sie den Befehl in den MySQL-Client eingegeben:

mysql> ändere master in 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, anhand der 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.

6
Tim

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 im 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.

5
David Collie

Ich füge dies zu Harrison Fisks Antwort hinzu:

Wenn Sie RESET SLAVE ALL; dann ist kein Neustart erforderlich.

Darüber hinaus 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;
4
Franc Drobnič