Beispielcode für die Master-Slave-Trennung einer MySQL-Datenbank

Beispielcode für die Master-Slave-Trennung einer MySQL-Datenbank

einführen

Durch das Einrichten einer Lese-/Schreibtrennung für die MySQL-Datenbank können Schreib- und Lesevorgänge in der Datenbank auf unterschiedlichen Servern ausgeführt werden. Dadurch werden Parallelität und Reaktionsgeschwindigkeit erhöht.

Heutzutage verwenden die meisten größeren Websites eine Master-Slave-Trennung und eine Lese-/Schreibtrennung in der Datenbank, die nicht nur eine Sicherungsfunktion erfüllen kann, sondern auch den Druck beim Lesen und Schreiben in der Datenbank verringert. Ich habe immer davon gehört, aber ich habe es nie selbst praktiziert. Heute habe ich Zeit, es zu üben und den Prozess aufzuzeichnen.

Experimentelle Umgebung

Ich habe zwei Server vorbereitet, einen ist der lokale Computer und den anderen einen Remote-VPS, und die Datenbanken sind auf beiden Maschinen installiert.
Ich werde hier nicht die Installation von MySQL vorstellen. Worauf Sie hier achten müssen, ist: Die installierten MySQL-Versionen sollten konsistent sein. Wenn sie inkonsistent sind, kann es beim Lesen von einer niedrigeren Version auf eine höhere Version zu Problemen kommen. Es ist am besten, sie konsistent zu halten.

Master

45.78.57.4 CentOS 7 Linux-System, MySQL-Version 5.1.73

Sklave

Lokaler Computer 127.0.0.1 macOS-System, MySQL-Version 5.1.73

Konfiguration

Benutzer erstellen

Erstellen Sie einen Benutzer in der Masterdatenbank, um das Ausführungsprotokoll der Masterdatenbank aus der Slavedatenbank zu lesen.

Muss in der MySQL-Befehlszeile ausgeführt werden. Sie müssen sich zuerst bei der Befehlszeile anmelden

Kopieren Sie den Code wie folgt:

GRANT REPLICATION SLAVE ON *.* TO ‚test‘@‚45.78.57.4‘ IDENTIFIZIERT DURCH ‚test‘;

Ändern Sie my.cnf

Das Linux-System befindet sich in /etc/my.cnf, das Mac-System in dem Verzeichnis, in dem MySQL installiert ist, und das Windows-System ist dasselbe.

Fügen Sie der Datei my.cnf den folgenden Code hinzu

server-id = 1 //Datenbank-ID-Nummer log-bin=master-bin //Binärprotokoll aktivieren log-bin-index=master-bin.index //Name des Binärprotokolls

Achten Sie darauf, es nicht am Ende der Datei zu platzieren, sondern am Anfang, nach [mysqld]. Hier ist mein my.cnf-Inhalt

[mysqld]
Server-ID = 1
log-bin=master-bin
log-bin-index=master-bin.index

Datenverzeichnis=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
Benutzer=mysql
symbolische Links = 0
max_allowed_package=100M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-Datei=/var/run/mysqld/mysqld.pid

Status anzeigen

Geben Sie nach der Anmeldung bei der MySQL-Befehlszeile „show master status“ ein. Wenn die folgenden Informationen angezeigt werden, bedeutet dies, dass die Konfiguration der Masterdatenbank abgeschlossen ist.

mysql> Masterstatus anzeigen;
+-------------------+----------+--------------+------------------+
| Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 672675 | | |
+-------------------+----------+--------------+------------------+
1 Zeile im Satz (0,00 Sek.)

Notieren Sie die beiden Inhalte von Datei und Position, die beim Konfigurieren der Slave-Bibliothek verwendet werden.

Konfiguration aus der Bibliothek

Suchen Sie die Datei my.cnf auf dem lokalen Computer (Slave-Bibliothek) und fügen Sie den folgenden Inhalt hinzu. Diese Konfiguration hat dieselbe Bedeutung wie die Konfiguration der Master-Bibliothek.

Server-ID = 2
Relay-Log = Slave-Relay-Bin
relay-log-index=slave-relay-bin.index

Stellen Sie sicher, dass es sich am selben Speicherort wie die Hauptdatenbank befindet. Ich konnte es nicht zuordnen, da ich es am Ende platziert habe.

Master- und Slave-Bibliotheken verknüpfen

Der letzte Schritt ist sehr wichtig. Melden Sie sich bei der MySQL-Befehlszeile der Slave-Datenbank an und führen Sie den folgenden Code aus, der hauptsächlich dazu dient, einige Informationen der Master-Datenbank zuzuordnen.

Ändern Sie den Master in master_host='45.78.57.4', #Master-Server-IP
master_port=3306,
master_user='test',
master_password='test', 
master_log_file='master-bin.000001', #Name der Master-Protokolldatei master_log_pos=672675; #Startposition der Master-Protokollsynchronisierung

Achten Sie darauf, ob die Ausführung erfolgreich ist. Wenn die Ausführung fehlschlägt, prüfen Sie den Code sorgfältig, um festzustellen, wo der Fehler liegt.

Wenn die Ausführung normal ist, starten Sie den Slave und überprüfen Sie den Verbindungsstatus.

//Sie müssen „Start Slave“ in der MySQL-Befehlszeile ausführen; 
show slave status\G; //Slave-Verbindungsstatus anzeigen

Statusinformationen

        Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet
         Master_Host: 45.78.57.4
         Master_User: Test
         Master_Port: 3306
        Verbindungswiederholung: 60
       Master_Log_File: master-bin.000001
     Read_Master_Log_Pos: 672913
        Relay_Log_Datei: slave-relay-bin.000044
        Relay_Log_Pos: 504
    Relay_Master_Log_File: master-bin.000001
       Slave_IO_Running: Ja
      Slave_SQL_Running: Ja

Beachten!

Diese beiden Zustände müssen „Ja“ lauten, damit sie als erfolgreich gelten. Wenn nicht, überprüfen Sie, welcher Schritt im obigen Schritt einen Konfigurationsfehler aufweist.

Slave_IO_Running: Ja
Slave_SQL_Running: Ja

prüfen

Nun fügen Sie einen Datensatz in der Master-Datenbank hinzu, um zu prüfen, ob ein identischer Datensatz in der Slave-Datenbank vorhanden ist. Wenn ja, ist die Konfiguration normal und die Funktion funktioniert ordnungsgemäß.

Das Prinzip der Master-Slave-Trennung besteht im Wesentlichen darin, die Ausführungsprotokollfunktion der Masterdatenbank zu aktivieren, dann die Protokollinformationen der Masterdatenbank aus der Slavedatenbank zu lesen und dann die von der Masterdatenbank ausgeführten SQL-Anweisungen in der Slavedatenbank auszuführen, um eine Master-Slave-Trennung zu erreichen, die Master-Slave-Daten konsistent zu halten und die Daten zu sichern.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Konfigurationsschritte für die MySQL-Master-Slave-Synchronisierung und die Trennung von Lesen und Schreiben
  • Detaillierte Erläuterung der MySQL Master-Slave-Replikation, Lese-/Schreibtrennung, Sicherung und Wiederherstellung
  • Detaillierte Erläuterung der Konfigurationsmethode der Lese-/Schreibtrennung bei der MySQL-Master-Slave-Replikation
  • Detaillierte Erläuterung der Konstruktion der Lese-/Schreibtrennung bei der MySQL-Master-Slave-Replikation
  • Schritte zum Konfigurieren der MySQL-Master-Slave-Trennung unter Linux

<<:  So konfigurieren Sie Nginx zur Rückgabe von Text oder JSON

>>:  Detaillierte Erläuterung des Nest.js-Hashing- und Verschlüsselungsbeispiels

Artikel empfehlen

Javascript-Bereich und Abschlussdetails

Inhaltsverzeichnis 1. Geltungsbereich 2. Geltungs...

Details zur Ereignisbindung reagieren

Inhaltsverzeichnis Ereignisbindung von Klassenkom...

So konfigurieren Sie Nginx's Anti-Hotlinking

Experimentelle Umgebung • Eine minimal installier...

Teilen Sie 9 Linux Shell Scripting Tipps für die Praxis und Interviews

Vorsichtsmaßnahmen 1) Interpreter am Anfang hinzu...

Teilen Sie die 15 besten HTML/CSS-Design- und Entwicklungsframeworks

Professionelles Webdesign ist komplex und zeitint...

MySQL 8.0.19 Installations-Tutorial

Laden Sie das Installationspaket von der offiziel...

Verwendung des Linux-Stat-Befehls

1. Befehlseinführung Der Befehl stat wird verwend...

Das Laufschriftelement implementiert Effekte wie scrollende Schriften und Bilder

Mit dem Laufschriftelement können Sie einfache Gle...

Detaillierte Analyse mehrerer Situationen, in denen MySQL-Indizes fehlschlagen

1. Führende Fuzzy-Abfragen können keinen Index ve...

Detaillierte Erklärung der Semiotik in Html/CSS

Basierend auf Theorien wie Saussures Sprachphilos...

Lösung für das Verschwinden des MySql-Dienstes aus unbekannten Gründen

Lösung für das Verschwinden des MySql-Dienstes au...