Docker-Bereitstellung MySQL8-Cluster (ein Master und zwei Slaves) Implementierungsschritte

Docker-Bereitstellung MySQL8-Cluster (ein Master und zwei Slaves) Implementierungsschritte

1. Installieren Sie Docker auf CentOS 7.9 20

1. Installieren Sie das Tool yum-utils

yum install -y yum-utils

2. Docker-Abhängigkeitsquellen einrichten

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Hinweis: Die von CentOS direkt mit dem Befehl yum installierte Docker-Version ist 1.13.1. Dies ist die letzte Version der alten Docker-Version. Sie müssen daher ein Repo konfigurieren, um die neue Version von Docker-CE (Community Edition) zu installieren. Docker-EE (Enterprise Edition) ist kostenpflichtig und die Leser können es selbst verstehen. Hier verwenden wir die CE Community Edition

3. Docker installieren

yum -y installiere Docker-CE

4. Überprüfen Sie die installierte Version

Docker -v
Docker-Version 

bild.png

5. Überprüfen Sie die Version der unterstützenden Einstellungen

Yum-Liste installiert | Grep Docker 

bild.png

6. Ziehen Sie das MySQL8-Image

Docker-Pull MySQL:8

Hinweis: mysql:5.7 bedeutet, dass die MySQL-Version 5.7 ist.

Docker-Images anzeigen

Docker-Bilder 

bild.png

2. MySQL-Cluster bereitstellen (ein Master und zwei Slaves)

1. Erstellen Sie das Master-Slave-MySQL-Konfigurations- und Datendateispeicherverzeichnis

# Erstellen Sie das Konfigurationsverzeichnis und das Datenverzeichnis des Master-Dienstes mkdir -p /usr/local/mysqlData/master/cnf
mkdir -p /usr/local/mysqlData/master/data

# Erstellen Sie das Konfigurationsverzeichnis und das Datenverzeichnis des Slave-Servers 1 mkdir -p /usr/local/mysqlData/slave/cnf
mkdir -p /usr/local/mysqlData/slave/data

# Erstellen Sie das Konfigurationsverzeichnis und das Datenverzeichnis des Slave-Servers 2 mkdir -p /usr/local/mysqlData/slave2/cnf
mkdir -p /usr/local/mysqlData/slave2/data

Der Grund für die Erstellung von zwei Slave-Serverkonfigurationen besteht darin, dass die in MySQL konfigurierte Server-ID nicht wiederholt werden kann.

bild.png

2. Konfigurieren Sie die Konfigurationsdatei des Hauptservers

vim /usr/local/mysqlData/master/cnf/mysql.cnf

Die Konfigurationsdatei lautet wie folgt

[mysqld]
## Legen Sie die Server-ID fest. Beachten Sie, dass sie eindeutig sein muss: Server-ID=1
## Binlog aktivieren
log-bin=mysql-bin
## Binlog-Cache binlog_cache_size=1M
## Binlog-Format (gemischt, Anweisung, Zeile, das Standardformat ist Anweisung)
binlog_format=gemischt
##Zeichenkodierung auf utf8mb4 einstellen
Zeichensatzserver = utf8mb4
Sortierserver = utf8mb4_unicode_ci
init_connect = "Namen festlegen utf8mb4"
[Kunde]
Standardzeichensatz = utf8mb4
[mysql]
Standardzeichensatz = utf8mb4

3. Konfigurieren Sie die Konfigurationsdatei vom Server

# Nr. 1 Slave-Server vim /usr/local/mysqlData/slave/cnf/mysql.cnf
# Nr. 2 Slave-Server vim /usr/local/mysqlData/slave2/cnf/mysql.cnf

Die Konfigurationsdateien lauten wie folgt (Server-ID von Nr. 1 ist auf 2 eingestellt, Server-ID von Nr. 2 ist auf 3 eingestellt, eine Duplizierung ist nicht erforderlich)

[mysqld]
## Legen Sie die Server-ID fest. Beachten Sie, dass sie eindeutig sein muss: Server-ID=2
## Binlog aktivieren
log-bin=mysql-slave-bin
## relay_log-Konfigurations-Relay-Protokoll relay_log=edu-mysql-relay-bin
## Wenn Sie Funktionen oder gespeicherte Prozeduren synchronisieren müssen log_bin_trust_function_creators=true
## Binlog-Cache binlog_cache_size=1M
## Binlog-Format (gemischt, Anweisung, Zeile, das Standardformat ist Anweisung)
binlog_format=gemischt
##Zeichenkodierung auf utf8mb4 einstellen
Zeichensatzserver = utf8mb4
Sortierserver = utf8mb4_unicode_ci
init_connect = "Namen festlegen utf8mb4"
Slave_Überspringen_Fehler=1062
[Kunde]
Standardzeichensatz = utf8mb4
[mysql]
Standardzeichensatz = utf8mb4

4. Erstellen Sie einen Master-Slave-MySQL-Spiegel

# Instanziierung des Masterservers docker run -itd -p 3307:3306 --name master -v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8 

# Slave-Server 1 instanziieren docker run -itd -p 3308:3306 --name slaver -v /usr/local/mysqlData/slave/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8 

# Slave-Server 2 instanziieren docker run -itd -p 3309:3306 --name slaver2 -v /usr/local/mysqlData/slave2/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/slave2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8

Parameter Erklärung

-p gibt den vom Container freigegebenen Port an, Host-Port (physische Maschine): Port der Docker-Instanz
-p 3307:3306 ordnet den Port 3307 der physischen Maschine dem Port 3306 der Instanz zu

-v hängt das Speichervolumen an den Container an und hängt es in ein Verzeichnis im Container ein.
-v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d ordnet den neu erstellten Konfigurationsordner der Datei /etc/mysql/conf.d der Instanz zu.
-v /usr/local/mysqlData/master/data:/var/lib/mysql Datenordnerzuordnung

-e gibt Umgebungsvariablen an, die im Container verwendet werden können
-e MYSQL_ROOT_PASSWORD=123456 Setzt das Passwort für das MySQL-Root-Konto auf 123456

5. Zeigen Sie die erstellte Instanz an

Docker ps -a 

bild.png

6. Erstellen Sie einen MySQL-Verbindungsbenutzer

# Benutzer „Reader“ erstellen und Passwort für den Reader festlegen
ERSTELLEN SIE EINEN BENUTZERLESER, DER DURCH „Leser“ IDENTIFIZIERT IST.
# Gewähren Sie dem Leser Synchronisierungsberechtigungen. GRANT REPLICATION SLAVE ON *.* an „Leser“@„%“;
FLUSH-PRIVILEGIEN;

Hinweis: Für andere Benutzer werden die Remote-Verbindungseinstellungen selbst konfiguriert

7. Holen Sie sich die Verbindungsinformationen des Hauptservers

#MySQL-Verbindungsinformationen SHOW MASTER STATUS;

#Öffnen Sie eine neue Verbindung, um die Adresse der Masterinstanz in Docker Inspection --format='{{.NetworkSettings.IPAddress}}' Master abzurufen.

bild.png

Der Slave-Server stellt eine Verbindung zum Master-Server her (beide Slave-Server führen die folgenden Vorgänge aus)

# Konfigurieren Sie die Verbindungsparameter und ändern Sie „Master“ in „master_host='172.17.0.2',master_user='reader',master_password='reader',master_log_file='mysql-bin.000003',master_log_pos=2259;
# Synchronisierung starten, Slave starten;
# Überprüfen Sie, ob die Show Slave Status\G erfolgreich war

# Wenn beide Ja sind, bedeutet dies Erfolg.
# Slave_IO_Running: Ja
# Slave_SQL_Running: Ja

# Wenn dies fehlschlägt, müssen Sie die Verbindung beenden und andere Kontokennwörter, Adressen, POS und andere Parameter überprüfen. # Beenden Sie die Verbindung. Wenn dies einmal erfolgreich ist, müssen Sie den Befehl „Stop Slave“ nicht verwenden.

bild.png

3. Ergebnisse

Der Hauptserver führt den Befehl aus

SLAVE-HOSTS ANZEIGEN; 

bild.png

Die IDs und Ports der beiden Slave-Server können vom Master-Server abgefragt werden. Schließen Sie die MySQL-Bereitstellung ab.

Damit ist dieser Artikel über die Implementierungsschritte der Docker-Bereitstellung eines MySQL8-Clusters (ein Master und zwei Slaves) abgeschlossen. Weitere relevante Inhalte zur Docker-Bereitstellung eines MySQL8-Clusters 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:
  • Stellen Sie das .Net6-Projekt im Docker bereit
  • Detaillierte Schritte zum Bereitstellen von Microsoft SQL Server mit Docker
  • Detaillierter Prozess zur Bereitstellung von MySQL mit Docker (allgemeine Anwendungen, die mit Docker bereitgestellt werden)
  • Prozessanalyse der Bereitstellung von ASP.NET Core-Anwendungen auf dem Linux-System Docker
  • Beispiel für die Bereitstellung von MySQL auf Docker
  • Stellen Sie Asp.Net Core (.Net6) in Docker unter Linux CentOS bereit
  • Vollständige Schritte zum Bereitstellen von Asp.net-Kernanwendungen mit Docker
  • Docker stellt Mysql, .Net6, Sqlserver und andere Container bereit

<<:  So starten Sie eine Transaktion in MySQL

>>:  Einführung in 10 Online-Entwicklungstools für Webdesign

Artikel empfehlen

Detaillierte Erklärung der Stile in uni-app

Inhaltsverzeichnis Stile in uni-app Zusammenfasse...

Hinweise zur Verwendung der verknüpften Liste des Linux-Kernel-Gerätetreibers

/******************** * Anwendung von verknüpften...

So rufen Sie einen HTML-Code auf mehreren HTML-Seiten gemeinsam auf

Methode 1: Skriptmethode verwenden: Erstellen Sie...

CSS zur Implementierung von Sprites und Schriftsymbolen

Sprites: In der Vergangenheit war jede Bildressou...

Beheben Sie den abnormalen Fehler beim Erstellen einer Vue-Umgebung mit Webpack

Inhaltsverzeichnis Konfigurieren Sie zuerst packa...

Details zur React Routing Link-Konfiguration

1. Link zum Attribut (1) Platzieren Sie den Routi...

So aktualisieren Sie alle Python-Bibliotheken in Ubuntu 18.04 auf einmal

Was ist Pip pip ist ein Python-Paketverwaltungsto...

React implementiert eine hochadaptive virtuelle Liste

Inhaltsverzeichnis Vor der Transformation: Nach d...

So autorisieren Sie Remoteverbindungen in MySQL unter Linux

Hinweis: Andere Maschinen (IP) können ohne Autori...

Detaillierte Erklärung der Tomcat-Verzeichnisstruktur

Inhaltsverzeichnis Verzeichnisstruktur bin-Verzei...

Verwendung der hasOwnProperty-Methode des js-Attributobjekts

Die Methode hasOwnProperty() des Objekts gibt ein...

Spezifische Verwendung des Ausnahmefilters Exceptionfilter in nestjs

Wenn wir über den Ausnahmefilter von Nestjs sprec...