So stellen Sie MySQL-Master und -Slave in Docker bereit

So stellen Sie MySQL-Master und -Slave in Docker bereit

Bild herunterladen

Auswählen eines MySQL-Images

Docker-Suche MySQL 

Bildbeschreibung hier einfügen

MySQL 5.7-Image herunterladen

Docker-Pull MySQL:5.7

MySQL-Bild anzeigen

Docker-Bilder 

Bildbeschreibung hier einfügen

Erstellen Sie einen MySQL Master-Slave

Master

docker run --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

Sklave

docker run --name mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

Die vom Master nach außen zugeordnete Portnummer ist 3307, und die vom Slave nach außen zugeordnete Portnummer ist 3308

Container anzeigen

Docker PS 

Bildbeschreibung hier einfügen

Verbindungstest

Bildbeschreibung hier einfügen
Bildbeschreibung hier einfügen

Konfigurieren des Masters

Sie können den Container auf zwei Arten betreten:

docker exec -it 1b166e12ad6b /bin/bash #1b166e12ad6b ist die Container-ID
docker exec -it mysql-master /bin/bash #mysql-master ist der Containername

Ändern Sie die Konfigurationsdatei /etc/mysql/my.cnf

vim /etc/mysql/my.cnf 

Bildbeschreibung hier einfügen

Der vim-Befehl wurde nicht gefunden. Installieren Sie das vim-Tool im Docker. Geben Sie die folgenden beiden Befehle ein, um vim zu installieren

apt-get-Aktualisierung
apt-get installieren vim

Nachdem die Installation abgeschlossen ist, ändern Sie die Konfigurationsdatei my.cnf

vim /etc/mysql/my.cnf

[mysqld]
## Beachten Sie, dass die Server-ID=100 innerhalb desselben LAN eindeutig sein muss  
## Binärprotokollfunktion aktivieren, Sie können jedes Protokoll (jeden Schlüssel) nehmen
log-bin=master-bin
binlog-format=ROW // Binäres Protokollformat, es gibt drei Typen: Zeile, Anweisung, gemischt

Nach der Konfiguration MySQL neu starten

Dienst MySQL Neustart

Durch einen Neustart wird der Docker-Container gestoppt. Verwenden Sie den folgenden Befehl, um den Container neu zu starten

Docker ps -a 

Bildbeschreibung hier einfügen

Docker startet MySQL-Master

Erstellen eines Datenbanksynchronisierungskontos

Geben Sie den mysql-master-Container ein

docker exec -it 1b166e12ad6b /bin/bash

Melden Sie sich bei MySQL an und autorisieren Sie das Synchronisierungskonto für den Slave-Host

mysql -uroot -p123456

ERSTELLEN SIE BENUTZER 'Slave'@'%' IDENTIFIZIERT DURCH '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* AN 'Slave'@'%'; 

Bildbeschreibung hier einfügen

An diesem Punkt ist die Masterkonfiguration abgeschlossen

Sklave

Verwenden Sie einen dem Master ähnlichen Befehl, um den Container aufzurufen

docker exec -it mysql-slave /bin/bash

Ändern Sie die Konfigurationsdatei my.cnf und denken Sie daran, den Befehl vim zu installieren

vim /etc/mysql/my.cnf

[mysqld]
## Legen Sie die Server-ID fest. Beachten Sie, dass sie eindeutig sein muss: Server-ID=101  
## Binäres Logging aktivieren, falls der Slave als Master anderer Slaves verwendet wird log-bin=mysql-slave-bin   
## relay_log-Konfigurations-Relay-Protokoll relay_log=mysql-relay-bin  
read_only=1 ## Auf schreibgeschützt setzen. Wenn dieser Eintrag nicht gesetzt ist, bedeutet dies, dass der Slave lesen und schreiben kann

Starten Sie MySQL neu

Dienst MySQL Neustart

Starten des Containers

Docker startet MySQL-Slave

Aktivieren Sie die Master-Slave-Replikation

Öffnen Sie zunächst zwei Terminals und geben Sie die Master- und Slave-Container ein. Geben Sie MySQL ein

MySQL-Master-Operationen

mysql -uroot -p123456
Masterstatus anzeigen; 

Bildbeschreibung hier einfügen

MySQL-Slave-Betrieb

Hinweis: Denken Sie daran, master_log_file='', master_log_pos= in die Ergebnisse zu ändern, die Sie auf dem Mastercomputer angezeigt haben

mysql -uroot -p123456

Ändern Sie Master in master_host='10.0.3.2', master_user='slave', master_password='123456', master_port=3307, master_log_file='master-bin.000001', master_log_pos=617;

Slave starten;

Slave-Status anzeigen \G; 

Bildbeschreibung hier einfügen

Testerfolg

MySQL-Master-Operationen

Datenbank Dockertest erstellen; 

Bildbeschreibung hier einfügen

MySQL-Slave-Betrieb

Bildbeschreibung hier einfügen

Die auf dem Master erstellte Datenbank wird auf dem Slave angezeigt und ist damit ein Erfolgsnachweis.

Artikelreferenzlink

Detaillierte Informationen finden Sie unter

Dies ist das Ende dieses Artikels zum Bereitstellen von MySQL mit Docker als Master und Slave. Weitere Informationen zum Bereitstellen von MySQL mit Docker 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:
  • So führen Sie MySQL in einer Docker-Umgebung aus und aktivieren Binlog, um die Master-Slave-Synchronisierung zu konfigurieren
  • Realisieren Sie eine inkrementelle MySQL-Datenübertragung in Echtzeit basierend auf Docker und Canal
  • Beispielcode zur Implementierung der MySQL-Master-Slave-Replikation in Docker
  • Detaillierte Erklärung zum Erstellen einer MySQL-Master-Slave-Umgebung mit Docker
  • Docker öffnet das MySQL-Binlog-Protokoll, um Datenvolumenprobleme zu lösen

<<:  Verwendung und Optimierung der MySQL COUNT-Funktion

>>:  Webdesign-Erfahrung: Das Navigationssystem schlank machen

Artikel empfehlen

Flussdiagramm für den Webserverzugriff auf HTTP und HTTP-Zusammenarbeit

Ein Webserver kann mehrere Websites mit unabhängi...

So legen Sie Remotezugriffsberechtigungen in MySQL 8.0 fest

Im vorherigen Artikel wurde erklärt, wie man das ...

Vue - benutzerdefinierte gekapselte Schaltflächenkomponente

Der benutzerdefinierte Kapselungscode der Vue-But...

Oberflächliches Webdesign

<br />Ich war schon immer der Meinung, dass ...

So beheben Sie das Eingabe-Jitter-Problem beim WeChat-Applet

Finden Sie das Problem Schauen wir uns zunächst d...

Linux-Grundlagen-Tutorial: Sonderberechtigungen SUID, SGID und SBIT

Vorwort Für Datei- oder Verzeichnisberechtigungen...

CSS-Implementierungscode für die Textausrichtung

Beim Erstellen von Formularen kommt es häufig vor...

Forschung zur Größe von Webseiten

<br />Statistiken zufolge hat sich die durch...

So verwenden Sie weniger im WeChat-Applet (optimale Methode)

Vorwort Ich bin es gewohnt, Less/Sass zu schreibe...

Implementierung des HTML-Gleit- und Schwebeball-Menüeffekts

CSS-Stile html,Text{ Breite: 100 %; Höhe: 100%; R...

Natives JS zur Realisierung eines springenden Balls

Aus einer Laune heraus habe ich eine Fallstudie ü...