So führen Sie MySQL in einer Docker-Umgebung aus und aktivieren Binlog, um die Master-Slave-Synchronisierung zu konfigurieren

So führen Sie MySQL in einer Docker-Umgebung aus und aktivieren Binlog, um die Master-Slave-Synchronisierung zu konfigurieren

Derselbe Server simuliert die Master-Slave-Synchronisierungseinstellung von MySQL mithilfe von Docker.

1. Führen Sie zwei Mysql aus: masterMysql (Master-Datenbank) und slaveMysql (Slave-Datenbank), Datenbankversion 5.7.

#Ziehen Sie das Bild docker pull mysql:5.7
#yFühren Sie die Master- und Slave-Container ausdocker run -p 13306:3306 --name slavemysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -p 13307:3306 --name mastermysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

Nachdem der Lauf abgeschlossen ist, können Sie versuchen, eine Verbindung herzustellen. Beachten Sie, dass die dem Host zugeordneten Service-Ports 13306 bzw. 13307 sind. Bei externen Verbindungen müssen Sie sicherstellen, dass die Firewall- und Gateway-Einstellungen geöffnet sind.

2. Überprüfen Sie die vom Container verwendete IP-Adresse (die Master- und Slave-Konfigurationen erfordern die Verwendung von IP-Adressen im selben Intranet).

#IP-Adresse der Hauptdatenbank anzeigen
Docker-Inspektion --format='{{.NetworkSettings.IPAddress}}' MasterMySQL
#172.18.0.2

3. Konfigurieren Sie die Master-Slave-Bibliothek.

(1) Rufen Sie die Hauptdatenbank auf

docker exec -it masterMysql bash #masterMysql ist der Name des laufenden Containers.

(2) Konfigurieren Sie die Konfigurationsdatei

cd /etc/mysql&&ls

Sie können sehen, dass mehrere *.cnf-Dateien vorhanden sind, einschließlich derer in den Ordnern conf.d und mysql.conf.d. Dies hat eine Ladereihenfolge und die Konfiguration hier wird vollständig in my.cnf durchgeführt.

(3) Einrichten der Konfigurationsdatei

Methode 1:

Normalerweise gehen Sie wie folgt vor, um den Ordner aufzurufen und zu bearbeiten:

vim ./meine.cnf

Aber hier erhalten Sie eine Fehlermeldung:
bash: vi: Befehl nicht gefunden

Installieren Sie zuerst vi

apt-get-Aktualisierung
#Führen Sie nach Erfolg apt-get install vim aus

Methode 2 (empfohlen):

Außerhalb des Containers bearbeiten und in den Container kopieren. Dies ist eine Methode zum direkten Überschreiben.

Kopieren Sie den Host in den Container.
Syntax: docker cp [Hostadresse] [Container-ID oder Containername]:[Containerdateiadresse]
docker cp /home/mysql/my.cnf mysql:/etc/mysql/my.cnf

(4) Öffnen Sie die Binlog-Konfiguration.

Dieselbe Konfiguration: Geben Sie die Master- und Slave-Bibliotheken ein, um die my.cnf-Konfigurationsdateien einzurichten. Beachten Sie, dass die Server-ID unterschiedlich sein muss.

Zeichensatzserver = utf8
init_connect='Namen festlegen utf8'
#Diese beiden dienen zum Festlegen des UTF-8-Zeichenformats. Die beiden Hosts haben dieselbe Konfiguration. ## Achten Sie darauf, dass sie innerhalb desselben LAN eindeutig sind (wenn es eine bidirektionale Master- und Slave-Datenbank gibt, verlassen Sie sich darauf, um die SQL-Anweisungen zu unterscheiden, die Binlog ausführen).
#Du kannst die letzte IP nehmen. Die Masterdatenbank ist 2 und die Slavedatenbank ist 3.
Server-ID = 2  
## Binärprotokollfunktion aktivieren, Sie können jedes Protokoll (jeden Schlüssel) nehmen
#Demonstrationseinstellung: Die Master-Bibliothek ist auf Master-Bin und die Slave-Bibliothek auf Slave-Bin eingestellt
log-bin=master-bin
log_bin_index = master-bin.index

Die verschiedenen Konfigurationen sind: Hauptbibliothek:

#Hier sind die konfigurierbaren Inhalte. Aus Testgründen werden diese zunächst auskommentiert.
#Die mit dem Slave zu synchronisierende Bibliothek (wenn nicht geschrieben, werden alle standardmäßig synchronisiert)
#binlog-do-db=test

#Synchronisieren Sie die Bibliothek nicht mit dem Slave (schreiben Sie mehrere Zeilen für mehrere)
#binlog-ignore-db=mysql #Legen Sie die replizierte Datenbank fest #binlog-ignore-db=information_schema #So legen Sie fest, dass die replizierte Datenbank ignoriert wird #Protokolldateien von vor 15 Tagen automatisch bereinigen expire_logs_days=15
#binlog_format=row #Legen Sie das SQL für die tatsächliche, im Binlog aufgezeichnete Operation fest.
#max_binlog_size=100m #Dateigröße festlegen#replicate_do_table=test #Zu replizierende Datentabelle#replicate_ignore_table=igoreTest #Zu replizierende Datentabelle ignorieren#replicate_wild_ignore_db=test #Gleich wie Replicate_Do_DB, kann Platzhalter enthalten#replicate_wild_ignore_db=igoreTest #Gleich wie Replicate_Ignore_DB, kann Platzhalter enthalten

Aus der Bibliothek:

#Eingestellt, um Master-Slave-Replikationsfehler zu vermeiden, die durch unzeitgemäße Aktualisierungen oder Neustarts verursacht werden.
schreibgeschützt = 1
master_info_repository=TABELLE
relay_log_info_repository=TABELLE
Relay-Log = Slave-Relay-Bin

#Protokollspeicher der Hauptbibliothek.
Relais-Log-Index = Slave-Relay-Bin.Index

Die Konfiguration wird nach dem Neustart des Containers wirksam.

Docker Neustart MasterMysql
Docker startet SlaveMysql neu

Zeigen Sie die Protokolle des Containers an:

Docker-Protokolle MasterMySQL

Wenn der Neustart fehlschlägt, können Sie mit dieser Operation prüfen, ob ein Fehler in der Konfigurationsdatei vorliegt. Verwenden Sie (3) Methode 2, um die Konfigurationsdatei zu ändern und anschließend den Container zu starten.

(5) Überprüfen Sie, ob die Binlog-Konfiguration des Containers erfolgreich ist.

#Geben Sie den Container ein docker exec -it masterMysql bash
#Geben Sie MySQL ein
mysql -uroot -p123456 
#Überprüfen Sie den Binlog-Status.
Variablen wie „%log_bin%“ anzeigen;
#Sie können sehen, dass log_bin aktiviert ist und bin_log sich in /var/lib/mysql/master-bin befindet

![Datei](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/61e52585e4aa4200a8c27204ef690234~tplv-k3u1fbpfcp-zoom-1.image)

(6) Überprüfen Sie den Binlog-Status des Matser-Knotens der Hauptdatenbank und erhalten Sie hier den Positions-Wert der Konfiguration.

Masterstatus anzeigen;

Wenn das zuvor aktivierte Binlog nicht verwendet wird, müssen Sie ein neues generieren oder es zurücksetzen und löschen.

#Generieren Sie neue Binlog-Protokolldateien, um Protokolle zu leeren; 
#Zurücksetzen und Löschen der Binlog-Protokolldatei – Master zurücksetzen;

Die hier angezeigte Protokollkonfigurationsdatei lautet: master-bin.000001 und die Position ist 334.

4. Richten Sie in der Masterdatenbank ein Konto ein, um Daten mit der Slavedatenbank zu synchronisieren. Das Konto hier ist slaveMysql.

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

5. Melden Sie sich bei Mysql der Slave-Datenbank an und führen Sie es aus. Es wird empfohlen, eine Verbindung zu Navicat herzustellen, um es auszuführen und anzuzeigen. Das auf dem Server angezeigte Format ist sehr chaotisch.

(1) Führen Sie eine Synchronisierung der Masterdatenbankkonfiguration durch. Beachten Sie, dass dies das Endsymbol ist.

Ändern Sie den Master in master_host='172.18.0.2'.
 master_user='slaveMysql',
 Master-Passwort = '123456',
 master_port=3306, 
 master_log_file='mysql-bin.000001',
 master_log_pos= 334,
 master_connect_retry=30;

Parameterdetails:

Ändern Sie den Master in Master_Host=${vom Container verwendete IP}. Dieser muss sich im selben LAN befinden, das in Schritt 2 ermittelt wurde.
master_port Die Portnummer des Masters bezieht sich auf die Portnummer der laufenden Datenbank des Containers und nicht auf die dem Host zugeordnete Portnummer, die im ersten Schritt ermittelt wurde.
master_user legt das für die Synchronisierung verwendete Konto fest. master_password in der 4. Spalte legt das für die Synchronisierung verwendete Kontokennwort fest. master_log_file in der 4. Spalte gibt an, aus welcher Konfigurationsdatei der Masterdatenbank das Binlog-Protokoll gelesen werden soll. master_log_pos in der 3. (6. Spalte) gibt die Position an, ab der mit dem Lesen begonnen werden soll, also den Wert des oben erwähnten Felds Position. master_connect_retry in der 3. (6. Spalte) gibt das Wiederholungsintervall in Sekunden an, wenn die Verbindung fehlschlägt. Der Standardwert beträgt 60 Sekunden.

(2) Öffnen Sie die Konfiguration der Slave-Bibliothek.

Slave starten;
#Stopp, Sklave.
#Sklave stoppen;

(3) Überprüfen Sie den Status der Master-Slave-Synchronisierung. Überprüfen Sie den Status der Master-Slave-Synchronisierung.

Slave-Status anzeigen; 

(4) Überprüfen Sie, ob Fehler vorliegen.

Sie können den Verbindungsfehler anzeigen, indem Sie Last_Io_Error anzeigen. Überprüfen Sie die folgenden möglichen Fehler. 1> Das Netzwerk ist nicht verbunden, der Port und die LAN-IP sind nicht verbunden. 2> Das für die Synchronisierung verwendete Kontokennwort ist normal. 3> Der Binlog-Dateiname und die POS-Position des Masters sind falsch.

6. Testen Sie, ob Master und Slave normal sind.

Die Master-Datenbank erstellt eine Datenbank und prüft, ob die Slave-Datenbank ebenfalls synchron erfolgreich erstellt wurde. Das war’s.

Dies ist das Ende dieses Artikels über das Ausführen von MySQL in einer Docker-Umgebung und das Aktivieren von Binlog zum Konfigurieren der Master-Slave-Synchronisierung. Weitere Informationen zur Master-Slave-Synchronisierung von Docker Binlog MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Beispiel für die Konfiguration der Timeout-Einstellung für MySQL-Datenbanken
  • MySQL-Datenbank-Backup-Einstellung: verzögerte Backup-Methode (MySQL Master-Slave-Konfiguration)
  • MySQL verwendet Indizes zur Leistungsoptimierung
  • MySQL optimiert die Datenbankleistung durch die Anzeige des Status und die Erläuterung der Analyse
  • Einführung in die Leistungsoptimierung von MySQL-Datenbanken
  • Detaillierte Erklärung der GaussDB zur MySQL-Leistungsoptimierung
  • MySQL-Konfigurationsverbindungsparametereinstellungen und Leistungsoptimierung

<<:  Einführung in die Verwendung mehrerer spezieller Attribut-Tags in HTML

>>:  Detaillierter Code zum Hinzufügen von Electron zum Vue-Projekt

Artikel empfehlen

Vue implementiert die Benutzeranmeldungsumschaltung

In diesem Artikelbeispiel wird der spezifische Co...

So gestalten Sie das Frontend einer Website elegant und attraktiv für Benutzer

Das Temperament einer Web-Frontend-Website ist ein...

js-Code zur Realisierung eines Chatrooms für mehrere Personen

In diesem Artikelbeispiel wird der spezifische Co...

So ändern Sie das MySQL-Datenbankdateiverzeichnis in Ubuntu

Vorwort Der Ubuntu-Server des Unternehmens platzi...

Erläuterung der Truncate Table-Verwendung

TRUNCATE-TABELLE Löscht alle Zeilen in einer Tabe...

Methoden und Probleme zum Festlegen des HTML-Zeilenabstands

Um den Zeilenabstand von <p></p> festz...

JavaScript-Canvas zum Erzielen von Meteoreffekten

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

So fügen Sie Wettervorhersagen in Ihre Website ein

Wir hoffen, dass wir durch die Einbindung der Wet...

Einführung in die grundlegenden TypeScript-Typen

Inhaltsverzeichnis 1. Grundtypen 2. Objekttyp 2.1...