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. 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:
|
<<: So konfigurieren Sie Nginx zur Rückgabe von Text oder JSON
>>: Detaillierte Erläuterung des Nest.js-Hashing- und Verschlüsselungsbeispiels
axios installieren und Kommunikation implementier...
1. Das ul-Tag hat in Mozilla standardmäßig einen ...
<Vorlage> <div id="Wurzel">...
Hintergrund Wie wir alle wissen, müssen wir nach ...
Inhaltsverzeichnis Szenario Wirkung Code Zusammen...
Inhaltsverzeichnis 1. Was ist eine Richtlinie? Ei...
Da ich möchte, dass die virtuelle Maschine eine e...
Vorwort Jeder weiß, wie man ein JAR-Paket unter L...
1. Installieren Sie zuerst die Abhängigkeitspaket...
Standardisierte Designlösungen – Auszeichnungsspr...
Vor Kurzem habe ich gelernt, mit Nginx statische ...
Inhaltsverzeichnis Vorwort Umsetzungsideen Wirkun...
Der erste Typ: vollständige CSS-Steuerung, Layer ...
Vorwort Ich habe MySQL 5.6 bereits installiert. D...
Inhaltsverzeichnis Problembeschreibung Frontend-S...