Beispiel für die Implementierung einer kaskadierenden MySQL-Replikation

Beispiel für die Implementierung einer kaskadierenden MySQL-Replikation

Bei der sogenannten kaskadierenden Replikation synchronisiert der Masterserver die Daten nur mit einem Slave-Server, und dann synchronisiert der Slave-Server die Daten mit allen Slave-Servern im Backend. Dadurch wird der Schreibdruck des Masterservers und die Netzwerk-E/A der replizierten Daten verringert.

1. Konfigurieren Sie den Masterserver

1. Ändern Sie die Hauptkonfigurationsdatei

vim /etc/meine.cnf

Fügen Sie die folgenden zwei Konfigurationszeilen unter dem Konfigurationsblock [mysql] hinzu

[mysql]
log_bin # Binäres Logging aktivieren server_id=1 # Eine global eindeutige ID für den aktuellen Knoten festlegen

2. Starten Sie den MySQL-Dienst neu, damit die Konfiguration wirksam wird

systemctl Neustart Mairadb

3. Erstellen Sie ein Benutzerkonto mit Kopierberechtigung

GRANT REPLICATION SLAVE ON *.* AN ‚repluser‘@‚HOST‘ IDENTIFIZIERT DURCH ‚replpass‘; 

Befehlsanalyse:

  • 'repluser'@'HOST': Legen Sie den Benutzernamen fest, der die Host-IP oder das Netzwerksegment ist. Das Netzwerksegment wird durch %, beispielsweise 10.0.0.% dargestellt.
  • IDENTIFIZIERT DURCH: Passwort festlegen
  • *.* : zeigt alle Datenbanken und alle Tabellen an
  • GRANT REPLCATION SLAVE: ermöglicht dem Benutzer die Replikation von Daten

Der Zweck dieses Befehls besteht darin, repluser zu autorisieren, den gesamten Inhalt der Datenbank zu kopieren

2. Konfiguration des Relay-Slave-Servers

1. Ändern Sie die Hauptkonfigurationsdatei

vim /etc/meine.cnf

Fügen Sie die folgenden zwei Konfigurationszeilen in den Konfigurationsblock [mysql] ein

[mysqld]  
 log_bin
server_id=2 #Legen Sie eine global eindeutige ID-Nummer für den aktuellen Knoten fest read_only=ON #Beschränken Sie den Slave-Server auf schreibgeschützt. „Hinweis: Diese Einschränkung ist für Benutzer mit SUPER-Berechtigungen ungültig.“
log_slave_updates #Der Zweck dieses Elements besteht darin, das Binärprotokoll des Masterservers auf dem lokalen Computer aufzuzeichnen und das Binärprotokoll dann auf andere Slave-Server im Backend zu kopieren

2. Starten Sie den MySQL-Dienst neu, damit die Konfiguration wirksam wird

systemctl Neustart MariaDB

3. Verwenden Sie ein Benutzerkonto mit Replikationsberechtigungen, um eine Verbindung zum primären Server herzustellen und den Replikationsthread zu starten

   ÄNDERN SIE MASTER IN 
   MASTER_HOST='host', #Geben Sie die IP des Master-Hosts an
   MASTER_USER='repluser', #Geben Sie den autorisierten Benutzernamen des Masters an MASTER_PASSWORD='replpass', #Geben Sie das autorisierte Benutzerkennwort an MASTER_LOG_FILE='mysql-bin.xxxxx', #Geben Sie das Binärprotokoll an, aus dem der Masterserver kopiert wird MASTER_LOG_POS=#; #Position des Binärprotokolls, Sie können diesen Befehl auf dem Masterserver ausführen, um es anzuzeigen, Masterprotokolle anzeigen;

   Starten Sie die Replikationsthreads IO_THREAD und SQL_THREAD
   SLAVE STARTEN; 

4. Überprüfen Sie den Status des Relay-Slave-Servers

  MariaDB [(keine)]> Slave starten;
  Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

  MariaDB [(keine)]> Slave-Status anzeigen\G
  *************************** 1. Reihe ***************************
          Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet
           Master_Host: 192.168.68.7
           Master_Benutzer: repluser
           Master_Port: 3306
          Verbindungswiederholung: 60
         Master_Log_File: mariadb-bin.000001
       Read_Master_Log_Pos: 557
          Relay_Log_File: mariadb-relay-bin.000002
          Relay_Log_Pos: 843
      Relay_Master_Log_File: mariadb-bin.000001
         Slave_IO_Running: Ja „Achten Sie besonders darauf, dass der Thread nicht aktiv ist, wenn NEIN angezeigt wird.“
        Slave_SQL_Running: Ja „Achten Sie besonders darauf, ob es NEIN ist, denn das bedeutet, dass der Thread nicht aktiv ist.“
         Replicate_Do_DB: 
       Replikat_Ignorieren_DB: 
        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: 557
         Relay_Log_Space: 1139
         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: 
      Seconds_Behind_Master: 0 „Dieses Element gibt den Synchronisierungszeitpunkt an. 0 bedeutet sofortige Synchronisierung.“
  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

3. Backend-Slave-Konfiguration

1. Ändern Sie die Konfigurationsdatei

vim /etc/meine.cnf

Fügen Sie die folgenden zwei Konfigurationszeilen in den Konfigurationsblock [mysql] ein

[mysqld]  
server_id=3 #Legen Sie eine global eindeutige ID-Nummer für den aktuellen Knoten fest read_only=ON #Beschränken Sie den Slave-Server auf schreibgeschützt. „Hinweis: Diese Einschränkung ist für Benutzer mit SUPER-Berechtigungen ungültig.“

2. Starten Sie den MySQL-Dienst neu, damit die Konfiguration wirksam wird

systemctl Neustart MariaDB

3. Verwenden Sie ein Benutzerkonto mit Replikationsberechtigungen, um eine Verbindung zum primären Server herzustellen und den Replikationsthread zu starten

ÄNDERN SIE MASTER IN 
   MASTER_HOST = 'Relay-Host', #Geben Sie die IP des Relay-Slave-Hosts an
   MASTER_USER='repluser', #Geben Sie den autorisierten Benutzernamen des Masters an MASTER_PASSWORD='replpass', #Geben Sie das autorisierte Benutzerkennwort an MASTER_LOG_FILE='mysql-bin.xxxxx', #Geben Sie das Binärprotokoll an, von dem der Relay-Slave-Server mit dem Kopieren beginnt MASTER_LOG_POS=#; #Position des Binärprotokolls, Sie können diesen Befehl auf dem Slave-Server ausführen, um es anzuzeigen, Master-Protokolle anzeigen;

   Starten Sie die Replikationsthreads IO_THREAD und SQL_THREAD
   SLAVE STARTEN; 

4. Überprüfen Sie den Status des Slave-Servers

  MariaDB [(keine)]> Slave starten;
  Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

  MariaDB [(keine)]> Slave-Status anzeigen\G
  *************************** 1. Reihe ***************************
          Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet
           Master_Host: 192.168.68.17
           Master_Benutzer: repluser
           Master_Port: 3306
          Verbindungswiederholung: 60
         Master_Log_File: mariadb-bin.000001
       Read_Master_Log_Pos: 557
          Relay_Log_File: mariadb-relay-bin.000002
          Relay_Log_Pos: 843
      Relay_Master_Log_File: mariadb-bin.000001
         Slave_IO_Running: Ja „Achten Sie besonders darauf, dass der Thread nicht aktiv ist, wenn NEIN angezeigt wird.“
        Slave_SQL_Running: Ja „Achten Sie besonders darauf, ob es NEIN ist, denn das bedeutet, dass der Thread nicht aktiv ist.“
         Replicate_Do_DB: 
       Replikat_Ignorieren_DB: 
        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: 557
         Relay_Log_Space: 1139
         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: 
      Seconds_Behind_Master: 0 „Dieses Element gibt den Synchronisierungszeitpunkt an. 0 bedeutet sofortige Synchronisierung.“
  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

5. Erstellen Sie abschließend einen Datenbanktest auf dem Masterserver, um zu prüfen, ob dieser synchronisiert ist

Kaskadierende Replikationsfunktionen

  • Reduzieren Sie den Druck auf den Master-Server und den Netzwerk-E/A-Druck
  • Es können jedoch Dateninkonsistenzen auftreten.

Zusammenfassen

  • Der Relay-Slave muss das Binärprotokoll öffnen und das Konfigurationselement log_slave_updates muss hinzugefügt werden
  • Beachten Sie die Auswirkung von read_only=ON, das den Slave-Server auf schreibgeschützt beschränkt. „Hinweis: Diese Einschränkung gilt nicht für Benutzer mit SUPER-Berechtigungen.“

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:
  • Zusammenfassung der MySQL-Vollsicherung, Master-Slave-Replikation, kaskadierenden Replikation und Halbsynchronisierung
  • Mysql-Methode zum Kopieren einer Datenspalte einer Tabelle in eine Spalte einer anderen Tabelle
  • Kopieren von Feldern zwischen verschiedenen Tabellen in MySQL
  • Tiefgreifendes Verständnis des Statusübergangs des MySQL-Master-Slave-Replikationsthreads
  • Erläuterung der Vorsichtsmaßnahmen für die Mysql-Master-Slave-Replikation
  • Erläuterung des Prinzips des MySQL-Replikationsmechanismus

<<:  Vollständiges Beispiel einer Vue-Polling-Request-Lösung

>>:  Detailliertes Tutorial zur Installation von Nginx auf CentOS8 (Bild und Text)

Artikel empfehlen

Allgemeine Befehle zum Bereitstellen von InfluxDB und Mongo mit Docker

Bereitstellen einer Datenbank basierend auf Docke...

Analyse des GTK-Treeview-Prinzips und der Verwendung

Die GtkTreeView-Komponente ist eine erweiterte Ko...

Grafisches Installationstutorial für MySQL 8.0.17

In diesem Artikel finden Sie das grafische Tutori...

Anweisungen zur Verwendung des Datenbankverbindungspools Druid

Ersetzen Sie ihn durch den optimalen Datenbankver...

JavaScript-Objekte (Details)

Inhaltsverzeichnis JavaScript-Objekte 1. Definiti...

Webdesign-Prinzipien für Hyperlinks

<br />Verwandte Artikel: 9 praktische Tipps ...

Ein praktischer Bericht über die Wiederherstellung einer MySQL Slave-Bibliothek

Beschreibung der Situation: Heute habe ich mich b...

Tutorial zur Installation von VMware Workstation 14 Pro unter Ubuntu 16.04

In diesem Artikel wird die spezifische Methode zu...