Heim  >  Artikel  >  Datenbank  >  Ausführliche Erläuterung der MySQL-Protokoll-basierten Master-Slave-Replikation

Ausführliche Erläuterung der MySQL-Protokoll-basierten Master-Slave-Replikation

coldplay.xixi
coldplay.xixinach vorne
2020-08-17 16:55:332225Durchsuche

Ausführliche Erläuterung der MySQL-Protokoll-basierten Master-Slave-Replikation p>

Manche Leute fragen mich immer, ob ich Lesen und Schreiben trennen kann. Sagen wir es so: Das Schwierige ist, ob wir uns treffen können so ein großes Projekt. Wenn es sich um ein so großes Projekt handelt, sollte die Trennung von Lesen und Schreiben auf keinen Fall von ein oder zwei Personen vorgenommen werden, sondern sollte die Zusammenarbeit vieler Menschen sein.

Verwandte Lernempfehlungen: MySQL-Video-Tutorial p>

Also! Ich habe es nicht getan.

Aber...

Können wir es nicht als experimentelle Umgebung nutzen? (Ein verlegenes Lächeln)

Von der Suche nach Dokumentation bis zur Durchführung des Experiments habe ich insgesamt drei Tage gebraucht (weil ich mich nicht den ganzen Tag auf diese Angelegenheit konzentriert habe). Grundsätzlich erledigt, das heißt, wenn mich jemand fragt, ob ich weiß, wie es geht, sage ich, dass ich es bereits getan habe und es keine schwierige Aufgabe ist.

Besondere Aufmerksamkeitspunkte:


  1. Die Firewall zwischen Master und Slave ist erforderliches Release
  2. mysql-id darf nur my.cnf sehen
  3. uuid darf nur auto.cnf sehen
  4. Der Master-Server benötigt eine Autorisierung und autorisiert im Allgemeinen einen Slave Konto zur Nutzung des Slave-Servers

Mehrere häufig verwendete Befehle (für Protokollmethoden)


  • Die, die auf der Master-Datenbank arbeiten, sind

    mysql > #Master-Datenbankstatus anzeigen

    mysql > . zu 'slave'@'%ip%' identifiziert durch 'password'; # Die Erklärung hinter to: 'slave' gibt an, welches Konto das nach @ ist Die IP des Slave-Servers und die darauffolgende von by ist das Passwort;

    systemctl status firewalld # Firewall-Status anzeigen

    firewall-cmd –list-all # Die Firewalls anzeigen Portliste

    firewall-cmd –permanent –zone=public –add-port=3306/tcp # Port 3306 freigeben

    firewall-cmd –reload # Starten Sie die Firewall neu

    Darüber hinaus können Sie sich iptable selbst ansehen

  • Die Hauptoperationen in der Slave-Bibliothek sind

    1. mysql> // Replikation stoppen
    2. mysql> // Replikation starten;
    3. mysql> show Slave StatusG; # Status anzeigen
  • Detaillierte Konfiguration


    1. Einführung in die Umgebung

      1. Masterserver 192.168. 5.238 Centos 7.4
      2. Slave-Server 192.168.5.239 Centos 7.4
      3. Protokolle für Master-Slave-Konfiguration verwenden
    2. Konfiguration auf dem Master-Server

      1. Firewall-Betrieb: Um später seltsame Probleme zu vermeiden, lesen Sie den Firewall-Betrieb mehrerer häufig verwendeter Befehle

      2. MySQL-Protokoll -bezogene Konfiguration, berühren Sie nicht andere Dinge, lesen Sie einfach diesen Absatz

        # aster live copy configure
        log-bin=mysql-bin //Protokolldatei Name
        binlog_format=mixed //Dieses Protokollformat hat mehrere Optionen. Die optionale Option „statement/row/mixed“ ist „statement/row/mixed“. Wenn Sie mehr erfahren möchten, können Sie die offizielle Dokumentation lesen br/>server-id = 238 //Um eine wiederholte Verwendung zu vermeiden, versuchen Sie, die letzte Ziffer der Server-IP zu verwenden, um ihn zu benennen
        skip_name_resolve=ON //Schreiben Sie dies einfach direkt und beziehen Sie sich auf die Dokumente anderer Personenexpire_logs_days = 10 //Legen Sie die Anzahl der Tage fest, die das Protokoll speichern soll. Es spielt keine Rolle, ob Sie es hinzufügen, da es in der Testumgebung offiziell online ist und beim Ausführen müssen Sie darüber nachdenken
        # /etc/init.d/mysql restart // Dies ist nicht unbedingt dieser Befehl. Es hängt davon ab, wie Sie Centos installiert haben Wenn Sie MySQL nicht verstehen, können Sie mehr über Linux-Operationen erfahren.
        ##Wenn die beiden Server nicht repliziert werden, sollte die UUID von auto.cnf unterschiedlich sein. Wenn sie repliziert werden, sollten Sie eine verwenden Schauen Sie nach. Wenn es eine im /var-Verzeichnis des MySQL-Installationsverzeichnisses gibt, löschen Sie diese Datei oder sichern Sie sie

    3. Kopieren die MySQL-Konfigurationsberechtigungen

      # mysql -uroot -p „password“ //Melden Sie sich beim MySQL-Server an, Sie werden aufgefordert, Ihr Passwort einzugeben
      mysql>GRANT replication Slave ON '. Slave'@'%' IDENTIFIED BY '111111'; // Erklären Sie, dass die Replikation Replikationsberechtigungen zuweist. Das 'Slave'@'%' am Ende bedeutet, dass jeder Host kann den Slave zum Kopieren aus der Bibliothek verwenden oder die IP gefolgt vom Passwort angeben
      mysql> +——————+————-+——— —–+—————+———— ———-+
      | Binlog_Ignore_DB |
      +—————+. -+————–+—————-+
      | br/> 1 Zeile im Satz (0,00 Sek.)
      Das Sehen der obigen Tabelle zeigt einen Erfolg an

    4. Konfiguration aus der Bibliothek

      1. Modify my.cnf

        log-bin=mysql-bin //Protokolldateiname
        binlog_format=mixed //Protokollformat
        server-id =239 //Der Server ID hat die gleiche Erklärung wie der Hauptserver, wobei das Ende der IP verwendet wird
        # Expire_logs_days = 10 //Ich habe dies auskommentiert,
        # Early-Plugin-Load = „“ //Dies wird vorerst nicht verwendet. Wenn diese Option aktiviert ist, ist die Master-Slave-Replikation kein kritisches Element.
        relay_log = mysql-relay-bin //. Dies ist ein Replikationsprotokoll aus der Bibliothek
        relay_log_index=relay_log.index //Protokollindex
        # /etc/init.d/mysql restart // Dies ist nicht unbedingt dieser Befehl . Es hängt davon ab, wie Sie Centos installiert haben. Wenn Sie dies nicht verstehen, können Sie mehr über Linux-Operationen erfahren Sklavenbibliothek

        p>
        1. Geben Sie das MySQL-Terminal der Sklavenbibliothek ein #mysql -uroot -p //Geben Sie das Terminal ein

          # mysql -uroot -p // Betreten Sie das Terminal (Der Grund, warum ich mehr Details schreibe, ist, dass ich befürchte, dass die Leute, die diesen Artikel lesen, falsch verstehen, dass der Vorgang unvollständig ist)

        2. Schließen Sie den Slave # Achten Sie auf die Konfiguration der Slave-Bibliothek. Schließen Sie den Slave vorher;

          mysql>stop Slave; //Dies dient zum Schließen der Slave-Bibliothek , garantieren Sie, dass es erfolgreich ist

      2. Master-Parameter ändern

        mysql>Master ändern in
        master_host='192.168.5.238',master_user='slave',
        master_password='Füllen Sie das Obige aus, um das Passwort für die Master-Datenbankreplikation für Berechtigungen einzurichten',
        master_log_file='mysql-bin.000010', //Füllen Sie es aus Kopieren Sie hier den Dateinamen für den Show-Master-Status in der Hauptbibliothek.
        master_log_pos=2812 / /Schauen Sie im Show-Master-Status der Hauptbibliothek nach

      3. Starten Sie die Slave-Bibliothek

        mysql>start Slave; //Starten Sie die Slave-Bibliothek

      4. Überprüfen Sie, ob die Master-Slave-Replikation erfolgt ist erfolgreich

        mysql> show Slave Status G;

                 Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.5.238
                      Master_User: slave
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000010
              Read_Master_Log_Pos: 2812
                   Relay_Log_File: mysql-relay-bin.000013
                    Relay_Log_Pos: 3025
            Relay_Master_Log_File: mysql-bin.000010
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes

        Beachten Sie, dass die Werte von Slave_IO_Running und Slave_SQL_Running beide „Ja“ sind. Wenn es fehlschlägt, sehen Sie sich bitte die Eingabeaufforderungsmeldung unten an . Sie sollten es finden können, indem Sie bei Google und Baidu suchen

        1. Bei der Konfiguration ist ein Problem aufgetreten. Das Problem besteht darin, dass der UUID-Fehler gemeldet wird Der Grund dafür ist, dass meine experimentelle Umgebung nach der Installation von MySQL von einer virtuellen Maschine kopiert wird, sodass die UUID von MySQL dieselbe ist

          # cd /usr /local/mysql/var# mv auto.cnf auto.cnf.back //Überprüfen Sie, ob dies vorhanden ist. Wenn ja, ist es das.
          # /etc/init.d/mysql restart //Starten Sie die Datenbank neu
          Dann führen Sie show Slave StatusG aus; beobachten Sie zwei Ja

        2. Jetzt loggen- Die basierte Master-Slave-Replikation ist abgeschlossen

    Zusammenfassung:


    1. Sie müssen sich zuerst die Firewall ansehen
    2. Das spielt keine Rolle Die Schritte, mach es einfach. Bis zum Erfolg
    3. Seien Sie vorsichtig und geraten Sie nicht in Panik

    Verwandte grafische Tutorials: MySQL-Datenbank-Grafik-Tutorial

    Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der MySQL-Protokoll-basierten Master-Slave-Replikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen