Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung des Beispielcodes zur Master-Slave-Trennung der MySQL-Datenbank

Detaillierte Erläuterung des Beispielcodes zur Master-Slave-Trennung der MySQL-Datenbank

黄舟
黄舟Original
2017-03-27 13:12:051618Durchsuche

Dieser Artikel stellt hauptsächlich den Beispielcode der MySQL-Datenbank-Master-Slave-Trennung vor. Die Lese-/Schreib-Trennung der MySQL-Datenbankeinstellungen kann die Schreib- und Lesevorgänge der Datenbank ermöglichen Ausführung auf verschiedenen Servern, um die Parallelität und die entsprechende Geschwindigkeit zu verbessern.

Einführung

Lese- und Schreibtrennung der MySQL-Datenbankeinstellungen, wodurch Schreib- und Lesevorgänge in der Datenbank auf verschiedenen Servern ausgeführt werden können, wodurch die Parallelität und die entsprechende Geschwindigkeit verbessert werden.

Heutzutage verwenden die meisten größeren Websites eine Datenbank-Master-Slave-Trennung und eine Lese-/Schreib-Trennung, die nicht nur als Backup dient, sondern auch den Lese- und Schreibdruck auf die Datenbank verringert. Davon habe ich schon immer gehört , aber ich habe noch nie davon gehört. Ich habe heute Zeit, es zu üben und den Vorgang aufzuzeichnen.

Experimentelle Umgebung

Ich habe zwei Server vorbereitet, einer ist ein lokaler Computer und der andere ist ein Remote-VPS. Auf den beiden Computern sind Datenbanken installiert.
Ich werde die Installation von MySQL nicht vorstellen. Es ist am besten, die gleiche Version von MySQL zu installieren. Wenn es inkonsistent ist, kann es zu Problemen kommen, wenn die niedrigere Version von der höheren Version liest . Es ist am besten, es konsistent zu halten.

Masterbibliothek Master

45.78.57.4 Centos 7 Linux System, MySQL-Version 5.1.73

Slave aus der Bibliothek

Natives 127.0.0.1 macOS-System, MySQL-Version 5.1.73

Konfiguration

Benutzer erstellen

Erstellen Sie einen Benutzer in der Hauptbibliothek, um das Ausführungsprotokoll der Hauptbibliothek aus der Bibliothek zu lesen.

muss in der MySQL-Befehlszeile ausgeführt werden. Sie müssen sich zuerst in der Befehlszeile anmelden

Der Code lautet wie folgt:

GRANT REPLICATION SLAVE ON *.* TO 'test'@'45.78.57.4' IDENTIFIED BY 'test';

My.cnf ändern

Das Linux-System befindet sich in /etc/my.cnf, das Mac-System befindet sich in dem Verzeichnis, in dem MySQL installiert ist, und das Gleiche gilt für Windows.

Fügen Sie etwas Code in die Datei my.cnf ein

server-id = 1 //数据库ID号
log-bin=master-bin //启用二进制日志
log-bin-index=master-bin.index //二进制日志名称

Achten Sie darauf, ihn nicht am Ende der Datei, sondern vorne, also danach, einzufügen [mysqld], hier einfügen Mein my.cnf-Inhalt

[mysqld]
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
max_allowed_packet=100M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Status anzeigen

Nachdem Sie sich in der MySQL-Befehlszeile angemeldet haben, geben Sie show master status ein Die folgenden Informationen werden angezeigt. Dies bedeutet, dass die Konfiguration der Master-Datenbank abgeschlossen ist.

mysql> show master status;
+-------------------+----------+--------------+------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 |  672675 |       |         |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

Zeichnen Sie den Inhalt von Datei und Position auf, der bei der Konfiguration aus der Bibliothek verwendet wird.

Slave-Bibliothekskonfiguration

Suchen Sie die Datei my.cnf auf dem lokalen Computer (Slave-Bibliothek) und fügen Sie dann den folgenden Inhalt hinzu Die Konfiguration der Hauptbibliothek ist dieselbe.

server-id=2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index

Stellen Sie sicher, dass sie sich an derselben Position wie die Hauptbibliothek befindet. Ich konnte sie nicht verbinden, da die Position am Ende platziert wurde.

Zuordnen der Master-Slave-Datenbank

Der letzte Schritt ist sehr wichtig. Melden Sie sich bei der MySQL-Befehlszeile der Slave-Datenbank an und führen Sie den folgenden Code aus hauptsächlich, um einige Informationen der Master-Datenbank zuzuordnen.

change master to master_host='45.78.57.4',  #Master 服务器Ip
master_port=3306,
master_user='test',
master_password='test', 
master_log_file='master-bin.000001', #Master日志文件名
master_log_pos=672675; #Master日志同步开始位置

Achten Sie darauf, ob die Ausführung erfolgreich ist. Wenn die Ausführung fehlschlägt, überprüfen Sie den Code sorgfältig, um festzustellen, wo Fehler vorliegen.

Wenn die Ausführung normal ist, starten Sie den Slave und überprüfen Sie den Verbindungsstatus.

//需要再mysql命令行执行 
start slave; 
show slave status\G; //查看slave连接状态

Statusinformationen

        Slave_IO_State: Waiting for master to send event
         Master_Host: 45.78.57.4
         Master_User: test
         Master_Port: 3306
        Connect_Retry: 60
       Master_Log_File: master-bin.000001
     Read_Master_Log_Pos: 672913
        Relay_Log_File: slave-relay-bin.000044
        Relay_Log_Pos: 504
    Relay_Master_Log_File: master-bin.000001
       Slave_IO_Running: Yes
      Slave_SQL_Running: Yes

Achtung!

Diese beiden Status müssen „Ja“ sein, um als erfolgreich zu gelten. Wenn nicht, überprüfen Sie den Konfigurationsfehler im obigen Schritt.

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Testen

Jetzt fügen Sie ein Datenelement zur Hauptdatenbank hinzu, um zu sehen, ob die gleichen Daten in der Slave-Datenbank vorhanden sind Konfiguration ist normal. Die Funktion funktioniert normal.

Das Hauptprinzip der Master-Slave-Trennung besteht darin, die Ausführungsprotokollfunktion der Hauptbibliothek zu aktivieren, dann die Protokollinformationen der Hauptbibliothek aus der Slave-Bibliothek zu lesen und dann die von der Slave-Bibliothek ausgeführten SQL-Anweisungen auszuführen Bis zur Trennung der Master-Slave-Bibliothek bleiben die Master-Slave-Daten erhalten und haben die Funktion, die Daten zu sichern.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Beispielcodes zur Master-Slave-Trennung der MySQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn