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!