So stellen Sie MySQL 5.7- und 8.0-Master-Slave-Cluster mit Docker bereit

So stellen Sie MySQL 5.7- und 8.0-Master-Slave-Cluster mit Docker bereit

> MySQL 5.7 Cluster Master und Slave bereitstellen (nur zum Testen)

Imageversion 5.7

1. Erstellen Sie ein Overlay-Netzwerk

Docker-Netzwerk erstellen --Treiber-Overlay gemeinsames Netzwerk --attachable

2. Bearbeiten Sie zwei Konfigurationsdateien master.cnf und slave.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

[mysqld]
log-bin=mysql-bin
Server-ID = 1
gtid-Modus=EIN
erzwingen-gtid-Konsistenz=Ein
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

[mysqld]
Server-ID = 2
gtid-Modus=EIN
erzwingen-gtid-Konsistenz=Ein

3. Starten Sie 2 MySQL: mysql-master, mysql-slave

docker run -d \
--name mysql-master \
--network gemeinsames Netzwerk \
-e MYSQL_ROOT_PASSWORD=Passwort \
-v `pwd`/master.cnf:/etc/mysql/my.cnf \
-p 3306:3306 \
-d mysql:5.7
docker run -d \
--name mysql-slave \
--network gemeinsames Netzwerk \
-e MYSQL_ROOT_PASSWORD=Passwort \
-v `pwd`/slave.cnf:/etc/mysql/my.cnf \
-p 3307:3306 \
-d mysql:5.7

4. Benutzer aus der Bibliothek zur Replikation hinzufügen

docker run -it --rm --network gemeinsames Netzwerk mysql mysql -hmysql-master -uroot -pPassw0rd \
-e "ERSTELLEN SIE BENUTZER 'repl'@'%' IDENTIFIZIERT DURCH 'password', ERFORDERT SSL; " \
-e "GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';"

5. Master und Slave verbinden

docker run -it --rm --network gemeinsames Netzwerk mysql mysql -hmysql-slave -uroot -pPassw0rd \
-e "CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1, MASTER_SSL=1;" \
-e "SLAVE STARTEN;"

6. Überprüfen Sie den Slave-Status

docker run -it --rm --network gemeinsames Netzwerk mysql mysql -hmysql-slave -uroot -pPassw0rd -e "Slave-Status anzeigen\G"

Der folgende Status ist normal:

Slave_IO_Running: Ja

Slave_SQL_Running: Ja

> MySQL 8.0 Cluster Master und Slave bereitstellen (nur zum Testen)

Spiegelversion mysql:8.0

1. Erstellen Sie ein Overlay-Netzwerk

Docker-Netzwerk erstellen --Treiber-Overlay gemeinsames Netzwerk --attachable

2. Starten Sie 2 MySQL: mysql-master, mysql-slave

docker run -d \
--name mysql-master \
--network gemeinsames Netzwerk \
-e MYSQL_ROOT_PASSWORD=Passwort \
-p 3306:3306 \
-d mysql --default-authentication-plugin=mysql_native_password
docker run -d \
--name mysql-slave \
--network gemeinsames Netzwerk \
-e MYSQL_ROOT_PASSWORD=Passwort \
-p 3307:3306 \
-d mysql --default-authentication-plugin=mysql_native_password

3. Master und Slave konfigurieren

docker run -it --rm --network gemeinsames Netzwerk mysql mysql -hmysql-master -uroot -pPassw0rd \
-e "SET PERSIST server_id=1;" \
-e "SETZEN SIE PERSIST_ONLY gtid_mode=ON;" \
-e "SET PERSIST_ONLY enforce_gtid_consistency=true; " \
-e "ERSTELLEN SIE BENUTZER 'repl'@'%' IDENTIFIZIERT DURCH 'password', ERFORDERT SSL; " \
-e "GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';"
docker run -it --rm --network gemeinsames Netzwerk mysql mysql -hmysql-slave -uroot -pPassw0rd \
-e "SET PERSIST server_id=2;" \
-e "SETZEN SIE PERSIST_ONLY gtid_mode=ON;" \
-e "SETZEN SIE PERSIST_ONLY enforce_gtid_consistency=true; "

4. Master und Slave neu starten

Docker startet MySQL-Master MySQL-Slave neu

5. Master und Slave verbinden

docker run -it --rm --network gemeinsames Netzwerk mysql mysql -hmysql-slave -uroot -pPassw0rd \
-e "CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1, MASTER_SSL=1;" \
-e "SLAVE STARTEN;"

6. Überprüfen Sie den Slave-Status

docker run -it --rm --network gemeinsames Netzwerk mysql mysql -hmysql-slave -uroot -pPassw0rd -e "Slave-Status anzeigen\G"

Der folgende Status ist normal:

Slave_IO_Running: Ja

Slave_SQL_Running: Ja

> Datensynchronisation überprüfen

Erstellen Sie eine Anoyi-Datenbank auf dem Master

docker run -it --rm --network gemeinsames Netzwerk mysql mysql -hmysql-master -uroot -pPassw0rd \
 -e "Datenbank erstellen, Anoyi-Standardzeichensatz utf8mb4, utf8mb4_general_ci sortieren;"

Anzeigen der Datenbankliste auf dem Slave

docker run -it --rm --network gemeinsames Netzwerk mysql mysql -hmysql-slave -uroot -pPassw0rd \
 -e "Datenbanken anzeigen;"
mysql: [Warnung] Die Verwendung eines Passworts in der Befehlszeilenschnittstelle kann unsicher sein.
+--------------------+
| Datenbank |
+--------------------+
|anoyi |
| Informationsschema |
|mysql |
| Leistungsschema |
|System|
+--------------------+

Zugehörige Informationen:

MySQL 5.7: https://dev.mysql.com/doc/refman/5.7/en/replication.html
MySQL 8.0: https://dev.mysql.com/doc/refman/8.0/en/replication.html

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So erstellen Sie einen MySQL PXC-Cluster
  • Bereitstellung eines MySQL-Hochverfügbarkeitsclusters und Implementierung eines Failovers
  • MySQL 5.7-Clusterkonfigurationsschritte
  • Implementierung der Docker-Bereitstellung eines MySQL-Clusters
  • Detaillierte Schritte zur Installation von MySQL mit Cluster-RPM
  • Detaillierte Erläuterung des MySQL-Clusters: Implementierung einer Master- und einer Slave-Architektur
  • Detaillierte Erläuterung der Galera-Cluster-Bereitstellung im Clustermodus von MySQL
  • Beispiel zum Erstellen eines MySQL-Clusters mit Docker
  • Tutorial zur grundlegenden Bereitstellung von MySQL Cluster
  • So erstellen Sie einen MySQL-Cluster mit hoher Verfügbarkeit und Leistung

<<:  Detaillierte Erklärung der JavaScript-Datentypen

>>:  Das einfachste Tutorial zur Sicherung und Wiederherstellung von MySQL-Daten aller Zeiten (Teil 2) (Teil 36)

Artikel empfehlen

Vue.js implementiert eine einfache Timerfunktion

In diesem Artikelbeispiel wird der spezifische Co...

JavaScript zum Erzielen von Feuerwerkseffekten (objektorientiert)

In diesem Artikel wird der spezifische Code für J...

So installieren Sie Nginx und konfigurieren mehrere Domänennamen

Nginx-Installation CentOS 6.x yum verfügt standar...

Lösung für das Problem des achtstündigen Unterschieds bei der MySQL-Einfügezeit

Lösen Sie das Problem des achtstündigen Zeitunter...

So zeigen Sie Bilder im TIF-Format im Browser an

Der Browser zeigt Bilder im TIF-Format an Code kop...

Erklärung zur Verwendung von JavaScript ECharts

Ich habe ECharts schon einmal bei einem Projekt v...

So aktivieren Sie die MySQL-Remoteverbindung

Aus Sicherheitsgründen erlaubt MySql-Server nur d...

Detaillierte Schritte zur Installation von Mysql5.7.19 mit yum auf Centos7

In der Yum-Quelle von Centos7 ist standardmäßig k...

Mycli ist ein unverzichtbares Tool für MySQL-Befehlszeilen-Enthusiasten

mycli MyCLI ist eine Befehlszeilenschnittstelle f...

Installations- und Verwendungsschritte für Docker Compose

Inhaltsverzeichnis 1. Was ist Docker Compose? 2. ...