p>
Manche Leute fragen mich immer, ob ich Lesen und Schreiben trennen kann. Sagen wir es so: Das Schwierige ist, ob wir uns treffen können so ein großes Projekt. Wenn es sich um ein so großes Projekt handelt, sollte die Trennung von Lesen und Schreiben auf keinen Fall von ein oder zwei Personen vorgenommen werden, sondern sollte die Zusammenarbeit vieler Menschen sein.
Verwandte Lernempfehlungen: MySQL-Video-Tutorial p>
Also! Ich habe es nicht getan.
Aber...
Können wir es nicht als experimentelle Umgebung nutzen? (Ein verlegenes Lächeln)
Von der Suche nach Dokumentation bis zur Durchführung des Experiments habe ich insgesamt drei Tage gebraucht (weil ich mich nicht den ganzen Tag auf diese Angelegenheit konzentriert habe). Grundsätzlich erledigt, das heißt, wenn mich jemand fragt, ob ich weiß, wie es geht, sage ich, dass ich es bereits getan habe und es keine schwierige Aufgabe ist.
Die, die auf der Master-Datenbank arbeiten, sind
mysql > #Master-Datenbankstatus anzeigen
mysql > . zu 'slave'@'%ip%' identifiziert durch 'password'; # Die Erklärung hinter to: 'slave' gibt an, welches Konto das nach @ ist Die IP des Slave-Servers und die darauffolgende von by ist das Passwort;
systemctl status firewalld # Firewall-Status anzeigen
firewall-cmd –list-all # Die Firewalls anzeigen Portliste
firewall-cmd –permanent –zone=public –add-port=3306/tcp # Port 3306 freigeben
firewall-cmd –reload # Starten Sie die Firewall neu
Darüber hinaus können Sie sich iptable selbst ansehen
Die Hauptoperationen in der Slave-Bibliothek sind
- mysql> // Replikation stoppen
- mysql> // Replikation starten;
- mysql> show Slave StatusG; # Status anzeigen
Einführung in die Umgebung
- Masterserver 192.168. 5.238 Centos 7.4
- Slave-Server 192.168.5.239 Centos 7.4
- Protokolle für Master-Slave-Konfiguration verwenden
Konfiguration auf dem Master-Server
Firewall-Betrieb: Um später seltsame Probleme zu vermeiden, lesen Sie den Firewall-Betrieb mehrerer häufig verwendeter Befehle
MySQL-Protokoll -bezogene Konfiguration, berühren Sie nicht andere Dinge, lesen Sie einfach diesen Absatz
# aster live copy configure
log-bin=mysql-bin //Protokolldatei Name
binlog_format=mixed //Dieses Protokollformat hat mehrere Optionen. Die optionale Option „statement/row/mixed“ ist „statement/row/mixed“. Wenn Sie mehr erfahren möchten, können Sie die offizielle Dokumentation lesen br/>server-id = 238 //Um eine wiederholte Verwendung zu vermeiden, versuchen Sie, die letzte Ziffer der Server-IP zu verwenden, um ihn zu benennen
skip_name_resolve=ON //Schreiben Sie dies einfach direkt und beziehen Sie sich auf die Dokumente anderer Personenexpire_logs_days = 10 //Legen Sie die Anzahl der Tage fest, die das Protokoll speichern soll. Es spielt keine Rolle, ob Sie es hinzufügen, da es in der Testumgebung offiziell online ist und beim Ausführen müssen Sie darüber nachdenken
# /etc/init.d/mysql restart // Dies ist nicht unbedingt dieser Befehl. Es hängt davon ab, wie Sie Centos installiert haben Wenn Sie MySQL nicht verstehen, können Sie mehr über Linux-Operationen erfahren.
##Wenn die beiden Server nicht repliziert werden, sollte die UUID von auto.cnf unterschiedlich sein. Wenn sie repliziert werden, sollten Sie eine verwenden Schauen Sie nach. Wenn es eine im /var-Verzeichnis des MySQL-Installationsverzeichnisses gibt, löschen Sie diese Datei oder sichern Sie sie
Kopieren die MySQL-Konfigurationsberechtigungen
# mysql -uroot -p „password“ //Melden Sie sich beim MySQL-Server an, Sie werden aufgefordert, Ihr Passwort einzugeben
mysql>GRANT replication Slave ON '. Slave'@'%' IDENTIFIED BY '111111'; // Erklären Sie, dass die Replikation Replikationsberechtigungen zuweist. Das 'Slave'@'%' am Ende bedeutet, dass jeder Host kann den Slave zum Kopieren aus der Bibliothek verwenden oder die IP gefolgt vom Passwort angeben
mysql> +——————+————-+——— —–+—————+———— ———-+
| Binlog_Ignore_DB |
+—————+. -+————–+—————-+
| br/> 1 Zeile im Satz (0,00 Sek.)
Das Sehen der obigen Tabelle zeigt einen Erfolg an
Konfiguration aus der Bibliothek
Modify my.cnf
log-bin=mysql-bin //Protokolldateiname
p>
binlog_format=mixed //Protokollformat
server-id =239 //Der Server ID hat die gleiche Erklärung wie der Hauptserver, wobei das Ende der IP verwendet wird
# Expire_logs_days = 10 //Ich habe dies auskommentiert,
# Early-Plugin-Load = „“ //Dies wird vorerst nicht verwendet. Wenn diese Option aktiviert ist, ist die Master-Slave-Replikation kein kritisches Element.
relay_log = mysql-relay-bin //. Dies ist ein Replikationsprotokoll aus der Bibliothek
relay_log_index=relay_log.index //Protokollindex
# /etc/init.d/mysql restart // Dies ist nicht unbedingt dieser Befehl . Es hängt davon ab, wie Sie Centos installiert haben. Wenn Sie dies nicht verstehen, können Sie mehr über Linux-Operationen erfahren Sklavenbibliothek
Geben Sie das MySQL-Terminal der Sklavenbibliothek ein #mysql -uroot -p //Geben Sie das Terminal ein
# mysql -uroot -p // Betreten Sie das Terminal (Der Grund, warum ich mehr Details schreibe, ist, dass ich befürchte, dass die Leute, die diesen Artikel lesen, falsch verstehen, dass der Vorgang unvollständig ist)
Schließen Sie den Slave # Achten Sie auf die Konfiguration der Slave-Bibliothek. Schließen Sie den Slave vorher;
mysql>stop Slave; //Dies dient zum Schließen der Slave-Bibliothek , garantieren Sie, dass es erfolgreich ist
Master-Parameter ändern
mysql>Master ändern in
master_host='192.168.5.238',master_user='slave',
master_password='Füllen Sie das Obige aus, um das Passwort für die Master-Datenbankreplikation für Berechtigungen einzurichten',
master_log_file='mysql-bin.000010', //Füllen Sie es aus Kopieren Sie hier den Dateinamen für den Show-Master-Status in der Hauptbibliothek.
master_log_pos=2812 / /Schauen Sie im Show-Master-Status der Hauptbibliothek nach
Starten Sie die Slave-Bibliothek
mysql>start Slave; //Starten Sie die Slave-Bibliothek
Überprüfen Sie, ob die Master-Slave-Replikation erfolgt ist erfolgreich
mysql> show Slave Status G;
Slave_IO_State: Waiting for master to send event Master_Host: 192.168.5.238 Master_User: slave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000010 Read_Master_Log_Pos: 2812 Relay_Log_File: mysql-relay-bin.000013 Relay_Log_Pos: 3025 Relay_Master_Log_File: mysql-bin.000010 Slave_IO_Running: Yes Slave_SQL_Running: YesNach dem Login kopierenBeachten Sie, dass die Werte von Slave_IO_Running und Slave_SQL_Running beide „Ja“ sind. Wenn es fehlschlägt, sehen Sie sich bitte die Eingabeaufforderungsmeldung unten an . Sie sollten es finden können, indem Sie bei Google und Baidu suchen
Bei der Konfiguration ist ein Problem aufgetreten. Das Problem besteht darin, dass der UUID-Fehler gemeldet wird Der Grund dafür ist, dass meine experimentelle Umgebung nach der Installation von MySQL von einer virtuellen Maschine kopiert wird, sodass die UUID von MySQL dieselbe ist
# cd /usr /local/mysql/var# mv auto.cnf auto.cnf.back //Überprüfen Sie, ob dies vorhanden ist. Wenn ja, ist es das.
# /etc/init.d/mysql restart //Starten Sie die Datenbank neu
Dann führen Sie show Slave StatusG aus; beobachten Sie zwei Ja
Jetzt loggen- Die basierte Master-Slave-Replikation ist abgeschlossen
Verwandte grafische Tutorials: MySQL-Datenbank-Grafik-Tutorial
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der MySQL-Protokoll-basierten Master-Slave-Replikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!