1. Übersicht1. Grundsatz
Master-Slave-Flussdiagramm 2. UmsetzungMaster-Bibliothek: 192.168.3.13:3310 Slave-Bibliothek: 192.168.3.14:3310 2. Erstellen Sie die Master-Master-Bibliothek Geben Sie den Server 192.168.3.13 ein 1. Installieren Sie das Image docker pull mysql:8.0.26 2. Neues Verzeichnis erstellen mkdir -p /home/apps/mysql-master/{config,log,data} 3. Erstellen und starten docker run -d --name mysql-master \ --restart=immer \ --privilegiert=true \ -p 3310:3306 \ -v /home/apps/mysql-master/config:/etc/mysql/conf.d \ -v /home/apps/mysql-master/log:/var/log/mysql \ -v /home/apps/mysql-master/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql:8.0.26 4. Master-Basiskonfiguration hinzufügen/ändern vim /home/apps/mysql-master/config/my.cnf Fügen Sie den folgenden Inhalt hinzu [Kunde] Standardzeichensatz = utf8 [mysql] Standardzeichensatz = utf8 [mysqld] init_connect = 'SET-Sortierung_Verbindung = utf8_unicode_ci' init_connect='Namen festlegen utf8' Zeichensatzserver = utf8 Sortierserver = utf8_unicode_ci Zeichensatz-Client-Handshake überspringen Namensauflösung überspringen 3. Erstellen Sie eine Slave-InstanzGeben Sie den Server 192.168.3.14 ein 1. Gleiche wie oben beschrieben # Verzeichnis erstellen mkdir -p /home/apps/mysql-slave-01/{config,log,data} # Starten Sie den Container docker run -d --name mysql-slave-01 \ --restart=immer \ --privilegiert=true \ -p 3310:3306 \ -v /home/apps/mysql-slave-01/config:/etc/mysql/conf.d \ -v /home/apps/mysql-slave-01/log:/var/log/mysql \ -v /home/apps/mysql-slave-01/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql:8.0.26 # Ändern Sie die Grundkonfiguration des Slaves vim /home/apps/mysql-slave-01/config/my.cnf # Fügen Sie den folgenden Inhalt hinzu [Client] Standardzeichensatz = utf8 [mysql] Standardzeichensatz = utf8 [mysqld] init_connect = 'SET-Sortierung_Verbindung = utf8_unicode_ci' init_connect='Namen festlegen utf8' Zeichensatzserver = utf8 Sortierserver = utf8_unicode_ci Zeichensatz-Client-Handshake überspringen Namensauflösung überspringen 4. Master-Slave-Konfiguration1. Masterkonfiguration hinzufügen vim /home/apps/mysql-master/config/my.cnf server_id=1 # Binärprotokoll aktivieren log-bin=mysql-bin schreibgeschützt = 0 # Datenbank, die synchronisiert werden muss binlog-do-db=rapid-cloud binlog-do-db=schneller-Cloud-Test # Zu ignorierende Datenbank replicate-ignore-db=mysql replizieren-ignorieren-db=sys replicate-ignore-db=Informationsschema replicate-ignore-db=Leistungsschema 2. Starten Sie den Container neu Docker startet MySQL-Master neu 3. Slave-Konfiguration hinzufügen vim /home/apps/mysql-slave-01/config/my.cnf server_id=2 log-bin=mysql-bin schreibgeschützt=1 binlog-do-db=schnelle-Cloud binlog-do-db=schneller-Cloud-Test replizieren-ignorieren-db=mysql replizieren-ignorieren-db=sys replicate-ignore-db=Informationsschema replicate-ignore-db=Leistungsschema 4. Starten Sie den Container neu Docker startet MySQL-Slave-01 neu 5. Fügen Sie ein Konto hinzu, um Benutzer zu synchronisieren # Geben Sie den Container ein docker exec -it mysql-master /bin/bash # Geben Sie die Haupt-MySQL-Datenbank ein mysql -u root -p # Autorisieren Sie Root für den Remotezugriff (das hat nichts mit Master-Slave zu tun, sondern dient nur dazu, unsere Remoteverbindung zu MySQL zu ermöglichen) # Remote-ALTER-USER 'root'@'%' autorisieren. IDENTIFIED WITH mysql_native_password BY '123456'; # Berechtigungen leeren; # Backup-Benutzer erstellen # Sie sollten zuerst einen neuen Benutzer erstellen. Erstellen Sie den Benutzer „Backup“@„%“, identifiziert durch „123456“; # Führen Sie die Autorisierung aus und erteilen Sie „Backup“@„%“ alle Berechtigungen für *.*. # Berechtigungen leeren; # Remote-ALTER-USER 'backup'@'%' autorisieren. IDENTIFIED WITH mysql_native_password BY '123456'; # Berechtigungen leeren; # Den Status der Masterdatenbank anzeigen „show master status“; 6. Einrichten der Master-Datenbankverbindung in der Slave-Datenbank # Geben Sie den Container ein docker exec -it mysql-slave-01 /bin/bash # Geben Sie die Haupt-MySQL-Datenbank ein mysql -u root -p Ändern Sie Master in master_host='192.168.3.13',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3310; 7. Starten Sie die Slave-Synchronisation Kopieren Sie zunächst die Daten der Master-Datenbank in die Slave-Datenbank, einschließlich der Tabellenstruktur und der Daten Löschen Sie das Binärprotokoll der Hauptbibliothek, sodass seine Position bei 0 beginnt. Master-Protokolle nach „mysql-bin.000001“ löschen; Synchronisierung aktivieren # Synchronisierung starten, Slave starten; # Synchronisierung stoppen. # Slave stoppen; # Überprüfen Sie den Synchronisierungsstatus. Show Slave Status\G; 8. Fehlerbehebung Wenn keine Master-Slave-Synchronisierung möglich ist, können Sie Folgendes überprüfen: Zusammenfassen:Die Master- und Slave-Datenbanken geben in ihren Konfigurationsdateien an, welche Datenbanken synchronisiert werden müssen und welche ignoriert werden sollen. Und die Server-ID darf nicht mit der Master-Datenbank identisch sein, die ein bestimmtes Konto und Passwort zum Synchronisieren ihrer eigenen Daten autorisiert. Die Slave-Datenbank verwendet dieses Konto und Passwort, um sich mit der Master-Datenbank zu verbinden und Daten zu synchronisieren. 5. Referenzhttps://www.cnblogs.com/heian99/p/12104189.html https://blog.csdn.net/lilygg/article/details/98187015 Binlog löschen: https://www.cnblogs.com/kiko2014551511/p/11532426.html Dies ist das Ende dieses Artikels über den Beispielcode zur Implementierung der MySQL-Master-Slave-Replikation in Docker. Weitere verwandte Inhalte zur MySQL-Master-Slave-Replikation finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: 18 Sets exquisiter kostenloser Symbolmaterialien im Apple-Stil zum Teilen
>>: Praktische Erfahrung bei der Optimierung von MySQL-Tabellen mit mehreren zehn Millionen Daten
Ursache Beim Ausführen des Docker-Skripts tritt e...
Der Installationsprozess entfällt (ich habe es di...
Dieser Artikel zeichnet die Installations- und Ko...
Die -9999-Pixel-Bildersetzungstechnologie ist seit...
Zwei Implementierungen der Vue-Dropdown-Liste Die...
Bereitstellen des Projekts in der Testumgebung de...
TOP-Beobachtung: Der Prozentsatz der CPU-Zeit, de...
In diesem Artikel wird der spezifische Code von V...
Inhaltsverzeichnis 1. Implementierungsprozess 2. ...
<Vorlage> <div id="Wurzel">...
#include <asm/io.h> #define ioremap(Cookie,...
In meiner früheren Arbeit war der Entwicklungsser...
Im Gegensatz zu anderen Designarten verändert sich...
Ich habe gerade einen Alibaba Cloud-Host gekauft ...
In MySQL 8.0.18 wurde eine neue Hash-Join-Funktio...