Heim  >  Artikel  >  Datenbank  >  Wie implementiert man die MySQL-Master-Slave-Replikation auf einem Windows-Host?

Wie implementiert man die MySQL-Master-Slave-Replikation auf einem Windows-Host?

亚连
亚连Original
2018-05-12 09:22:391884Durchsuche

Die Master-Slave-Replikation von MySQL wird über Binlog-Protokolle implementiert. Der „Master“ bezieht sich bei der Master-Slave-Replikation auf die Datenbank auf dem MySQL-Master-Server und der „Slave“ bezieht sich auf den MySQL-Slave-Server .Datenbank, und diese Art der Replikation basiert auf der Datenbankebene. Aus diesem Grund muss der Datenbankname im Slave-Server mit dem Datenbanknamen im Master-Server übereinstimmen mindestens zwei MySQL-Server (Am besten ist es, wenn sich die beiden MySQL-Server auf unterschiedlichen Hosts befinden oder zwei MySQL-Server auf einem Host mit unterschiedlichen Ports installiert sind).

Im Allgemeinen sind die Hauptdatenbank und die Slave-Datenbank der MySQL-Datenbank auf verschiedene Hosts verteilt. Wenn wir jetzt nur einen Host haben und es sich um ein Windows-System handelt, wie implementiert man dann die Master-Slave-Replikation von MySQL? Die Methode ist wie folgt:

Hier stellen wir nur die Betriebsmethode von einem Master und einem Slave vor.

Auf meinem Computer ist die integrierte xampp-Umgebung installiert (ähnlich dem wamp-Installationspaket), und der darin enthaltene MySQL-Dienst kann als Hauptserver von MySQL verwendet werden. Dann müssen wir auf diesem Computer auch ein weiteres MySQL als Slave-Server der Datenbank installieren.

Die installierte MySQL-Version in meinem Computer xampp ist 5.6.20 und der Port ist 3306.

Wir müssen ein anderes MySQL installieren (am besten installieren Sie dieselbe Version oder eine ähnliche Version, um Probleme zu vermeiden) und der Port wird auf 3307 geändert

Datenbankserverparameter:


  • Masterserver (Master): IP ist 127.0.0.1, Port ist 3306

  • Slave: IP ist 127.0.0.1, Port ist 3307

Masterserver Konfiguration:

Ändern Sie die Datenbankkonfigurationsdatei des Hauptservers (E:xamppmysqlbinmy.ini) und fügen Sie unten im [mysqld]-Tag Folgendes hinzu Code:

#Die Datenbank, die gesichert werden muss

binlog-do-db=test

#Die Datenbank, die nicht gesichert werden muss up

binlog-ignore-db=mysql

#Binärprotokoll aktivieren

log-bin=mysql-bin

#Server-ID

server-id=1

Speichern Beenden Sie den MySQL-Hauptserver und starten Sie ihn neu.

binlog-do-db wird verwendet, um die Datenbank anzugeben, die synchronisiert werden muss. binlog-ignore-db gibt die Datenbank an, die nicht synchronisiert werden muss Der Server kopiert alle Datenbanken vom Master-Server.

Im Allgemeinen wird das Root-Konto nicht für das Synchronisierungskonto verwendet. Aus diesem Grund müssen wir einen neuen Benutzer auf dem Hauptserver erstellen (z. B. Benutzer01, Passwort ist 123456).

Hier erstellen wir es über die Befehlszeile. Die Methode ist wie folgt:

Öffnen Sie cmd, wechseln Sie zu E:xamppmysqlbin , verwenden Sie das Root-Konto, um eine Verbindung zum MySQL-Hauptserver herzustellen:

mysql -uroot -p -P3306

Erstellen Sie einen neuen Benutzer :

Benutzer 'user01'@'127.0.0.1' erstellen, identifiziert durch '123456';

(die IP-Adresse nach @ Die IP-Adresse des Clients, der eine Verbindung herstellen darf.)

Konfigurieren Sie dann die Master-Slave-Replikationsberechtigungen für den neuen Benutzer:

Zuschuss Replikationsslave auf *.* an „Benutzer01“@„127.0.0.1“, identifiziert durch „123456“;

(die IP-Adresse nach @ darf eine Verbindung herstellen Wenn die IP-Adresse des Clients in „%“ geändert wird, bedeutet dies, dass für den Client keine IP-Adressbeschränkungen gelten.)

Wenn bereits Daten in der Datenbank des Hauptservers vorhanden sind (Test), werden wir Zuerst müssen Sie die Daten manuell vom Master-Server auf den Slave-Server kopieren. Die Methode ist wie folgt:

In diesem Fall sichern wir nur eine Datenbank (Test). Es gibt eine Tabelle basic_user im Test und es sind bereits Daten in der Tabelle vorhanden. Um zu verhindern, dass die Daten im Datenbanktest aktualisiert werden, wenn wir die Daten kopieren, müssen wir zuerst die Datenbank sperren. Der Befehl lautet wie folgt:

Tabellen mit Lesesperre leeren;

Bei diesem Befehl handelt es sich um eine globale Lesesperre für alle Datenbanken im Hauptserver ist der Unterschied zwischen Lesesperren und Schreibsperren:


  • Lesesperre: auch Shared Lock genannt, erlaubt alle liest den Vorgang, blockiert aber den Schreibvorgang, d. h. alle Verbindungen können nur Daten lesen, dürfen aber keine Daten schreiben.

  • Schreibsperre: Wird auch als exklusive Sperre oder exklusive Sperre bezeichnet und ermöglicht nur das Lesen und Schreiben der aktuellen Verbindung und keine anderen gleichzeitigen Lese- und Schreibvorgänge .


Nachdem wir die Datenbank des Master-Servers gesperrt haben, erstellen wir auch einen Datenbanktest im Slave-Server und stellen alle Tabellen ein (einschließlich Tabellenstruktur und Tabellendaten) werden importiert.

Dann führen wir den folgenden Befehl zum Entsperren aus:

unlock tables; 🎜>

Masterstatus des Hauptservers anzeigen: mysql> show master status;

+------------------+----------+--------------+- -- -------------+----+

| Binlog_Do_DB | Binlog_Ignore_DB |. Executed_Gtid_Set |

+------------------+----------+--------- - ----+------------------+-------------------+

|. mysql-bin.000008 |. 498 |. ------------- ----+

Slave-Server-Konfiguration:

Ändern Sie die Datenbankkonfigurationsdatei des Slave-Servers ( E:mysql

my.ini) und fügen Sie am Ende des

[mysqld]-Tags das hinzu folgender Code: #Port

port = 3307

#Server-IDserver_id = 2

#Binärprotokoll aktivieren (der Slave-Server muss das Binärprotokoll nicht aktivieren)

log-bin=mysql-bin

Speichern und beenden, den MySQL-Dienst neu starten.

Stellen Sie eine Verbindung zum MySQL-Slave-Server her:

mysql -uroot -p -P3307

Konfigurieren Sie die kopierten Parameter:

Master ändern in master_host='127.0.0.1',master_user='user01',master_password='123456',master_port=3306, master_log_file= 'mysql-bin.000008',master_log_pos=498;

Parameterdetails:

master_host: IP des Masters server
master_user: Der neu erstellte Benutzername auf dem Masterserver
master_password: Das Passwort des Benutzers
master_port: Der Port des Master-Server. Wenn er nicht geändert wurde, reicht die Standardeinstellung aus.

master_log_file: Der Name der binären Protokolldatei des Master-Servers. Geben Sie den Wert von Datei ein, der beim Anzeigen des Master-Status des Master-Servers angezeigt wird

master_log_pos: Der Speicherort des Protokolls. Füllen Sie den Positionswert aus, der angezeigt wird, wenn Sie den Master-Status des Master-Servers

Slave-Kopierfunktion vom Server starten:

Slave starten;

Slave-Status des Slave-Servers anzeigen:

MySQL anzeigen> Status G

*** ************************ 1. Zeile ************ **************** ****

Slave_IO_State: Warten auf das Senden eines Ereignisses durch den Master

Master_Host: 127.0.0.1

         Master_User: user01

                                           00009

Read_Master_Log_Pos: 120

Relay_Log_File: hp-PC- weitergeleitet

Wenn die Werte von Slave_IO_Running und Slave_SQL_Running beide „Ja“ sind, bedeutet dies, dass alle Konfigurationen der Master-Slave-Replikation erfolgreich waren, d. h. der Slave-Server kann die Datenbank automatisch synchronisieren Daten mit dem Master-Server.

Danach, solange die Daten auf dem Hauptserver aktualisiert werden (zum Beispiel: eine neue Tabelle wird in der Testdatenbank erstellt oder die Daten in der Tabellenänderungen), von Der Server bleibt automatisch mit dem Hauptserver konsistent. Wenn jedoch jemand absichtlich die Daten auf dem Slave-Server ändert, werden die Daten auf dem Master-Server nicht synchron aktualisiert, es sei denn, wir stellen die beiden MySQL-Server als gegenseitigen Master-Slave ein.
Das Obige ist, was ich über die Master-Slave-Architektur zum Konfigurieren von MySQL in einer Fensterumgebung zusammengestellt habe.

Verwandte Artikel:

Mysql-5.7.21 unter Windows installieren

Zusammenfassung der MySQL-Grundkenntnisse

Navicat für MySQL-Download, Installation und einfache Verwendung

Das obige ist der detaillierte Inhalt vonWie implementiert man die MySQL-Master-Slave-Replikation auf einem Windows-Host?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn