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
Nehmen Sie als Beispiel die Installation von MySQ...
Ich habe zufällig festgestellt, dass Vue.$set im ...
Inhaltsverzeichnis Zyklus für für-in für-von währ...
Inhaltsverzeichnis 1. So erstellen Sie ein Array ...
Anforderung: Die Seite muss ein Bild anzeigen, ab...
Vorwort Abfrageoptimierung ist nichts, was über N...
1. Download von der offiziellen Website: https://...
Inhaltsverzeichnis 1. Einleitung 2. On-Demand-Att...
Nach der erfolgreichen Installation von CentOS 7 ...
Vorwort Vor Kurzem habe ich die native Seite eine...
In diesem Artikelbeispiel wird der spezifische JS...
Wenn Sie das Idea-Entwicklungstool zum Debuggen v...
docker-compose.yml Version: '2' Leistunge...
Bei der Verwendung von jquery-multiselect (einem ...
Problembeschreibung Vor kurzem gab es einen MySQL...