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

Erste Schritte Tutorial für Anfänger⑧: Einfaches Erstellen einer Artikel-Site

In meinem letzten Beitrag habe ich darüber gesproc...

Detaillierte Erklärung der Anzeigeeigenschaft im CSS-Beschriftungsmodus

Der Code sieht folgendermaßen aus: <!DOCTYPE h...

Analyse mehrerer Gründe, warum Iframe weniger verwendet werden sollte

Die folgende Grafik zeigt, wie zeitaufwändig es is...

Detaillierte Erklärung zum Anzeigen der MySQL-Speichernutzung

Vorwort Dieser Artikel stellt hauptsächlich die r...

Benutzerdefinierte optionale Zeitkalenderkomponente von Vue

In diesem Artikelbeispiel wird der spezifische Co...

MySQL verwendet UNIQUE, um das Einfügen nicht doppelter Daten zu implementieren

SQL UNIQUE-Einschränkung Die UNIQUE-Einschränkung...

Lösung für das zu langsame Herunterladen des Docker-Images

Der Download des Docker-Images hängt oder ist zu ...

Installieren Sie Zookeeper unter Docker (Standalone und Cluster).

Nachdem wir Docker gestartet haben, schauen wir u...

Erläuterung synthetischer React-Ereignisse

Inhaltsverzeichnis Klicken Sie zunächst auf das E...

Shell-Skript Nginx-Automatisierungsskript

Dieses Skript kann die Vorgänge zum Starten, Stop...