Was ist MySQL-Master-Slave-Replikation?
In MySQL bedeutet Master-Slave-Replikation, dass Daten von einem MySQL-Datenbankserver-Masterknoten auf einen oder mehrere Slave-Knoten kopiert werden können. Standardmäßig wird die asynchrone Replikation verwendet. Die Vorteile der Verwendung der Master-Slave-Replikation: 1. Lassen Sie die Master-Datenbank für das Schreiben und die Slave-Datenbank für das Lesen verantwortlich sein. Wenn die Master-Datenbank die Tabelle sperrt, kann der normale Betrieb des Unternehmens durch Lesen vom Slave sichergestellt werden 2. Hot-Backup von Daten ist möglich. 3. Durch die Erweiterung der Architektur kann die Häufigkeit des Festplatten-E/A-Zugriffs verringert und die E/A-Leistung einer einzelnen Maschine verbessert werden.
Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.
Was ist MySQL-Master-Slave-Replikation?
MySQL-Master-Slave-Replikation bedeutet, dass Daten von einem MySQL-Datenbankserver-Masterknoten auf einen oder mehrere Slave-Knoten kopiert werden können. MySQL verwendet standardmäßig die asynchrone Replikation, sodass der Slave-Knoten nicht ständig auf den Master-Server zugreifen muss, um seine eigenen Daten zu aktualisieren. Datenaktualisierungen können über eine Remote-Verbindung durchgeführt werden. Der Slave-Knoten kann alle Datenbanken oder bestimmte Datenbanken kopieren die Masterdatenbank oder bestimmte Tabellen.
Warum brauchen wir eine Master-Slave-Replikation?
1. In einem System mit komplexem Geschäft gibt es ein Szenario, in dem eine SQL-Anweisung die Tabelle sperren muss, was dazu führt, dass der Lesedienst vorübergehend nicht verwendet werden kann, was sich stark auf das laufende Geschäft auswirkt Durch die Replikation ist die Master-Bibliothek für das Schreiben und die Slave-Bibliothek für das Lesen verantwortlich. Auf diese Weise kann der normale Betrieb des Unternehmens durch Lesen aus der Slave-Bibliothek sichergestellt werden, auch wenn die Hauptbibliothek die Tabelle sperrt.
2. Hot-Backup von Daten
3. Das Geschäftsvolumen wird immer größer und die Häufigkeit des E/A-Zugriffs ist zu hoch, was von einer einzelnen Maschine nicht erfüllt werden kann. Derzeit wird Multi-Datenbank-Speicher verwendet, um die Häufigkeit des Festplatten-E/A-Zugriffs zu reduzieren und die I/O-Leistung einer einzelnen Maschine verbessern.
MySQL-Replikationsprinzip
Prinzip:
(1) Der Master-Server zeichnet die Datenänderungen im Binärprotokoll auf. Wenn sich die Daten auf dem Master ändern, werden die Änderungen in das Binärprotokoll geschrieben.
(2) Der Slave-Server erkennt, ob sich das Master-Binärprotokoll innerhalb eines bestimmten Zeitintervalls geändert hat. Wenn es sich ändert, startet er einen I/OThread, um das Master-Binärereignis anzufordern
(3) Gleichzeitig Der Master-Knoten startet einen Dump-Thread, um binäre Ereignisse an ihn zu senden und im lokalen Relay-Protokoll des Slave-Knotens zu speichern. Der Slave-Knoten startet den SQL-Thread, um das Binärprotokoll aus dem Relay-Protokoll zu lesen und wiederzugeben Es wird lokal hergestellt, um sicherzustellen, dass die Daten mit denen des Hauptknotens übereinstimmen. Schließlich wechseln I/OThread und SQLThread in den Ruhezustand und warten auf das nächste Mal, wenn sie aufgeweckt werden.
Das heißt:
- Die Slave-Bibliothek generiert zwei Threads, einen E/A-Thread und einen SQL-Thread.
- Der E/A-Thread fordert das Binlog der Hauptbibliothek an und schreibt das erhaltene Binlog in der lokalen Relay-Log-Datei (Relay-Log); und nacheinander in SQL-Anweisungen zur Ausführung geparst;
- Hinweis:
– Der Master zeichnet die Operationsanweisungen im Binlog-Protokoll auf und erteilt dann dem Slave die Remote-Verbindungsberechtigung (der Master muss die Binlog-Binärdatei aktivieren). Log-Funktion; normalerweise aus Gründen der Datensicherheit aktiviert der Slave auch die Binlog-Funktion.
–Slave öffnet zwei Threads: IO-Thread und SQL-Thread. Darunter: Der E/A-Thread ist dafür verantwortlich, den Binlog-Inhalt des Masters in das Relay-Protokoll zu lesen; der SQL-Thread ist dafür verantwortlich, den Binlog-Inhalt aus dem Relay-Protokoll zu lesen und ihn in der Slave-Datenbank zu aktualisieren, um sicherzustellen, dass der Slave Daten und Stammdaten werden konsistent gepflegt.
–Für die MySQL-Replikation sind mindestens zwei MySQL-Dienste erforderlich. Natürlich können MySQL-Dienste auf verschiedenen Servern verteilt sein, oder es können mehrere Dienste auf einem Server gestartet werden.
–Die MySQL-Replikation ist am besten geeignet, um sicherzustellen, dass die MySQL-Versionen auf dem Master- und dem Slave-Server gleich sind (wenn die Versionen nicht konsistent sein können, stellen Sie sicher, dass die Version des Master-Knotens niedriger ist als die Version des Slave-Knotens )
–Master und Slave Die Zeit zwischen den beiden Knoten muss synchronisiert werden Anweisung und stellt alle Bedingungen für den verbundenen Benutzer bereit (Benutzer, Passwort, Port, IP) und teilt der Slave-Bibliothek die Startposition des Binärprotokolls (Dateiname, Positionsnummer) mit. Stellen Sie eine Verbindung her zwischen dem IO-Thread der Slave-Bibliothek und dem Dump-Thread der Hauptbibliothek.
3. Basierend auf dem Dateinamen und der Positionsnummer, die von der Anweisung „Change Master to“ aus der Slave-Bibliothek bereitgestellt werden, initiiert der E/A-Thread eine Binlog-Anfrage an die Master-Bibliothek. 4. Der Dump-Thread der Hauptbibliothek sendet das lokale Binlog in Form von Ereignissen gemäß der Anforderung der Slave-Bibliothek an den E/A-Thread der Slave-Bibliothek.
5. Binlog-Ereignisse vom Bibliotheks-IO-Thread empfangen und im lokalen Relay-Log speichern. Die übertragenen Informationen werden in master.info aufgezeichnet
6. Wenden Sie Relay-Log aus dem SQL-Thread der Datenbank an und zeichnen Sie die angewendeten Informationen in Relay-Log.info auf. Standardmäßig wird das angewendete Relay automatisch gelöscht
(1) Ein Master und ein Slave. (2) Master-Master-Kopie. (3) Ein Master und mehrere Slaves. (4) Mehrere Master und eins Von
(5) Kaskadenreplikation
MySQL-Master-Slave-Synchronisationsverzögerungsanalyse
MySQLs Master-Slave-Replikation ist ein Single-Threaded-Vorgang , und die Hauptbibliothek führt alle von und DML generierten Protokolle in das Binlog aus. Da das Binlog sequentiell geschrieben wird, ist es sehr effizient, dass der SQL-Thread-Thread die DDL- und DML-Operationsereignisse der Hauptbibliothek im Slave wiedergibt. Die E/A-Operationen von DML und DDL sind zufällig und nicht sequentiell, daher sind die Kosten viel höher. Da der SQL-Thread andererseits auch Single-Threaded ist, ist die Anzahl der generierten DMLs höher, wenn die Parallelität der Hauptbibliothek hoch ist Die Verarbeitungsgeschwindigkeit überschreitet die Kapazität des SQL-Threads des Slaves oder es kommt zu einer Verzögerung, wenn im Slave eine große Abfrageanweisung vorhanden ist, die eine Sperrwartezeit verursacht.
Lösung: 1. Die Implementierung der Geschäftspersistenzschicht übernimmt eine Subdatenbankarchitektur, und der MySQL-Dienst kann parallel erweitert werden, um den Druck zu verteilen.
2. Getrenntes Lesen und Schreiben in einer einzigen Bibliothek, einem Master und mehreren Slaves, Master-Schreibvorgängen und Slave-Lesevorgängen, um den Druck zu verteilen. Auf diese Weise ist der Druck der Slave-Bibliothek höher als der der Hauptbibliothek, wodurch die Hauptbibliothek geschützt wird.
4. MySQL wird für verschiedene Unternehmen physisch auf verschiedenen Maschinen platziert, um den Druck zu verteilen.
5. Verwenden Sie ein besseres Hardwaregerät als die Hauptbibliothek, da der Slave-MySQL weniger Druck hat und die Verzögerung natürlich kleiner wird.6. Verwenden Sie leistungsstärkere Hardware-Geräte
[Verwandte Empfehlungen: MySQL-Video-Tutorial]
Das obige ist der detaillierte Inhalt vonWas ist MySQL-Master-Slave-Replikation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Es gibt drei Hauptmethoden, um Umgebungsvariablen in PHP festzulegen: 1. Globale Konfiguration über php.ini; 2. durch einen Webserver (z. B. SetEnv von Apache oder FastCGI_Param von Nginx); 3. Verwenden Sie die Funktion Putenv () in PHP -Skripten. Unter ihnen eignet sich Php.ini für globale und selten ändernde Konfigurationen. Die Webserverkonfiguration eignet sich für Szenarien, die isoliert werden müssen, und Putenv () ist für temporäre Variablen geeignet. Die Persistenz -Richtlinien umfassen Konfigurationsdateien (z. B. Php.ini oder Webserverkonfiguration), .env -Dateien werden mit der DOTENV -Bibliothek und dynamische Injektion von Variablen in CI/CD -Prozessen geladen. Sicherheitsmanagement sensible Informationen sollten hart codiert werden, und es wird empfohlen.

Bei der Auswahl eines geeigneten PHP -Frameworks müssen Sie nach den Projektanforderungen umfassend berücksichtigen: Laravel ist für die schnelle Entwicklung geeignet und bietet eloquentorm- und Blade -Vorlagenmotoren, die für den Datenbankbetrieb und das dynamische Formrending bequem sind. Symfony ist flexibler und für komplexe Systeme geeignet. CodeIgniter ist leicht und für einfache Anwendungen mit hohen Leistungsanforderungen geeignet. 2. Um die Genauigkeit von KI-Modellen sicherzustellen, müssen wir mit einem qualitativ hochwertigen Datentraining, einer angemessenen Auswahl von Bewertungsindikatoren (wie Genauigkeit, Rückruf, F1-Wert), regelmäßiger Leistungsbewertung und Modellabstimmung und sicherstellen, dass die Codequalität durch Testen und Integrationstests der Code sichergestellt wird, um die Eingabedaten kontinuierlich zu überwachen. 3.. Viele Maßnahmen sind erforderlich, um die Privatsphäre der Benutzer zu schützen: Verschlüsseln und speichern sensible Daten (wie AES

PHP spielt die Rolle des Connector- und Brain Center im intelligenten Kundendienst, der für die Verbindung von Front-End-Eingaben, Datenbankspeicher und externen KI-Diensten verantwortlich ist. 2. Bei der Implementierung ist es notwendig, eine mehrschichtige Architektur zu erstellen: Das Front-End empfängt Benutzernachrichten, die PHP-Back-End-Vorverarbeitete und Routes-Anfragen, stimmt zunächst mit der lokalen Wissensbasis überein und verpasst sie, rufen Sie externe KI-Dienste wie OpenAI oder Dialogflow an, um intelligente Antwort zu erhalten. 3. Die Sitzungsverwaltung wird von PHP an MySQL und andere Datenbanken geschrieben, um die Kontext -Kontinuität zu gewährleisten. 4. Integrierte KI -Dienste müssen mit Guzzle HTTP -Anfragen senden, APIKEYs sicher speichern und eine gute Aufgabe der Fehlerbehandlung und -antwortanalyse durchführen. 5. Datenbankdesign muss Sitzungen, Nachrichten, Wissensbasis und Benutzertabellen enthalten, vernünftigerweise Indizes erstellen, Sicherheit und Leistung sicherstellen und Roboterspeicher unterstützen

Um PHP -Container zur Unterstützung der automatischen Konstruktion zu ermöglichen, liegt der Kern in der Konfiguration des Continuous Integration (CI) -Prozesses. 1. Verwenden Sie Dockerfile, um die PHP -Umgebung zu definieren, einschließlich grundlegender Bild-, Erweiterungsinstallations-, Abhängigkeitsmanagement- und Berechtigungseinstellungen. 2. Konfigurieren Sie CI/CD-Tools wie GitLabci und definieren Sie die Erstell-, Test- und Bereitstellungsstadien über die Datei .gitlab-ci.yml, um automatische Konstruktion, Test und Bereitstellung zu erreichen. 3.. Integrieren Sie Testframeworks wie Phpunit, um sicherzustellen, dass die Tests automatisch nach Codeänderungen ausgeführt werden. 4. Verwenden Sie automatisierte Bereitstellungsstrategien wie Kubernetes, um die Bereitstellungskonfiguration durch die Datei bereitzustellen. 5. Dockerfile optimieren und mehrstufige Konstruktionen übernehmen

Die Kernidee von PHP, das KI für die Analyse von Videoinhalten kombiniert, besteht darin, PHP als Backend "Kleber" zu dienen, zuerst Video in Cloud -Speicher hochzuladen und dann AI -Dienste (wie Google CloudVideoai usw.) für eine asynchrone Analyse aufzurufen. 2. PHP analysiert die JSON -Ergebnisse, extrahieren Sie Personen, Objekte, Szenen, Sprach- und andere Informationen, um intelligente Tags zu generieren und in der Datenbank zu speichern. 3.. 4. Häufige Herausforderungen sind eine große Dateiverarbeitung (direkt über die Cloud-Speicherung mit vorsignierten URLs übertragen), asynchrone Aufgaben (Einführung von Nachrichtenwarteschlangen), Kostenkontrolle (On-Demand-Analyse, Budgetüberwachung) und Ergebnisoptimierung (Label-Standardisierung); 5. Smart Tags verbessern sich erheblich visuell

Der Aufbau einer unabhängigen Umgebung für PHP -Aufgabencontainer kann über Docker implementiert werden. Die spezifischen Schritte sind wie folgt: 1. Installieren Sie Docker und DockerComponpose als Grundlage; 2. Erstellen Sie ein unabhängiges Verzeichnis, um Dockerfile und Crontab -Dateien zu speichern. 3. Schreiben Sie Dockerfile, um die PHPCLI -Umgebung zu definieren und Cron und die erforderlichen Erweiterungen zu installieren. 4. Schreiben Sie eine Crontab -Datei, um Zeitaufgaben zu definieren. 5. Schreiben Sie ein Docker-compose.yml-Mount-Skriptverzeichnis und konfigurieren Sie Umgebungsvariablen. 6. Starten Sie den Container und überprüfen Sie das Protokoll. Im Vergleich zu Timing -Aufgaben in Webcontainern haben unabhängige Container die Vorteile der Ressourcenisolation, der reinen Umgebung, der starken Stabilität und einer einfachen Expansion. Gewährleistung der Protokollierung und Fehleraufnahme

Wählen Sie die Protokollierungsmethode aus: In der frühen Phase können Sie den integrierten Fehler () für PHP verwenden. Wechseln Sie nach der Erweiterung des Projekts auf reife Bibliotheken wie Monolog, unterstützen Sie mehrere Handler und Protokollebenen und stellen Sie sicher, dass das Protokoll Zeitstempel, Ebenen, Dateizeilennummern und Fehlerdetails enthält. 2. Entwurfsstruktur: Eine kleine Menge an Protokollen kann in Dateien gespeichert werden. Wenn eine große Anzahl von Protokollen vorhanden ist, wählen Sie eine Datenbank, wenn eine große Anzahl von Analysen vorhanden ist. Verwenden Sie MySQL/Postgresql zu strukturierten Daten. Elasticsearch Kibana wird für semi-strukturierte/unstrukturierte empfohlen. Gleichzeitig wird es für Backup- und regelmäßige Reinigungsstrategien formuliert. 3. Entwicklungs- und Analyseschnittstelle: Sie sollten Such-, Filter-, Aggregations- und Visualisierungsfunktionen haben. Es kann direkt in Kibana integriert werden oder die PHP-Framework-Diagrammbibliothek zur Entwicklung der Selbstentwicklung verwenden und sich auf die Einfachheit und einfache Schnittstelle konzentrieren.

Um das Problem der Inkonsistenz zwischen PHP -Umgebung und Produktion zu lösen, besteht der Kern darin, die Container- und Orchestrierungsfunktionen von Kubernetes zu verwenden, um die Umweltkonsistenz zu erreichen. Die spezifischen Schritte sind wie folgt: 1. Erstellen Sie ein einheitliches Docker -Bild, einschließlich aller PHP -Versionen, Erweiterungen, Abhängigkeiten und Webserverkonfigurationen, um sicherzustellen, dass dasselbe Bild in der Entwicklung und Produktion verwendet wird. 2. Verwenden Sie Kubernetes 'configMap und geheim, um nicht sensitive und empfindliche Konfigurationen zu verwalten und eine flexible Umstellung verschiedener Umgebungskonfigurationen durch Volumenmontage oder Umgebungsvariableninjektion zu erreichen. 3. Gewährleistung der Konsistenz des Anwendungsverhaltens durch Unified Kubernetes -Deployment -Definitionsdateien (z. B. Bereitstellung und Dienst) und in die Versionskontrolle einbeziehen; 4.
