Master-Slave-Konfiguration für die synchrone Replikation einer MySQL-Datenbank unter Linux

Master-Slave-Konfiguration für die synchrone Replikation einer MySQL-Datenbank unter Linux

Der Vorteil der Master-Slave-Synchronisierungskonfiguration der MySQL-Datenbank unter Linux besteht darin, dass diese Methode als Sicherungsmethode verwendet werden kann, um eine Lese-/Schreibtrennung zu erreichen und den Druck auf eine Datenbank zu verringern. Um die Geschwindigkeit und Effizienz bei der Verarbeitung großer Datenmengen deutlich zu verbessern, erfordert die Master-Slave-Replikation von MySQL mindestens zwei MySQL-Dienste. Natürlich können MySQL-Dienste auf verschiedene Server verteilt werden, oder es können mehrere Dienste auf einem Server gestartet werden. Dies ist das Prinzip der MySQL Master-Slave-Sicherung. Werfen wir einen Blick auf den spezifischen Synchronisierungskonfigurationsprozess.

Schauen wir uns zunächst die Umgebung an, in der ich es getestet habe:

CentOS 6.5 MySQL Master-Slave-Synchronisierung, MySQL Version 5.6.25

Hauptserver: centos6.5 IP:192.168.1.101

Vom Server: centos6.5 IP:192.168.1.102

1. Hauptserverbezogene Konfiguration

1. Erstellen Sie ein Synchronisierungskonto und geben Sie die Serveradresse an

[root@localhost ~]mysql -uroot -p
mysql>mysql verwenden
mysql>gewähre Replikations-Slave auf *.* an 'Testbenutzer'@'192.168.1.102', identifiziert durch '12345678';
mysql>Berechtigungen leeren #Berechtigungen aktualisieren

Der autorisierte Benutzer testuser kann nur von der Adresse 192.168.1.102 auf die Datenbank des primären Servers 192.168.1.101 zugreifen und hat nur die Berechtigung, die Datenbank zu sichern.

2. Ändern Sie die Konfigurationsdatei /etc/my.cnf vi /etc/my.cnf

Fügen Sie unter [mysqld] die folgenden Parameter hinzu. Wenn die Datei bereits existiert, müssen Sie sie nicht hinzufügen.

Server-ID = 1 
log-bin=mysql-bin #Starten Sie das MySQL-Binärlogsystem,
binlog-do-db=ourneeddb #Zu synchronisierende Datenbank binlog-ignore-db=mysql #Synchronisieren Sie die MySQL-Systemdatenbank nicht. Wenn es andere Datenbanken gibt, die Sie nicht synchronisieren möchten, fügen Sie weiterhin [root@localhost ~]/etc/init.d/mysqld hinzu restart #Starten Sie den Dienst neu

3. Überprüfen Sie den Masterstatus des Masterservers (beachten Sie die Elemente „Datei“ und „Position“, der Slaveserver benötigt diese beiden Parameter).

mysql> Masterstatus anzeigen;
+------------------+----------+--------------+------------------+
| Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000012 | 120 | unsereneeddb| mysql |
+------------------+----------+--------------+------------------+

4. Datenbank exportieren

Sperren Sie die Datenbank vor dem Exportieren

Tabellen mit Lesesperre leeren; #Datenbank-Schreibschutzbefehl, um das Schreiben von Daten beim Exportieren der Datenbank zu verhindern

Tabellen entsperren; #Entsperren

Datenbankstruktur und Daten exportieren: mysqldump -uroot -p ourneeddb > /home/ourneeddb.sql

Gespeicherte Prozeduren und Funktionen exportieren: mysqldump -uroot -p -ntd -R ourneeddb > ourneeddb_func.sql

Tipps: -ntd gespeicherte Prozeduren exportieren, -R Funktionen exportieren

2. Slave-Server-bezogene Konfiguration

1. Ändern Sie die Konfigurationsdatei /etc/my.cnf vi /etc/my.cnf

Fügen Sie unter [mysqld] die folgenden Parameter hinzu. Wenn die Datei bereits existiert, müssen Sie sie nicht hinzufügen.

server-id=2 #Legen Sie die Slave-Server-ID fest, die sich von der des Master-Servers unterscheiden muss

log-bin=mysql-bin #Starten Sie das MySQL-Binärprotokollsystem

replicate-do-db=ourneeddb #Der Name der Datenbank, die synchronisiert werden muss

replicate-ignore-db=mysql #Die MySQL-Systemdatenbank nicht synchronisieren

[root@localhost~ ]/etc/init.d/mysqld restart #Starten Sie den Dienst neu

2. Datenbank importieren

Der Importvorgang wird hier nicht beschrieben.

3. Konfigurieren Sie die Master-Slave-Synchronisierung

[root@localhost~ ]mysql -uroot -p
mysql>mysql verwenden 
mysql>Slave stoppen;
mysql>ändere Master in
   master_host='192.168.1.101',
   master_user='Testbenutzer',
   master_password='12345678',
   master_log_file='mysql-bin.000012',
   master_log_pos=120; #log_file und log_pos sind die Datei und Position des Masterservers im Masterstatus
mysql>Slave starten;
mysql>Slave-Status anzeigen\G;

*************************** 1. Reihe ***************************
Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet
Master_Host: 192.168.1.101
Master_User: Testbenutzer
Master_Port: 3306
Verbindungswiederholung: 60
Master_Log_File:mysql-bin.000012
Read_Master_Log_Pos: 120
Relay_Log_Datei: orange-2-relay-bin.000003
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000012
Slave_IO_Running: Ja
Slave_SQL_Running: Ja
Replicate_Do_DB: orange
Replicate_Ignore_DB: MySQL, Test, Informationsschema, Leistungsschema
Tabelle_replizieren:
Tabelle_Ignorieren_replizieren:
Wild_Do_Tabelle replizieren:
Tabelle_Wild_Ignore_replizieren:
Last_Errno: 0
Letzter_Fehler:
Skip_Counter: 0
Exec_Master_Log_Pos: 120
Relay_Log_Space: 1320
Until_Condition: Keine
Bis_Log_Datei:
Bis_Log_Pos: 0
Master_SSL_Allowed: Nein
Master_SSL_CA_Datei:
Master_SSL_CA_Pfad:
Master_SSL_Zertifikat:
Master_SSL_Chiffre:
Master_SSL_Schlüssel:
Sekunden_Hinter_Master: 0
Master_SSL_Verify_Server_Cert: Nein
Last_IO_Errno: 0
Letzter_E/A-Fehler:
Last_SQL_Errno: 0
Letzter_SQL_Fehler:
Server-IDs replizieren_ignorieren:
Master_Server_Id: 1
Master_UUID: 773d2987-6821-11e6-b9e0-00163f0004f9
Master_Info_Datei: /home/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Der Slave hat das gesamte Relay-Protokoll gelesen und wartet auf die Aktualisierung durch den Slave-E/A-Thread.
Master_Retry_Count: 86400
Master_Bind:
Zeitstempel des letzten IO-Fehlers:
Letzter_SQL_Fehler_Zeitstempel:
Master_SSL_Crl:
Master_SSL_Crlpfad:
Abgerufenes_Gtid_Set:
Ausgeführtes_Gtid_Set:
Auto_Position: 0

Beachten Sie, dass „Slave_IO_Running: Yes“ und „Slave_SQL_Running: Yes“ „Yes“ sein müssen und dass „Log_File“ und „Log_Pos“ mit „File“ und „Position“ im Masterstatus identisch sein müssen.

Wenn alle korrekt sind, war die Konfiguration erfolgreich!

Dies ist der gesamte Inhalt, den wir für Sie zur Konfiguration der synchronen Master-Slave-Replikation von MySQL-Datenbanken unter Linux zusammengestellt haben. Ich hoffe, er kann Ihnen helfen.

Das könnte Sie auch interessieren:
  • Python implementiert ein Skript zum Synchronisieren inkrementeller MySQL-Tabellendaten mit Clickhouse
  • Detaillierte Erläuterung des tatsächlichen Prozesses der Master-Slave-Synchronisierung der MySQL-Datenbank
  • Zwei Möglichkeiten zum Speichern von Scrapy-Daten in einer MySQL-Datenbank (synchron und asynchron)
  • Konfiguration der MySQL-Master/Slave-Datenbanksynchronisierung und häufige Fehler
  • Das KTL-Tool realisiert die Methode zum Synchronisieren von Daten von MySQL zu MySQL
  • Tutorial zum Synchronisieren von MySQL-Daten mit ElasticSearch mithilfe von Python
  • Master-Slave-Synchronisationskonfiguration und Lese-/Schreibtrennung der MySQL-Datenbank
  • Schritte zum Synchronisieren von MongoDB-Daten mit MySQL mithilfe von node.js
  • PHP verwendet die SWOOLE-Erweiterung zum Synchronisieren von MySQL-Daten
  • So verwenden Sie Maxwell zum Synchronisieren von MySQL-Daten in Echtzeit

<<:  vue2.x-Konfiguration von vue.config.js zur Projektoptimierung

>>:  Detaillierte Erläuterung der Lösung für npm ls-Fehler, die durch das fsevents-Modul unter Linux verursacht werden

Artikel empfehlen

So konfigurieren Sie den Nginx-Lastausgleich

Inhaltsverzeichnis Nginx-Lastausgleichskonfigurat...

Detaillierter Prozess zum Konfigurieren eines HTTPS-Zertifikats unter Nginx

1. Der Unterschied zwischen HTTP und HTTPS HTTP: ...

Über 3 gängige Pakete der REM-Anpassung

Vorwort Ich habe bereits einen Artikel über REM-A...

Verwandte Befehle zur vollständigen Deinstallation von Nginx unter Ubuntu 16.04

nginx Übersicht nginx ist ein kostenloser, quello...

Docker-Dateispeicherpfad, Port-Mapping-Betriebsmodus ändern

So erhalten Sie den Container-Startbefehl Der Con...

Einfaches Anwendungsbeispiel für rekursive MySQL 8.0-Abfragen

Vorwort Dieser Artikel verwendet die neuen Funkti...

Lombok-Implementierung JSR-269

Vorwort Einführung Lombok ist ein praktisches Too...

Zusammenfassung der Wissenspunkte des Nodejs-Clustermoduls und Anwendungsbeispiele

Der Interviewer wird Sie manchmal fragen: „Sagen ...