1. Ziehen Sie das MySQL-ImageHolen Sie sich das neueste MySQL-Image über das Terminal
2. Erstellen Sie das Verzeichnis, das der MySQL-Datenbankcontainer-Konfigurationsdatei entsprichtWir erstellen eine Reihe von Verzeichnissen unter dem aktuellen Benutzer, um die MySQL-Containerkonfigurationsdateien zu speichern (unter Linux kann dieser Schritt weggelassen werden). Siehe folgende Abbildung: Hinweis: Für MySQL Version 8 und höher müssen Sie MySQL-Dateien zur Zuordnungsdatei hinzufügen. Andernfalls schlägt die Erstellung des MySQL-Datenbankcontainers fehl. Da MacOS weder die direkte Änderung der Datei my.cnf mit vi/vim noch die Installation von vim mit apt-get unterstützt, müssen Sie lokal zwei neue my.cnf-Zuordnungsdateien erstellen. (Unter Linux können Sie die Konfigurationsdatei direkt über vim ändern.) Die der Masterdatenbank entsprechende my.cnf-Konfigurationsdatei lautet: [mysqld] Server-ID = 1 log-bin=mysql-bin schreibgeschützt = 0 replicate-ignore-db=mysql replizieren-ignorieren-db=sys replicate-ignore-db=Informationsschema replicate-ignore-db=Leistungsschema Die der Slave-Bibliothek entsprechende my.cnf-Konfigurationsdatei lautet: [mysqld] Server-ID = 2 log-bin=mysql-bin schreibgeschützt=1 replizieren-ignorieren-db=mysql replizieren-ignorieren-db=sys replicate-ignore-db=Informationsschema replicate-ignore-db=Leistungsschema 3. Erstellen Sie zwei MySQL-DatenbankcontainerErstellen des Masterdatenbankcontainers
Erstellen eines Slave-Datenbankcontainers
Wie in der folgenden Abbildung gezeigt, wurden zwei MySQL-Container erfolgreich erstellt. An diesem Punkt öffnen wir das Docker-Dashboard und können sehen, dass die beiden Container bereits laufen. Und der Port ist der entsprechende Port, den wir zuvor erstellt haben Wenn wir eine Verbindung über Navicat herstellen, erhalten wir die Fehlermeldung 1130, da das verbundene Benutzerkonto keine Berechtigung für eine Remoteverbindung hat. Sie müssen das Hostelement in der Benutzertabelle in der MySQL-Datenbank ändern Ändern Sie „localhost“ in „%“ Konkrete Schritte: mysql> mysql verwenden Einlesen von Tabelleninformationen zur Vervollständigung von Tabellen- und Spaltennamen Sie können diese Funktion deaktivieren, um einen schnelleren Start mit -A zu erhalten Datenbank geändert mysql> wähle Host vom Benutzer aus, wobei Benutzer='root' ist; +-------------+ | Gastgeber | +-------------+ | lokaler Host | +-------------+ 1 Zeile im Satz (0,01 Sek.) mysql> Benutzer aktualisieren, Host festlegen = "%", wobei Benutzer = "root" ist; Abfrage OK, 1 Zeile betroffen (0,01 Sek.) Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0 mysql> wähle Host vom Benutzer aus, wobei Benutzer='root' ist; +------+ | Gastgeber | +------+ | % | +------+ 1 Zeile im Satz (0,00 Sek.) mysql> Berechtigungen leeren; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) 4. Master-Slave-DatenbankkonfigurationKonfiguration der Master-Datenbank: //Geben Sie den Stammdatencontainer ein docker exec -it mysql-master mysql -uroot -p123456 //Erstellen Sie einen Benutzer zum Synchronisieren von Daten. Jeder Slave verwendet einen standardmäßigen MySQL-Benutzernamen und ein Standardkennwort, um eine Verbindung zum Master herzustellen. Dem Benutzer, der Replikationsvorgänge durchführt, wird das Privileg REPLICATION SLAVE erteilt. Die Verschlüsselungsregel in Versionen vor mysql8 lautet mysql_native_password, und nach mysql8 lautet die Verschlüsselungsregel caching_sha2_password CREATE USER 'slave'@'%' IDENTIFIED BY '123456'; (Dies kann einen Fehler verursachen, wenn der Slave eine Verbindung mit dem Master herstellt) oder CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; //Autorisieren Sie den Benutzer GRANT REPLICATION SLAVE ON *.* für „Slave“@„%“; //Überprüfen Sie den Status und merken Sie sich die Werte von Datei und Position. Show-Master-Status wird im Slave verwendet; //Frage die IP des Master-Containers ab, die verwendet wird, wenn der Slave die Verbindung zur Master-Bibliothek einrichtet docker inspect mysql-master | grep IPA; Status des Masters, Datei mysql-bin.000003 Position 661 Konfiguration der Slave-Slave-Datenbank: //Geben Sie den Slave-Datencontainer ein docker exec -it mysql-slave mysql -uroot -p123456 //Setze den Link zur Master-Bibliothek, ändere den Master auf Ändern Sie Master in master_host='172.17.0.2',master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=661,master_port=3306; //Slave-Synchronisierung starten start slave; //Überprüfen Sie den Status show slave status\G; //Wenn das Ergebnis des Befehls „show slave status\G“ Folgendes anzeigt: //Slave_IO_Running: Ja //Slave_SQL_Running: Ja //Wenn beide der oben genannten Punkte mit „Ja“ beantwortet werden, liegt kein Problem vor. //Andernfalls konfigurieren Sie die Slave-Daten neu. Stop Slave; alle Slaves zurücksetzen; Slave-Synchronisierung erfolgreich gestartet 5. Master-Slave-VerifizierungWir erstellen eine Datenbank auf dem Master, erstellen dann eine Tabelle und fügen ein Datenelement ein, und der entsprechende Slave wird ebenfalls vergrößert. Datenbank Master_Slave_Demo erstellen; verwenden Sie master_slave_demo; Tabelle erstellen userinfo(Benutzername varchar(50),Alter int); in Benutzerinfowerte einfügen („Toulon“, 25); Wählen Sie * aus Benutzerinformationen; Vor der Ausführung des Befehls ist die Anzahl der Master- und Slave-Datenbanken gleich. Nachdem der Master den Befehl ausgeführt hat, fügt der Slave die entsprechenden Daten hinzu Es kann festgestellt werden, dass die neu hinzugefügten Daten in der Hauptdatenbank synchronisiert wurden und die Master-Slave-Replikation von MySQL eingerichtet wurde. (Testumgebung, MacOS M1 ARM64-Maschine, Docker, MySQL 8.0.27) Dies ist das Ende dieses Artikels über die Verwendung von Docker zum Erstellen einer MySQL-Master-Slave-Datenbank unter MacOS. Weitere Informationen zur Verwendung von Docker zum Erstellen einer MySQL-Master-Slave-Datenbank 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:
|
<<: Pygame-Code zum Erstellen eines Schlangenspiels
>>: Herausforderung des HTML-Symbol-zu-Entity-Algorithmus
Inhaltsverzeichnis Einführung Erste Schritte Eine...
Vorwort: Mybatis-Sonderzeichenverarbeitung, Verar...
Ein Zweck Wählen Sie auf der HTML-Seite einen lok...
Deaktivieren Sie SeLinux setenforce 0 Dauerhaft g...
In diesem Artikelbeispiel wird der spezifische Ja...
1. Zweck Schreiben Sie lokal eine Flask-Anwendung...
Bezüglich einiger MySQL-Spezifikationen haben man...
Während des Entwicklungs- und Debugging-Prozesses...
1. Abfragegeschwindigkeit von zwei Abfrage-Engine...
Überblick Binlog2sql ist ein Open-Source-MySQL-Bi...
1. Laden Sie das Installationspaket herunter Das ...
Dieser Artikel erläutert anhand von Beispielen di...
Wenn wir die webpackjs-Datei verpacken, führen wi...
Inhaltsverzeichnis Erster Schritt der Installatio...
Kürzlich schrieb ich in meinem Blog, dass ich fes...