1. Einleitung Die bisherige Programmarchitektur kann folgende Form haben: Wenn die Programmgröße zunimmt, können wir es auf mehrere Hintergrunddienstinstanzen erweitern, aber es gibt immer noch nur eine Datenbank, sodass der Engpass des Systems immer noch die Datenbank ist. Daher besteht die Hauptaufgabe diesmal darin, die Datenbank zu erweitern. Die Hauptform ist: Erweitern Sie mehrere Datenbankinstanzen, realisieren Sie eine Lese-/Schreibtrennung, weisen Sie der Hauptdatenbank einige Schreibaufgaben zu und verwenden Sie die Unterdatenbank für Leseaufgaben. Dadurch wird die Systemleistung verbessert. Die geänderte Architektur sieht wie folgt aus: 2. Umgebung Vor dem Bau Dieses Mal wird Docker zum Erstellen dieser Umgebung verwendet und die verwendete MySQL-Version ist 5.7.13. docker pull mysql:5.7.13 Die Gesamtstruktur ist:
Starten Sie diese Knoten zunächst separat und ordnen Sie sie unterschiedlichen Ports zu. Verwenden Sie das Datenbankverbindungstool auf diesem Computer, um eine Verbindung herzustellen und zu testen, ob es normal gestartet und verbunden ist. docker run -p 3307:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13 docker run -p 3308:3306 --name mysql-slave1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13 docker run -p 3309:3306 --name mysql-slave2 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13 Hier ordne ich den Masterknoten (mysql-master) dem Port Anschließend können Sie Tools wie Tragen Sie diese Knoten entsprechend ein und bearbeiten Sie die Konfigurationsdateien. docker exec -it mysql-master /bin/bash Ich verwende den Namen, um den Container einzugeben. Sie können auch nach der ID auswählen, d. h. Da die Programme Wechseln Sie in den Ordner mv Quellen.Liste Quellen.Liste.bak Anschließend erstellen Sie mit folgendem Befehl eine neue Datei und geben den Inhalt ein: echo deb http://mirrors.aliyun.com/ubuntu/ xenial Haupteingeschränktes Universum Multiversum > Quellenliste Dann führen wir 3. Führen Sie die Master-Slave-Konfiguration durch Masterknotenkonfiguration Rufen Sie nach dem Aufrufen des Masterknotencontainers den Ordner Bearbeiten Sie diese Datei, suchen Sie nach [mysqld] ... ... ## Eindeutige Nummer Server-ID=101 ## Dies ist das Schlüsselkonfigurationselement log-bin=mysql-bin Nachdem die Konfiguration abgeschlossen ist, müssen Sie den MySQL-Dienst neu starten, damit die Konfiguration wirksam wird. Verwenden Sie zum Neustarten Slave-Konfiguration Wie beim Masterknoten bearbeiten Sie die Datei [mysqld] ... ... ## Eindeutige Nummer Server-ID = 103 ## Auswählen. Wenn Sie diesen Knoten als Masterknoten anderer Knoten verwenden müssen, müssen Sie # log-bin = mysql-bin hinzufügen. Verknüpfen von Master- und Slave-Knoten Master-Knoten Geben Sie MySQL Führen Sie nach dem Aufrufen von MySQL Von hier erhalten wir die Werte von zwei Informationen, Slave-Knoten Geben Sie MySQL ein und führen Sie den folgenden Befehl aus: Ändere Master in Master_Host='***', Master_Port=3306, Master_User='Root', Master_Password='123456', Master_Log_File='****', Master_Log_Pos= ***; Erklären Sie, was diese Parameter jeweils bedeuten: master_host: Die IP-Adresse des Masterknotens. Sie können auf diesem Computer den folgenden Befehl verwenden, um die IP-Adresse des Containers anzuzeigen. docker inspect --format='{{.NetworkSettings.IPAddress}}' Containername | Container-ID master_port: die Portnummer von MySQL, nicht die extern zugeordnete Portnummer master_user: Benutzer in MySQL, muss über Berechtigungen verfügen, ich habe direkt root verwendet, Sie können auch einen neuen Benutzer erstellen master_password: MySQL-Kontokennwort, das für die Synchronisierung verwendet wird master_log_file: Die für die Synchronisierung verwendete Datei, d. h. die vom Masterknoten abgefragte Datei. Hier bin ich master_log_pos: Die Position, an der die Binlog-Datei synchronisiert wird, also die Position, die vom Masterknoten abgefragt wird. In meinem Fall ist es Führen Sie nach der Ausführung des Befehls jetzt Wir können hier die Konfigurationsinformationen überprüfen und dann sehen, dass die beiden Attribute Wir können Wenn der Start fehlschlägt, können wir überprüfen, ob eine Netzwerkverbindung besteht, ob das für die Synchronisierung verwendete MySQL-Kennwort korrekt ist und ob der Name und der Speicherort der Synchronisierungsdatei korrekt sind! prüfen Wir können eine neue Datenbank in der Master-Datenbank erstellen. Wenn wir die Existenz dieser Datenbank in der Slave-Datenbank sehen, bedeutet dies, dass die Master-Slave-Synchronisierung abgeschlossen ist. 4. Kaskadenkonfiguration Ich möchte einen weiteren Sicherungsknoten hinzufügen, und dieser Knoten wird vom Knoten Slave1 gesichert, d. h. der Knoten Slave1 dient als Masterknoten des Sicherungsknotens. Dadurch entsteht eine Kaskadenbeziehung von Master->Slave->Backup. Ich habe ursprünglich die obigen Schritte befolgt und es zur log-bin=mysql-slave-bin #Zur Unterscheidung habe ich den Dateinamen geändert Führen Sie es dann auf dem Backup-Knoten aus Ändere Master in master_host='***', master_user='root', master_password='123456', master_port=3306, master_log_file='****', master_log_pos= ***; Der Befehl wird durch die IP und andere Attribute des entsprechenden Slave-Knotens ersetzt. Es stellt sich heraus, dass es nicht funktioniert. Nach der Änderung des Primärknotens wird der Backup-Knoten nicht geändert! Also begann ich mit der Untersuchung und stellte fest, dass in der Binlog-Datei im Slave-Knoten keine Aufzeichnungen geänderter Informationen vorhanden waren und der Sicherungsknoten die Änderungen in dieser Datei überwachte. Wenn sich diese Datei nicht geändert hätte, hätte es auch keine Änderungen im Sicherungsknoten gegeben. Lassen Sie mich das ein wenig ausführen. Das Binärprotokoll von MySQL zeichnet alle unsere Änderungen auf, sodass wir theoretisch Binärprotokoll verwenden können, um den Datenbankinhalt jederzeit wiederherzustellen. Daher stellt sich die Frage, wie das Binlog-Protokoll des Slave-Knotens aufgezeichnet wird, nachdem sich der Master-Knoten geändert hat. Wir können beim Bearbeiten der Datei Dies ist möglich. Nachdem der Masterknoten geändert wurde, werden auch der Slaveknoten und der Backupknoten geändert. Die Daten des Backupknotens werden vom Slaveknoten gesichert. 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:
|
<<: Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.17
>>: JavaScript Canvas Tetris-Spiel
Inhaltsverzeichnis 1. Was ist vuex 2. Installatio...
In diesem Artikelbeispiel wird der spezifische Co...
1. Benutzer anlegen und autorisieren Das Erstelle...
Inhaltsverzeichnis Prototypen verstehen Prototypo...
Wir alle kennen die Drag-and-Drop-Funktion von HT...
Laden Sie das Image herunter (optionaler Schritt,...
Ich bin kürzlich auf einen Fehler gestoßen, als i...
Inhaltsverzeichnis Vorwort Persistenz globaler Pa...
Inhaltsverzeichnis 1. Einleitung Zweites Training...
Dataframe ist eine neue API, die in Spark 1.3.0 e...
Horizontale Linie Verwenden Sie das Tag <hr /&...
Die React-Version beim Schreiben dieses Artikels ...
Einführung Nach dem Kompilieren, Installieren und...
In diesem Artikel wird der spezifische Code von V...
Vor einiger Zeit musste das Projekt die Funktion ...