Vorwort MySQL ist ein schnelles, leistungsstarkes, mehrthreadiges, relationales Datenbankverwaltungssystem (RDBMS) mit Open Source, das auf einer Client/Server-Struktur basiert. Es begann 1979 und war ursprünglich das UNIREG-Datenbanksystem, das Michael Widenius für das schwedische Unternehmen TcX entwickelte. Zu dieser Zeit verfügte UNIREG nicht über eine SQL-Schnittstelle (Structured Query Language), was seine Anwendung einschränkte. Im Mai 1996 entwickelte Widenius die erste Version von MySQL und begann, sie öffentlich im Internet zu veröffentlichen. Die Entwickler von MySQL haben sich von Anfang an auf die Leistung konzentriert und keine Mühen gescheut, was die Funktionen angeht. Bis heute bleibt MySQL seinem Wesen treu, wobei hohe Geschwindigkeit und hohe Leistung die Hauptprinzipien sind. Im Laufe der Zeit wurden zu MySQL auch erweiterte Funktionen großer Datenbankprodukte hinzugefügt, wie gespeicherte Prozeduren, Ansichten, Trigger usw., die den Einsatz und die Anwendung in Datenbanksystemen auf Unternehmensebene ermöglichten[1]. Im Oktober 2008 erwarb SUN MySQL AB und begann, in den Open-Source-Bereich einzusteigen. Mit der Open Source des Schwergewichtsbetriebssystems Solaris wird der Anteil von SUNMySQL im Datenbankmarkt weiter steigen. Daher hat die Bereitstellung eines MySQL-Serverclusters mit Lastausgleichsfunktion in einer Produktionsumgebung große praktische Bedeutung für die Verbesserung der Geschwindigkeit, Stabilität und Skalierbarkeit von Datenbankanwendungssystemen in Unternehmen und kann zudem die Investitionskosten von Anwendungssystemen wirksam senken. 1. Grundideen des Lastausgleichs Versuchen Sie in einem Servercluster die Last möglichst gleichmäßig zu verteilen. Normalerweise wird ein Load Balancer (spezielles Hardwaregerät) auf der Vorderseite des Servers eingerichtet. MySQL-Load Balancing erfordert normalerweise Datensharding (Aufteilen der Daten in kleine Teile und Speichern dieser in verschiedenen Datenbankknoten) und Replikation. Versuchen Sie in einem Servercluster die Last möglichst gleichmäßig zu verteilen. Normalerweise wird ein Load Balancer (spezielles Hardwaregerät) auf der Vorderseite des Servers eingerichtet. MySQL-Load Balancing erfordert normalerweise Datensharding (Aufteilen der Daten in kleine Teile und Speichern dieser in verschiedenen Datenbankknoten) und Replikation. Der Hauptbeitrag des Lastenausgleichs besteht neben der gleichmäßigen Verteilung der Datenbankanforderungen in der Verwaltung von Lese-/Schreibstrategien. Beim Verteilen von Anforderungen ermittelt es, welche Knoten beschreibbar und lesbar sind, und sendet die Anforderung dann an den angegebenen Knoten, um den Vorgang auszuführen. 2. Möglichkeiten zur Implementierung des Lastenausgleichs 1. MySQL-Lese-/Schreibtrennung Bei der Replikation von MySQL werden mehrere Datenkopien (Standby-Datenbanken) generiert. Um den Serverdruck zu reduzieren, wird die Standby-Datenbank zum Verarbeiten von Lesevorgängen verwendet. Die primäre Datenbank kann Lese- und Schreibvorgänge gleichzeitig verarbeiten, was eine gängige Strategie für MySQL-Cluster ist, um eine Trennung von Lesen und Schreiben zu erreichen. Da die Replikation der Standby-Datenbank asynchron erfolgt und nicht in Echtzeit synchronisiert werden kann, liegt die Hauptschwierigkeit bei der Lese- und Schreibtrennung in den fehlerhaften Daten in der Standby-Datenbank. Wird zum Lesen eine Standby-Datenbank verwendet, dürfen die Echtzeitanforderungen an die Daten in der Regel nicht zu hoch sein. In dieser Hinsicht bietet MySQL mehrere allgemeine Methoden zur Lese-/Schreibtrennung, z. B. abfragebasierte Lese-/Schreibtrennung, auf schmutzigen Daten basierend, sitzungsbasiert usw. Wenn Sie interessiert sind, können Sie weiter studieren. Die von MySQL festgelegte Lese-/Schreibtrennung reduziert die Anzahl der Anforderungen an die primäre Datenbank und sendet eine große Anzahl von Lesevorgängen an die Sicherungsdatenbank, um einen Lastenausgleich zu erreichen. 2. DNS ändern In High Concurrency Load Balancing (I) – Enterprise Architecture Analysis und DNS werden DNS und die Implementierung von Lastausgleich durch DNS ausführlich vorgestellt. Kurz gesagt werden einem Domänennamen n Server-IPs zugewiesen und Anfragen werden zur Verarbeitung an verschiedene IP-Server gesendet, die auf unterschiedlichen Identifikationsmerkmalen der Anfragen basieren. 3. Einführung von Middleware MySQL stellt offiziell eine MySQL-Lade-Middleware, mysql_proxy, bereit, die ebenfalls auf dem Server installiert werden muss und bei der die Konfigurationsdatei (MySQL-Server-IP) geändert werden muss. Sie ähnelt im Wesentlichen nginx und ist ebenfalls ein Proxyserver. 4. Verwenden Sie MySQL zum Kopieren und Umleiten von Abfragevorgängen Durch die Verwendung der Master-Slave-Replikation von MySQL können Aktualisierungsvorgänge und Abfragevorgänge effektiv umgeleitet werden. Die konkrete Implementierung besteht aus einem Master-Server, der für Aktualisierungsvorgänge zuständig ist, und mehreren Slave-Servern, die für Abfragevorgänge zuständig sind. Die Datensynchronisierung wird durch Replikation zwischen Master und Slaves erreicht. Um die Verfügbarkeit sicherzustellen und unterschiedliche Indizes zu erstellen, die den Anforderungen unterschiedlicher Abfragen gerecht werden, werden mehrere Slave-Server verwendet. Wenn nicht alle Tabellen zwischen Master und Slave repliziert werden müssen, können Sie auf dem Master-Server einen virtuellen Slave-Server erstellen, die Tabellen, die auf den Slave-Server repliziert werden müssen, der Blackhole-Engine zuweisen und dann den Parameter replicate-do-table so definieren, dass nur diese Tabellen repliziert werden. Dadurch werden die Binlogs herausgefiltert, die repliziert werden müssen, und die Bandbreite für die Übertragung der Binlogs wird reduziert. Da der virtuelle Slave-Server nur das Binärprotokoll filtert und tatsächlich keine Daten aufzeichnet, sind die Auswirkungen auf die Leistung des Hauptdatenbankservers sehr begrenzt. Das Problem bei Abfragen durch Replikation und Shunting besteht darin, dass bei häufigen Aktualisierungen der Master-Datenbank oder bei einem Netzwerkproblem die Daten zwischen Master und Slave abweichen können, was zu Einwänden bei den Abfrageergebnissen führen kann. Dies muss bei der Entwicklung der Anwendung berücksichtigt werden. 5. Verwenden Sie eine verteilte Datenbankarchitektur MySQL unterstützt verteilte Transaktionen seit 5.0.3. Derzeit werden verteilte Transaktionen nur für die Innodb-Speicher-Engine unterstützt. Die verteilte Datenbankarchitektur eignet sich für große Datenmengen und hohe Lasten und verfügt über eine gute Skalierbarkeit und hohe Verfügbarkeit. Durch die Verteilung der Daten auf mehrere Server wird ein Lastenausgleich zwischen mehreren Servern erreicht und somit die Effizienz der Zugriffsausführung verbessert. Bei der Implementierung können Sie die Cluster-Funktion von MySQL (NDB-Engine) verwenden oder Ihr eigenes Programm schreiben, um globale Transaktionen zu implementieren. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Lassen Sie uns im Detail darüber sprechen, wie der NodeJS-Prozess beendet wird
>>: Implementierung der Formatierung von Partitionen und der Einbindung in Centos7
Ich bin schon einmal auf das Problem gestoßen, da...
Wie installiere ich MySQL 5.7 in Ubuntu 16.04? In...
Dieser Artikel stellt die von Webdesign-Meistern ...
Inhaltsverzeichnis 1. Anfrage erhalten: 2. Anfrag...
In diesem Artikelbeispiel wird der spezifische Ja...
1. Unterschiede in der Netzwerkkonfiguration zwis...
1 Einleitung Beim Gestalten einer Datenbank ist e...
Einführung in den Polling-Algorithmus Viele Leute...
Inhaltsverzeichnis 1. Einleitung 2. Warum brauche...
0. Systemanforderungen CPU I5-10400F oder höher S...
Inhaltsverzeichnis Vorwort 1. Installieren Sie da...
Inhaltsverzeichnis Problembeschreibung Frontend-S...
In diesem Artikel wird der spezifische Code von j...
Ein neues Fenster wird geöffnet. Vorteile: Wenn d...
<br />Ich arbeite seit mehreren Jahren im Fr...