Derselbe Server simuliert die Master-Slave-Synchronisierungseinstellung von MySQL mithilfe von Docker. 1. Führen Sie zwei Mysql aus: masterMysql (Master-Datenbank) und slaveMysql (Slave-Datenbank), Datenbankversion 5.7. #Ziehen Sie das Bild docker pull mysql:5.7 #yFühren Sie die Master- und Slave-Container ausdocker run -p 13306:3306 --name slavemysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 docker run -p 13307:3306 --name mastermysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 Nachdem der Lauf abgeschlossen ist, können Sie versuchen, eine Verbindung herzustellen. Beachten Sie, dass die dem Host zugeordneten Service-Ports 13306 bzw. 13307 sind. Bei externen Verbindungen müssen Sie sicherstellen, dass die Firewall- und Gateway-Einstellungen geöffnet sind. 2. Überprüfen Sie die vom Container verwendete IP-Adresse (die Master- und Slave-Konfigurationen erfordern die Verwendung von IP-Adressen im selben Intranet). #IP-Adresse der Hauptdatenbank anzeigen Docker-Inspektion --format='{{.NetworkSettings.IPAddress}}' MasterMySQL #172.18.0.2 3. Konfigurieren Sie die Master-Slave-Bibliothek. (1) Rufen Sie die Hauptdatenbank auf docker exec -it masterMysql bash #masterMysql ist der Name des laufenden Containers. (2) Konfigurieren Sie die Konfigurationsdatei cd /etc/mysql&&ls Sie können sehen, dass mehrere *.cnf-Dateien vorhanden sind, einschließlich derer in den Ordnern conf.d und mysql.conf.d. Dies hat eine Ladereihenfolge und die Konfiguration hier wird vollständig in my.cnf durchgeführt. (3) Einrichten der Konfigurationsdatei Methode 1: Normalerweise gehen Sie wie folgt vor, um den Ordner aufzurufen und zu bearbeiten: vim ./meine.cnf Aber hier erhalten Sie eine Fehlermeldung: bash: vi: Befehl nicht gefunden Installieren Sie zuerst vi apt-get-Aktualisierung #Führen Sie nach Erfolg apt-get install vim aus Methode 2 (empfohlen): Außerhalb des Containers bearbeiten und in den Container kopieren. Dies ist eine Methode zum direkten Überschreiben. Kopieren Sie den Host in den Container. Syntax: docker cp [Hostadresse] [Container-ID oder Containername]:[Containerdateiadresse] docker cp /home/mysql/my.cnf mysql:/etc/mysql/my.cnf (4) Öffnen Sie die Binlog-Konfiguration. Dieselbe Konfiguration: Geben Sie die Master- und Slave-Bibliotheken ein, um die my.cnf-Konfigurationsdateien einzurichten. Beachten Sie, dass die Server-ID unterschiedlich sein muss. Zeichensatzserver = utf8 init_connect='Namen festlegen utf8' #Diese beiden dienen zum Festlegen des UTF-8-Zeichenformats. Die beiden Hosts haben dieselbe Konfiguration. ## Achten Sie darauf, dass sie innerhalb desselben LAN eindeutig sind (wenn es eine bidirektionale Master- und Slave-Datenbank gibt, verlassen Sie sich darauf, um die SQL-Anweisungen zu unterscheiden, die Binlog ausführen). #Du kannst die letzte IP nehmen. Die Masterdatenbank ist 2 und die Slavedatenbank ist 3. Server-ID = 2 ## Binärprotokollfunktion aktivieren, Sie können jedes Protokoll (jeden Schlüssel) nehmen #Demonstrationseinstellung: Die Master-Bibliothek ist auf Master-Bin und die Slave-Bibliothek auf Slave-Bin eingestellt log-bin=master-bin log_bin_index = master-bin.index Die verschiedenen Konfigurationen sind: Hauptbibliothek: #Hier sind die konfigurierbaren Inhalte. Aus Testgründen werden diese zunächst auskommentiert. #Die mit dem Slave zu synchronisierende Bibliothek (wenn nicht geschrieben, werden alle standardmäßig synchronisiert) #binlog-do-db=test #Synchronisieren Sie die Bibliothek nicht mit dem Slave (schreiben Sie mehrere Zeilen für mehrere) #binlog-ignore-db=mysql #Legen Sie die replizierte Datenbank fest #binlog-ignore-db=information_schema #So legen Sie fest, dass die replizierte Datenbank ignoriert wird #Protokolldateien von vor 15 Tagen automatisch bereinigen expire_logs_days=15 #binlog_format=row #Legen Sie das SQL für die tatsächliche, im Binlog aufgezeichnete Operation fest. #max_binlog_size=100m #Dateigröße festlegen#replicate_do_table=test #Zu replizierende Datentabelle#replicate_ignore_table=igoreTest #Zu replizierende Datentabelle ignorieren#replicate_wild_ignore_db=test #Gleich wie Replicate_Do_DB, kann Platzhalter enthalten#replicate_wild_ignore_db=igoreTest #Gleich wie Replicate_Ignore_DB, kann Platzhalter enthalten Aus der Bibliothek: #Eingestellt, um Master-Slave-Replikationsfehler zu vermeiden, die durch unzeitgemäße Aktualisierungen oder Neustarts verursacht werden. schreibgeschützt = 1 master_info_repository=TABELLE relay_log_info_repository=TABELLE Relay-Log = Slave-Relay-Bin #Protokollspeicher der Hauptbibliothek. Relais-Log-Index = Slave-Relay-Bin.Index Die Konfiguration wird nach dem Neustart des Containers wirksam. Docker Neustart MasterMysql Docker startet SlaveMysql neu Zeigen Sie die Protokolle des Containers an: Docker-Protokolle MasterMySQL Wenn der Neustart fehlschlägt, können Sie mit dieser Operation prüfen, ob ein Fehler in der Konfigurationsdatei vorliegt. Verwenden Sie (3) Methode 2, um die Konfigurationsdatei zu ändern und anschließend den Container zu starten. (5) Überprüfen Sie, ob die Binlog-Konfiguration des Containers erfolgreich ist. #Geben Sie den Container ein docker exec -it masterMysql bash #Geben Sie MySQL ein mysql -uroot -p123456 #Überprüfen Sie den Binlog-Status. Variablen wie „%log_bin%“ anzeigen; #Sie können sehen, dass log_bin aktiviert ist und bin_log sich in /var/lib/mysql/master-bin befindet  (6) Überprüfen Sie den Binlog-Status des Matser-Knotens der Hauptdatenbank und erhalten Sie hier den Positions-Wert der Konfiguration. Masterstatus anzeigen; Wenn das zuvor aktivierte Binlog nicht verwendet wird, müssen Sie ein neues generieren oder es zurücksetzen und löschen. #Generieren Sie neue Binlog-Protokolldateien, um Protokolle zu leeren; #Zurücksetzen und Löschen der Binlog-Protokolldatei – Master zurücksetzen; Die hier angezeigte Protokollkonfigurationsdatei lautet: master-bin.000001 und die Position ist 334. 4. Richten Sie in der Masterdatenbank ein Konto ein, um Daten mit der Slavedatenbank zu synchronisieren. Das Konto hier ist slaveMysql. ERSTELLEN SIE BENUTZER 'slaveMysql'@'%' IDENTIFIZIERT DURCH '123456'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slaveMysql'@'%'; 5. Melden Sie sich bei Mysql der Slave-Datenbank an und führen Sie es aus. Es wird empfohlen, eine Verbindung zu Navicat herzustellen, um es auszuführen und anzuzeigen. Das auf dem Server angezeigte Format ist sehr chaotisch. (1) Führen Sie eine Synchronisierung der Masterdatenbankkonfiguration durch. Beachten Sie, dass dies das Endsymbol ist. Ändern Sie den Master in master_host='172.18.0.2'. master_user='slaveMysql', Master-Passwort = '123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 334, master_connect_retry=30; Parameterdetails: Ändern Sie den Master in Master_Host=${vom Container verwendete IP}. Dieser muss sich im selben LAN befinden, das in Schritt 2 ermittelt wurde. master_port Die Portnummer des Masters bezieht sich auf die Portnummer der laufenden Datenbank des Containers und nicht auf die dem Host zugeordnete Portnummer, die im ersten Schritt ermittelt wurde. master_user legt das für die Synchronisierung verwendete Konto fest. master_password in der 4. Spalte legt das für die Synchronisierung verwendete Kontokennwort fest. master_log_file in der 4. Spalte gibt an, aus welcher Konfigurationsdatei der Masterdatenbank das Binlog-Protokoll gelesen werden soll. master_log_pos in der 3. (6. Spalte) gibt die Position an, ab der mit dem Lesen begonnen werden soll, also den Wert des oben erwähnten Felds Position. master_connect_retry in der 3. (6. Spalte) gibt das Wiederholungsintervall in Sekunden an, wenn die Verbindung fehlschlägt. Der Standardwert beträgt 60 Sekunden. (2) Öffnen Sie die Konfiguration der Slave-Bibliothek. Slave starten; #Stopp, Sklave. #Sklave stoppen; (3) Überprüfen Sie den Status der Master-Slave-Synchronisierung. Überprüfen Sie den Status der Master-Slave-Synchronisierung. Slave-Status anzeigen; (4) Überprüfen Sie, ob Fehler vorliegen. Sie können den Verbindungsfehler anzeigen, indem Sie Last_Io_Error anzeigen. Überprüfen Sie die folgenden möglichen Fehler. 1> Das Netzwerk ist nicht verbunden, der Port und die LAN-IP sind nicht verbunden. 2> Das für die Synchronisierung verwendete Kontokennwort ist normal. 3> Der Binlog-Dateiname und die POS-Position des Masters sind falsch. 6. Testen Sie, ob Master und Slave normal sind. Die Master-Datenbank erstellt eine Datenbank und prüft, ob die Slave-Datenbank ebenfalls synchron erfolgreich erstellt wurde. Das war’s. Dies ist das Ende dieses Artikels über das Ausführen von MySQL in einer Docker-Umgebung und das Aktivieren von Binlog zum Konfigurieren der Master-Slave-Synchronisierung. Weitere Informationen zur Master-Slave-Synchronisierung von Docker Binlog MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Einführung in die Verwendung mehrerer spezieller Attribut-Tags in HTML
>>: Detaillierter Code zum Hinzufügen von Electron zum Vue-Projekt
Dieser Artikel stellt verschiedene Methoden zur I...
In diesem Artikelbeispiel wird der spezifische Co...
Das Temperament einer Web-Frontend-Website ist ein...
Negative Distanz bezieht sich auf Empathie. Vorwo...
In diesem Artikelbeispiel wird der spezifische Co...
Vorwort Der Ubuntu-Server des Unternehmens platzi...
TRUNCATE-TABELLE Löscht alle Zeilen in einer Tabe...
Um den Zeilenabstand von <p></p> festz...
In diesem Artikel wird der spezifische Code für J...
Wir hoffen, dass wir durch die Einbindung der Wet...
1. Docker Compose Übersicht Compose ist ein Tool ...
Inhaltsverzeichnis 1. Grundtypen 2. Objekttyp 2.1...
Inhaltsverzeichnis Vorwort 1. Vorbereitung 2. Ins...
Inhaltsverzeichnis 1. classList-Attribut 2. Prakt...
Was ist k3d? k3d ist ein kleines Programm zum Aus...