Warum brauchen wir Master-Slave-Replikation? 1. In einem komplexen Geschäftssystem gibt es ein Szenario, in dem eine SQL-Anweisung die Tabelle sperren muss, was dazu führt, dass der Lesedienst vorübergehend nicht verwendet werden kann, was den laufenden Geschäftsbetrieb erheblich beeinträchtigt. Verwenden Sie die Master-Slave-Replikation, damit die Master-Datenbank für das Schreiben und die Slave-Datenbank für das Lesen verantwortlich ist. Auf diese Weise kann der normale Geschäftsbetrieb durch Lesen aus der Slave-Datenbank gewährleistet werden, selbst wenn die Master-Datenbank die Tabelle sperrt. 2. Führen Sie ein Hot-Backup der Daten durch 3. Erweiterung der Architektur. Mit zunehmendem Geschäftsvolumen ist die E/A-Zugriffsfrequenz zu hoch und kann von einer einzelnen Maschine nicht mehr bewältigt werden. In diesem Fall werden mehrere Datenbanken zum Speichern von Daten verwendet, wodurch die Häufigkeit des Festplatten-E/A-Zugriffs verringert und die E/A-Leistung einer einzelnen Maschine verbessert wird. Was ist MySQL-Master-Slave-Replikation? MySQL Master-Slave-Replikation bedeutet, dass Daten von einem Masterknoten eines MySQL-Datenbankservers auf einen oder mehrere Slaveknoten kopiert werden können. MySQL verwendet standardmäßig asynchrone Replikation, sodass Slave-Knoten nicht ständig auf den Master-Server zugreifen müssen, um ihre eigenen Daten zu aktualisieren. Datenaktualisierungen können über Remoteverbindungen durchgeführt werden. Slave-Knoten können alle Datenbanken oder bestimmte Datenbanken oder bestimmte Tabellen in der Master-Datenbank kopieren. MySQL-Replikationsprinzip Prinzip: (1) Der Master-Server protokolliert Datenänderungen in einem Binärlog. Wenn sich Daten auf dem Master ändern, werden die Änderungen in das Binärlog geschrieben. (2) Der Slave-Server erkennt in einem bestimmten Zeitintervall, ob sich das Master-Binärprotokoll geändert hat. Wenn dies der Fall ist, startet er einen I/OThread, um das Master-Binärereignis anzufordern. (3) Gleichzeitig startet der Masterknoten einen Dump-Thread für jeden I/O-Thread, um ihm binäre Ereignisse zu senden und sie im lokalen Relay-Protokoll des Slave-Knotens zu speichern. Der Slave-Knoten startet den SQL-Thread, um das binäre Protokoll aus dem Relay-Protokoll zu lesen und es lokal wiederzugeben, damit seine Daten mit denen des Masterknotens übereinstimmen. Schließlich wechseln der I/OThread und der SQLThread in einen Ruhezustand und warten darauf, beim nächsten Mal geweckt zu werden. Das heißt:
Beachten: 1 – Der Master zeichnet die Operationsanweisung im Binlog-Protokoll auf und erteilt dem Slave dann die Berechtigung zur Remoteverbindung (der Master muss die Binärprotokollfunktion von Binlog aktivieren; normalerweise aktiviert der Slave aus Gründen der Datensicherheit auch die Binlog-Funktion). 2 – Slave startet zwei Threads: IO-Thread und SQL-Thread. Darunter: Der IO-Thread ist dafür verantwortlich, den Binlog-Inhalt des Masters in das Relay-Protokoll zu lesen; der SQL-Thread ist dafür verantwortlich, den Binlog-Inhalt aus dem Relay-Protokoll zu lesen und ihn in der Datenbank des Slaves zu aktualisieren, um sicherzustellen, dass die Slave-Daten mit den Master-Daten übereinstimmen. 3 - Für die MySQL-Replikation sind mindestens zwei MySQL-Dienste erforderlich. Natürlich können MySQL-Dienste auf verschiedene Server verteilt werden, oder es können mehrere Dienste auf einem Server gestartet werden. 4 - Die MySQL-Replikation stellt am besten sicher, dass die MySQL-Version auf dem Master- und dem Slave-Server identisch ist (wenn die Versionskonsistenz nicht erreicht werden kann, stellen Sie sicher, dass die Version des Masterknotens niedriger ist als die Version des Slave-Knotens). 5 - Die Zeit zwischen Master- und Slave-Knoten muss synchronisiert werden Konkrete Schritte: 1. Die Slave-Datenbank stellt eine Verbindung zur Master-Datenbank her, indem sie die Anweisung „change master to“ manuell ausführt, alle Bedingungen für den verbundenen Benutzer angibt (Benutzer, Kennwort, Port, IP) und der Slave-Datenbank die Startposition des Binärprotokolls mitteilt (Dateiname, Positionsnummer). Starten Sie den Slave. 2. Stellen Sie eine Verbindung zwischen dem IO-Thread der Slave-Bibliothek und dem Dump-Thread der Master-Bibliothek her. 3. Der Slave-E/A-Thread initiiert eine Binärprotokollanforderung an den Master basierend auf dem Dateinamen und der Positionsnummer, die durch die Anweisung „Change Master to“ bereitgestellt werden. 4. Der Dump-Thread der Masterdatenbank sendet das lokale Binärprotokoll in Form von Ereignissen basierend auf der Anforderung der Slavedatenbank an den IO-Thread der Slavedatenbank. 5. Empfangen Sie Binlog-Ereignisse vom IO-Thread der Bibliothek und speichern Sie sie im lokalen Relay-Log. Die übertragenen Informationen werden in master.info aufgezeichnet. 6. Wenden Sie das Relay-Log vom SQL-Thread der Datenbank aus an und speichern Sie die angewendeten Datensätze in relay-log.info. Standardmäßig werden die angewendeten Relays automatisch gelöscht. Installation und Konfiguration der MySQL Master-Slave-Replikation 1. Grundlegende Einrichtungsvorbereitung Betriebssystem: centos6.5 MySQL-Version: 5.7 Zwei virtuelle Maschinen: Knoten1:192.168.85.11 (primär) Knoten2:192.168.85.12 (Sklave) 2. MySQL-Datenbank installieren Detaillierte Installations- und Deinstallationsschritte finden Sie in den entsprechenden Dokumenten 3. Erstellen Sie Datenbanken in zwei Datenbanken --Beachten Sie, dass beide Maschinen ausführen müssen Datenbank msb erstellen; 4. Konfigurieren Sie Folgendes auf dem primären Server (Knoten1): Ändern Sie die Konfigurationsdatei und führen Sie den folgenden Befehl aus, um die MySQL-Konfigurationsdatei zu öffnen vi /etc/meine.cnf Fügen Sie dem mysqld-Modul die folgenden Konfigurationsinformationen hinzu
5. Konfigurieren Sie die Kontoautorisierung für die Anmeldung vom Server beim Masterserver --Autorisierungsvorgang Setzen Sie die globale Validate_Password_Policy = 0. Setzen Sie global validate_password_length=1; Gewähren Sie 'root'@'%', gekennzeichnet durch '123456', Replikations-Slave auf *.*; --Berechtigungen aktualisieren Berechtigungen leeren; 6. Konfiguration des Slave-Servers Ändern Sie die Konfigurationsdatei und führen Sie den folgenden Befehl aus, um die MySQL-Konfigurationsdatei zu öffnen vi /etc/meine.cnf Fügen Sie dem mysqld-Modul die folgenden Konfigurationsinformationen hinzu log-bin=master-bin #Name der Binärdatei binlog-format=ROW #Format der Binärdatei server-id=2 #Server-ID 7. Starten Sie den mysqld-Dienst des primären Servers neu Starten Sie den MySQL-Dienst neu Dienst MySQL Neustart Melden Sie sich bei der MySQL-Datenbank an mysql -uroot -p Überprüfen Sie den Status des Masters Masterstatus anzeigen; 8. Starten Sie den Slave-Server neu und nehmen Sie die entsprechenden Konfigurationen vor Starten Sie den MySQL-Dienst neu Dienst MySQL Neustart Melden Sie sich bei MySQL an mysql -uroot -p Mit dem Hauptserver verbinden Ändern Sie den Master in master_host='192.168.150.11',master_user='root',master_password='123456',master_port=3306,master_log_file='master-bin.000001',master_log_pos=334; Starten Sie den Slave Slave starten Überprüfen des Slave-Status zeige Slave-Status\G (beachten Sie, dass kein Semikolon vorhanden ist) 9. Zu diesem Zeitpunkt können Sie zugehörige Daten auf dem Masterserver hinzufügen und löschen und den zugehörigen Status auf dem Slaveserver anzeigen. Das Wissen über Datenbanken und andere Java-bezogene Kenntnisse wurde in meine Code-Cloud hochgeladen. Sie können es abrufen, wenn Sie es benötigen. Persönliche Code-Cloud-Adresse Das Obige ist eine umfassende Interpretation der MySQL-Master-Slave-Replikation, von den Prinzipien bis hin zu Installations- und Konfigurationsdetails. Weitere Informationen zur MySQL-Master-Slave-Replikation finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Automatische Dateisynchronisierung zwischen zwei Linux-Servern
>>: Zabbix implementiert die Überwachung mehrerer MySQL-Prozesse
Da die Plattform weiter wächst, ist die Forschung...
In diesem Artikel wird der spezifische Code von j...
Die folgenden Fragen basieren alle auf der InnoDB...
Ich glaube, dass Studenten, die etwas über die Do...
Um einen String in ein Array aufzuteilen, müssen ...
1. Zunächst müssen wir zwischen der Tomcat-Protok...
Inhaltsverzeichnis Vorwort Einzelne Dateikomponen...
Mit dem Befehl „Find“ können Sie in einem angegeb...
Inhaltsverzeichnis 1. Holen Sie sich den Wert des...
Vorwort Die MySQL-Abfrage verwendet den Select-Be...
Dieser Artikel beschreibt MySQL-Mehrtabellenabfra...
In Projekten wird häufig das zweispaltige Layout ...
1. Laden Sie zunächst die entsprechende Datenbank...
Vorwort In vielen Fällen werden wir virtuelle Mas...
Laufumgebung, Idea2020-Version, Tomcat10, beim Au...