MySQL Cluster ist eine äußerst praktische, skalierbare, leistungsstarke und hochredundante Version von MySQL, die für verteilte Computerumgebungen geeignet ist Forschung und Entwicklung Die ursprüngliche Absicht des Designs besteht darin, die strengsten Anwendungsanforderungen in vielen Branchen zu erfüllen. Diese Anwendungen erfordern häufig eine Zuverlässigkeit des Datenbankbetriebs von 99,999 %. MySQL Cluster ermöglicht die Bereitstellung von „In-Memory“-Datenbankclustern in Shared-Nothing-Systemen. Durch die Shared-Nothing-Architektur kann das System kostengünstige Hardware verwenden und stellt keine besonderen Anforderungen an Software und Hardware. Da außerdem jede Komponente über einen eigenen Speicher und eine eigene Festplatte verfügt, gibt es keinen Single Point of Failure.
Tatsächlich integriert MySQL Cluster eine Speicher-Cluster-Speicher-Engine namens NDB in den Standard-MySQL-Server. Es besteht aus einer Reihe von Computern, auf denen jeweils ein oder mehrere Prozesse ausgeführt werden, zu denen ein MySQL-Server, ein Datenknoten, ein Verwaltungsserver und ein proprietäres Datenzugriffsprogramm gehören können.
MySQL-Cluster bietet die Möglichkeit, die NDB-Speicher-Engine mit einer Vielzahl von Failover- und Lastausgleichsoptionen zu konfigurieren. Am einfachsten ist dies jedoch auf der Speicher-Engine auf Cluster-Ebene. Das Folgende ist das MySQL-Clusterstrukturdiagramm:
MySQL besteht aus struktureller Sicht aus drei Arten von Knoten (Computern oder Prozessen). , nämlich:
Verwaltungsknoten: Wird verwendet, um Konfigurations-, Verwaltungs-, Vermittlungs- und andere Funktionen für andere Knoten im gesamten Cluster bereitzustellen. Theoretisch reicht es aus, Dienste über einen Server bereitzustellen.
Datenknoten: Der Kern des MySQL-Clusters, der Daten und Protokolle speichert und verschiedene Verwaltungsdienste für Daten bereitstellt. Wenn mehr als zwei Knoten vorhanden sind, kann die Hochverfügbarkeitsgarantie des Clusters erreicht werden. Wenn die Anzahl der DB-Knoten zunimmt, verlangsamt sich die Verarbeitungsgeschwindigkeit des Clusters.
SQL-Knoten (API): Wird für den Zugriff auf MySQL-Cluster-Daten und die Bereitstellung externer Anwendungsdienste verwendet. Durch das Hinzufügen von API-Knoten wird die Geschwindigkeit des gleichzeitigen Zugriffs und der Gesamtdurchsatz des gesamten Clusters verbessert. Der Knoten kann auf dem Webanwendungsserver, auf einem dedizierten Server oder auf demselben Server wie die Datenbank bereitgestellt werden.
2 NDB-Engine
MySQL Cluster verwendet eine dedizierte speicherbasierte Speicher-Engine – NDB-Engine. Der Vorteil davon ist, dass es schnell ist und keinen Festplatten-E/A-Engpass aufweist. Da es jedoch auf dem Speicher basiert, ist die Größe der Datenbank durch den Gesamtspeicher des Systems begrenzt. Wenn der MySQL-Server, auf dem NDB ausgeführt wird, über ausreichend Speicher verfügen muss, z. B. 4G, 8G oder sogar 16G. Die NDB-Engine ist verteilt und kann auf mehreren Servern konfiguriert werden, um Datenzuverlässigkeit und Skalierbarkeit zu erreichen. Theoretisch kann durch die Konfiguration von zwei NDB-Speicherknoten die Redundanz des gesamten Datenbankclusters erreicht und das Single-Point-of-Failure-Problem gelöst werden. .
2.1 Mängel
Basierend auf dem Speicher ist die Größe der Datenbank durch die Gesamtspeichergröße des Clusters begrenzt
Aufgrund des Speichers können Daten nach einem Stromausfall verloren gehen. Dies muss durch Tests überprüft werden.
Mehrere Knoten implementieren Kommunikation, Datensynchronisation, Abfrage und andere Vorgänge über das Netzwerk, sodass die Integrität von der Netzwerkgeschwindigkeit beeinflusst wird.
Daher ist die Geschwindigkeit auch relativ langsam
2.2 Vorteile
Mehrere Knoten können an verschiedenen geografischen Standorten verteilt werden, daher ist es auch eine Lösung zur Implementierung einer verteilten Datenbank.
Die Skalierbarkeit ist sehr gut und der Datenbankcluster kann durch Hinzufügen von Knoten erweitert werden.
Die Redundanz ist sehr gut. Es liegen vollständige Datenbankdaten auf mehreren Knoten vor, sodass Knotenausfallzeiten nicht zu Dienstunterbrechungen führen.
Die Kosten für die Implementierung von Hochverfügbarkeit sind relativ gering. Im Gegensatz zu herkömmlichen Hochverfügbarkeitslösungen, die gemeinsam genutzte Speichergeräte und dedizierte Software erfordern, kann NDB implementiert werden, solange genügend Speicher vorhanden ist.
2. Clusteraufbau
Ein einfachstes MySQL-Clustersystem wird als Root-Konto ausgeführt. Dieser MySQL-Cluster enthält einen Verwaltungsknoten, zwei Datenknoten und zwei SQL-Knoten. Die Namen und IPs der virtuellen Maschinen lauten wie folgt:
Verwaltungsknoten
mysql-mgm
192.168.124.141
Datenknoten1
mysql-ndbd-1
192.168.124.142
Datenknoten2
mysql-ndbd-2
192.168.124.143
SQLKnoten1
mysql-sql-1
192.168. 124.144
SQLKnoten2
mysql-sql-2
192.168.124.145
>
Bitte konfigurieren Sie die Konfigurationselemente hier jeweils auf den drei virtuellen Maschinen. 1. Installieren Sie die virtuelle Maschine
Das Betriebssystem der virtuellen Maschine installiert die x86_64-Version von CentOS 6.4, verwendet das NAT-Netzwerk und installiert auch VMware-Tools Die spezifische Installationsmethode finden Sie hier. Hier nicht näher erläutert.
2. MySQL-Cluster kopieren
Laden Sie die folgende Version von MySQL-Cluster herunter:
http://www.php.cn/Kopieren Sie das heruntergeladene komprimierte Paket in das Verzeichnis /root/Downloads der virtuellen Maschine und führen Sie dann den folgenden Befehl in der Shell aus:
cd /root/Downloads
tar -xvzf mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64 /usr/local/mysql
Nach dem Login kopieren
3. Schalten Sie die Sicherheitsrichtlinie aus
chkconfig --level 35 iptables off
Nach dem Login kopieren
Einschalten Deaktivieren Sie die iptables-Firewall (oder schalten Sie die Ports 1186 und 3306 der Firewall ein) und führen Sie den folgenden Befehl in der Shell aus:
gedit /etc/selinux/config
Nach dem Login kopieren
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
Nach dem Login kopieren
Schalten Sie SELinux aus und führen Sie den folgenden Befehl in der Shell aus:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
gedit config.ini
Installieren Sie den Verwaltungsknoten, es ist keine mysqld-Binärdatei erforderlich. Nur das MySQL-Cluster-Serverprogramm (ndb_mgmd) und das Listening-Client-Programm (ndb_mgm) sind erforderlich. Führen Sie den folgenden Befehl in der Shell aus:
Connected to Management Server at: localhost:1186
2 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.
Nach dem Login kopieren
Nach dem Login kopieren
<🎜><🎜><🎜>4. SQL-Knoten konfigurieren (<🎜><🎜>192.168.124.144 <🎜><🎜>, 192.168.124.145) <🎜><🎜><🎜><🎜><🎜>1. MySQL-Gruppe und Benutzer hinzufügen <🎜><🎜><🎜>Führen Sie den folgenden Befehl in der Shell aus: <🎜>
shell> /etc/init.d/mysql.server stop
Shutting down MySQL... SUCCESS!
Nach dem Login kopieren
Nach dem Login kopieren
<🎜><🎜><🎜><🎜><🎜>< 🎜>2. Konfigurieren Sie die my.cnf-Konfigurationsdatei<🎜 ><🎜><🎜>Führen Sie den folgenden Befehl in der Shell aus: <🎜>
<🎝><🎜 ><🎜><🎜><🎜><🎜>Der Inhalt der Konfigurationsdatei my.cnf lautet wie folgt: <🎜>
<🎝><🎜><🎜><🎜><🎜><🎜><🎜>3. Erstellen Sie die Systemdatenbank <🎜> <🎜><🎜>Führen Sie den folgenden Befehl in der Shell aus: <🎜>
Das obige ist der detaillierte Inhalt vonMySQL-Optimierung – Detaillierte Erläuterung der Schritte zum Cluster-Building-Code (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Erklärung dieser Website
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
Fähigkeiten zur Verarbeitung von Big-Data-Strukturen: Chunking: Teilen Sie den Datensatz auf und verarbeiten Sie ihn in Blöcken, um den Speicherverbrauch zu reduzieren. Generator: Generieren Sie Datenelemente einzeln, ohne den gesamten Datensatz zu laden, geeignet für unbegrenzte Datensätze. Streaming: Lesen Sie Dateien oder fragen Sie Ergebnisse Zeile für Zeile ab, geeignet für große Dateien oder Remote-Daten. Externer Speicher: Speichern Sie die Daten bei sehr großen Datensätzen in einer Datenbank oder NoSQL.
Die MySQL-Abfrageleistung kann durch die Erstellung von Indizes optimiert werden, die die Suchzeit von linearer Komplexität auf logarithmische Komplexität reduzieren. Verwenden Sie PreparedStatements, um SQL-Injection zu verhindern und die Abfrageleistung zu verbessern. Begrenzen Sie die Abfrageergebnisse und reduzieren Sie die vom Server verarbeitete Datenmenge. Optimieren Sie Join-Abfragen, einschließlich der Verwendung geeigneter Join-Typen, der Erstellung von Indizes und der Berücksichtigung der Verwendung von Unterabfragen. Analysieren Sie Abfragen, um Engpässe zu identifizieren. Verwenden Sie Caching, um die Datenbanklast zu reduzieren. Optimieren Sie den PHP-Code, um den Overhead zu minimieren.
Das Sichern und Wiederherstellen einer MySQL-Datenbank in PHP kann durch Befolgen dieser Schritte erreicht werden: Sichern Sie die Datenbank: Verwenden Sie den Befehl mysqldump, um die Datenbank in eine SQL-Datei zu sichern. Datenbank wiederherstellen: Verwenden Sie den Befehl mysql, um die Datenbank aus SQL-Dateien wiederherzustellen.
Wie füge ich Daten in eine MySQL-Tabelle ein? Mit der Datenbank verbinden: Stellen Sie mit mysqli eine Verbindung zur Datenbank her. Bereiten Sie die SQL-Abfrage vor: Schreiben Sie eine INSERT-Anweisung, um die einzufügenden Spalten und Werte anzugeben. Abfrage ausführen: Verwenden Sie die Methode query(), um die Einfügungsabfrage auszuführen. Bei Erfolg wird eine Bestätigungsmeldung ausgegeben.
Eine der wichtigsten Änderungen, die in MySQL 8.4 (der neuesten LTS-Version von 2024) eingeführt wurden, besteht darin, dass das Plugin „MySQL Native Password“ nicht mehr standardmäßig aktiviert ist. Darüber hinaus entfernt MySQL 9.0 dieses Plugin vollständig.
Diese Änderung betrifft PHP und andere Apps
So verwenden Sie gespeicherte MySQL-Prozeduren in PHP: Verwenden Sie PDO oder die MySQLi-Erweiterung, um eine Verbindung zu einer MySQL-Datenbank herzustellen. Bereiten Sie die Anweisung zum Aufrufen der gespeicherten Prozedur vor. Führen Sie die gespeicherte Prozedur aus. Verarbeiten Sie die Ergebnismenge (wenn die gespeicherte Prozedur Ergebnisse zurückgibt). Schließen Sie die Datenbankverbindung.
Das Erstellen einer MySQL-Tabelle mit PHP erfordert die folgenden Schritte: Stellen Sie eine Verbindung zur Datenbank her. Erstellen Sie die Datenbank, falls sie nicht vorhanden ist. Wählen Sie eine Datenbank aus. Tabelle erstellen. Führen Sie die Abfrage aus. Schließen Sie die Verbindung.
Die Zeitkomplexität misst die Ausführungszeit eines Algorithmus im Verhältnis zur Größe der Eingabe. Zu den Tipps zur Reduzierung der Zeitkomplexität von C++-Programmen gehören: Auswahl geeigneter Container (z. B. Vektor, Liste) zur Optimierung der Datenspeicherung und -verwaltung. Nutzen Sie effiziente Algorithmen wie die schnelle Sortierung, um die Rechenzeit zu verkürzen. Eliminieren Sie mehrere Vorgänge, um Doppelzählungen zu reduzieren. Verwenden Sie bedingte Verzweigungen, um unnötige Berechnungen zu vermeiden. Optimieren Sie die lineare Suche, indem Sie schnellere Algorithmen wie die binäre Suche verwenden.