Heim  >  Artikel  >  Datenbank  >  Was ist die Lese-Schreib-Trennung von MySQL? Wie richte ich die Master-Slave-Datenbank ein?

Was ist die Lese-Schreib-Trennung von MySQL? Wie richte ich die Master-Slave-Datenbank ein?

不言
不言nach vorne
2018-10-09 15:22:022526Durchsuche

In diesem Artikel erfahren Sie, was die Lese-/Schreibtrennung in MySQL ist. Wie richte ich die Master-Slave-Datenbank ein? Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.

Was ist Lese-Schreib-Trennung?

Mysql hat nichts weiter als vier Funktionen: Hinzufügen, Löschen, Ändern und Lesen. Dies trägt zur Verbesserung des Systems bei Leistung.
Versuchen Sie darüber nachzudenken, der Einzug, die Rückgabe, die Änderung und der Verkauf von Waren wurden dahingehend geändert, dass nur noch Waren an der Vordertür verkauft werden, und andere gehen an die Hintertür.
Oft sind Dinge, die hochwertig aussehen, recht einfach zu erstellen

Das Folgende ist für Anfänger geschrieben, es sind alles sehr intuitive Vorgänge.

1. Konfiguration:
Die beiden Server haben die gleiche MySQL-Konfiguration wie MySQL5.7
PS: Wenn die Bedingungen begrenzt sind, können Sie nur zwei MySQL-Dienste installieren (verschiedene Ports wie 3306, 3307), aber das ist etwas im Widerspruch dazu Die ursprüngliche Absicht der Effizienz

2. Code:
1. Im Allgemeinen direkt Auf der Codeebene werden das Lesen und Schreiben von MySQL-Operationsklassen wie Update, Insert und Select * from weitergeleitet und entsprechend getrennt an verschiedene Server.
2. Middleware-Agent, das heißt, ohne Änderung des Codes werden Lese- und Schreibanforderungen an den Master-Slave-Server gesendet.

Lassen Sie uns nun darüber sprechen, wie der konfiguriert wird Master-Slave-Server:

1. Offene Ports: Die meisten Hosts verwenden standardmäßig den MySQL-Port 3306, also konfigurieren Sie zuerst die beiden Maschinen. Öffnen Sie Port 3306 in der Sicherheitsgruppe oder Firewall und starten Sie ihn neu.
ist geöffnet, konfigurieren Sie nun zwei Server (dasselbe gilt für einen Host und zwei MySQL-Server):

Das Folgende verwendet die Haupt-IP: 192.168.0.1, Slave-IP: 192.168.0.2, Synchronisierungskontospezifikation erstellen, Passwort spec_password als Beispiel:

Hauptserver (Hinzufügen, Löschen und Ändern):

#1.Mysql配置改以下并重启服务(命令行里直接重启:service mysql restart)
[mysqld]
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index

#2.命令行mysql执行或phpmyadmin里执行:
GRANT REPLICATION SLAVE ON *.* TO 'spec'@'192.168.0.2' IDENTIFIED BY 'spec_password';
flush privileges;

Auf diese Weise ist der Hauptserver fertiggestellt.

Konfiguration vom Server:

#1.Mysql配置改以下并重启服务(命令行里直接重启:service mysql restart)
[mysqld]
server-id=2
relay-log-index=slave-bin.index
relay-log=slave-bin

#2.命令行mysql执行或phpmyadmin里执行:
change master to master_host='192.168.0.1',master_port=3306,master_user='spec',master_password='spec_password',master_log_file='master-bin.000001',master_log_pos=0;
start slave

Generell ist die Konfiguration hier abgeschlossen.

3. Test:

Abfrageanweisung vom Server: Slave-Status anzeigen
Wenn Slave_IO_State=Warten auf Master Um das Ereignis zu senden, ist es erfolgreich.
Der Rest des Status hat normalerweise folgende Gründe:

1 Die Master-Slave-Sicherheitsgruppe oder Firewall öffnet Port 3306 nicht
2. Ping-Fehler zwischen Master und Slave.
3. Das oben angegebene Kontopasswort ist falsch

Von nun an werden alle Hinzufügungen, Löschungen oder Änderungen auf dem Master-Server mit dem Slave-Server synchronisiert.

4. Vorschläge:

1. Denken Sie daran, dass der Slave-Server nur Lesevorgänge durchführt, keine Hinzufügungen, Löschungen oder Änderungen. Behalten Sie die Datensynchronisierung bei, sodass bei einem Ausfall ein anderer Server übernehmen kann Tatsächlich gehen einige der neuesten Daten des Master-Servers definitiv verloren, wenn er ausfällt.
2. Die Bandbreite des Slave-Servers muss >= der des Master-Servers sein, um die Synchronisationsverzögerung zu minimieren. Wenn es sich um eine kleine Wasserleitung handelt, wird die Synchronisation natürlich einen Schritt langsamer sein.

Das obige ist der detaillierte Inhalt vonWas ist die Lese-Schreib-Trennung von MySQL? Wie richte ich die Master-Slave-Datenbank ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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