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

Implementierung der Kommunikation zwischen Vue und Flask

axios installieren und Kommunikation implementier...

25 Tipps und Tricks zur Div+CSS-Programmierung

1. Das ul-Tag hat in Mozilla standardmäßig einen ...

WeChat-Applet zur Bestimmung, ob die Mobiltelefonnummer legal ist Beispielcode

Inhaltsverzeichnis Szenario Wirkung Code Zusammen...

Der beste Weg, ein JAR-Paketprojekt unter einem Centos7-Server zu starten

Vorwort Jeder weiß, wie man ein JAR-Paket unter L...

Installationsprozess des 64-Bit-Quellcodes von CentOs7 MySQL 5.6.40

1. Installieren Sie zuerst die Abhängigkeitspaket...

Auszeichnungssprache - Liste

Standardisierte Designlösungen – Auszeichnungsspr...

el-table in vue realisiert automatischen Deckeneffekt (unterstützt feste)

Inhaltsverzeichnis Vorwort Umsetzungsideen Wirkun...

MySQL 5.7.17 Installations- und Konfigurations-Tutorial unter Linux (Ubuntu)

Vorwort Ich habe MySQL 5.6 bereits installiert. D...