Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Methode zur Implementierung eines Datenbank-Master-Slave-Replikations-Failovers

PHP-Methode zur Implementierung eines Datenbank-Master-Slave-Replikations-Failovers

WBOY
WBOYOriginal
2023-05-15 19:42:09686Durchsuche

Mit der rasanten Entwicklung des Internets sind Datenbanken als wichtiger Bestandteil der Backend-Datenspeicherung von entscheidender Bedeutung für die hohe Verfügbarkeit und Leistungsoptimierung von Websites. Unter diesen ist die Master-Slave-Replikation eine häufig verwendete Datenbank-Hochverfügbarkeitslösung, die die Stabilität und Verfügbarkeit des Systems verbessern kann, ohne die Dienste zu beeinträchtigen.

In diesem Artikel wird hauptsächlich die Verwendung von PHP zur Implementierung von Master-Slave-Replikation und Failover vorgestellt.

1. Das Grundprinzip der Master-Slave-Replikation

Master-Slave-Replikation bezieht sich auf die Synchronisierung aller Daten einer Master-Datenbank mit mehreren Slave-Datenbanken. Die Master-Datenbank kann Daten lesen und schreiben, während die Slave-Datenbank nur Lesevorgänge ausführen kann und die Daten in der Slave-Datenbank vollständig mit der Master-Datenbank übereinstimmen. Bei der Master-Slave-Replikation wird normalerweise die asynchrone Replikation verwendet. Nachdem sich die Daten in der Master-Datenbank geändert haben, wird das neu hinzugefügte Datenprotokoll aufgezeichnet, und dann liest der MySQL-Slave-Thread das Aktualisierungsprotokoll und wendet es auf die Slave-Datenbank an.

In der Master-Slave-Replikationsarchitektur verwenden wir normalerweise die Master-Bibliothek als Schreibserver und die Slave-Bibliothek als Leseserver. Da Schreibvorgänge im Allgemeinen mehr Ressourcen verbrauchen als Lesevorgänge, werden Schreibvorgänge in der Hauptbibliothek platziert, um eine Trennung von Lesen und Schreiben zu erreichen, wodurch der Druck auf die Hauptbibliothek verringert und die Leistung der Hauptbibliothek verbessert wird.

2. PHP implementiert die Master-Slave-Replikation

1. Konfigurieren Sie die Master-Slave-Replikation

In MySQL können wir die Datei my.cnf konfigurieren . Implementieren Sie die Master-Slave-Replikation. Die spezifischen Konfigurationsschritte lauten wie folgt:

1) Konfigurieren Sie den Hauptserver

[mysqld]

log-bin=mysql-bin #Enable Binärprotokollfunktion, Master-Slave-Replikation kann durchgeführt werden

server-id=1 #Konfigurieren Sie eine eindeutige Nummer, um sicherzustellen, dass die Nummer jedes Servers nicht wiederholt wird

2) Konfigurieren Sie den Slave-Server

# 🎜🎜#[mysqld]

server-id=2 #Konfigurieren Sie eine eindeutige Nummer, um sicherzustellen, dass die Nummer jedes Servers nicht wiederholt wird

#🎜 🎜#relay-log=mysql-relay-bin #Konfigurieren Sie die Relay-Protokolldatei, die zum Kopieren der Daten der Hauptbibliothek aus der Bibliothek verwendet wird

read_only=1 #Schreibvorgänge aus der Slave-Bibliothek verbieten # 🎜🎜#

2. Verbinden Sie die Master-Slave-Bibliothek über PHP.

Das Verbinden der Master-Slave-Datenbank in PHP unterscheidet sich eigentlich nicht vom Verbinden mit einer einzelnen Datenbank. Wir müssen nur angeben, welche Datenbank verwendet werden soll, wenn wir eine Verbindung zur Datenbank herstellen.

Wenn Sie einen Lesevorgang ausführen, verwenden Sie die Slave-Bibliothek zum Betrieb, und wenn Sie einen Schreibvorgang ausführen, verwenden Sie die Hauptbibliothek zum Betrieb. Der spezifische Code lautet wie folgt:

//Mit der Hauptbibliothek verbinden

$main_db = mysqli_connect("localhost", "root", "123456", "main_db" );#🎜🎜 #

//Verbindung aus der Bibliothek herstellen

$slave_db = mysqli_connect("localhost", "root", "654321", "slave_db");

// Daten aus der Slave-Bibliothek lesen

$result = mysqli_query($slave_db, "SELECT * FROM user");

//Daten in die schreiben Hauptbibliothek

mysqli_query($main_db, "INSERT INTO user(name, age) VALUES('tom', '25')");

3

# 🎜🎜#Wenn die Master-Datenbank unerwartet ausfällt, muss sie zur Dienstbereitstellung auf die Slave-Datenbank umschalten. Der Failover-Prozess erfordert die folgenden Schritte:

1. Wechseln Sie von der Slave-Bibliothek zur Hauptbibliothek.

Wenn die Hauptbibliothek keine Dienste bereitstellen kann, müssen wir von der Slave-Bibliothek wechseln Bibliothek an die Hauptbibliothek übertragen, damit diese die Dienste der Hauptbibliothek übernehmen kann. Die spezifischen Schritte sind wie folgt:

1) Führen Sie den Befehl in der Slave-Bibliothek aus: STOP SLAVE; um den Kopiervorgang aus der Slave-Bibliothek zu stoppen.

2) Kopieren Sie die Daten von der Slave-Bibliothek in die Hauptbibliothek.

3) Ändern Sie die Server-ID in der Slave-Bibliothek auf 1 und ändern Sie die Variablen log-bin und Relay-log in der Datei my.cnf. Auf diese Weise wird die Slave-Datenbank zur Master-Datenbank und beginnt mit der Bereitstellung von Diensten.

2. Ändern Sie die Konfiguration in der Anwendung.

Wenn in der Hauptbibliothek ein Failover auftritt, müssen Sie die Konfigurationsinformationen in der Anwendung ändern, damit sie zur wechseln kann neue Hauptbibliothek Dienstleistungen anbieten.

3. Wechsel nach Fehlerbeseitigung

Wenn die Hauptbibliothek den Betrieb wieder aufnimmt, ist es notwendig, die Hauptbibliothek zur Hauptbibliothek wiederherzustellen und die vorherige Slave-Bibliothek zur Slave-Bibliothek zu ändern Bibliothek zur Sicherung. Die spezifischen Schritte sind wie folgt:

1) Führen Sie den Befehl: STOP SLAVE in der Slave-Bibliothek aus, um den Kopiervorgang von der Slave-Bibliothek zu stoppen.

2) Synchronisieren Sie die neuesten Daten mit der Hauptdatenbank.

3) Führen Sie den Befehl in der Hauptbibliothek aus: CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PASSWORD='xxxx', MASTER_LOG_FILE='mysql-bin.000001' , MASTER_LOG_POS=156, die Slave-Bibliothek wird zur Master-Bibliothek.

Auf diese Weise wird nach der Wiederherstellung des Fehlers die Beziehung zwischen der Master- und der Slave-Bibliothek wieder hergestellt und geht in den normalen Arbeitsstatus über.

4. Zusammenfassung

Die Implementierung eines Datenbank-Master-Slave-Replikations-Failovers über PHP kann die Zuverlässigkeit und Verfügbarkeit des Systems verbessern, gleichzeitig den Anwendungsdruck verringern und die Gesamtleistung des Systems verbessern. In der Praxis muss auf den Failover-Prozess und die Anwendungskonfiguration geachtet werden, um sicherzustellen, dass der gesamte Switchover-Prozess reibungslos verläuft und die Datenwiederherstellung und Fehlerwiederherstellung des gesamten Systems in kürzester Zeit abgeschlossen werden.

Das obige ist der detaillierte Inhalt vonPHP-Methode zur Implementierung eines Datenbank-Master-Slave-Replikations-Failovers. 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