Datenbank-Cluster · 2 min read · Oct 02, 2025
So richten Sie einen Lastverteilten MySQL-Cluster ein
So richten Sie einen Lastverteilten MySQL-Cluster ein
Version 1.0
Autor: Falko Timme
Dieses Tutorial zeigt, wie man einen MySQL 5-Cluster mit drei Knoten konfiguriert: zwei Speicherknoten und einen Verwaltungs-Node. Dieser Cluster wird durch einen hochverfügbaren Lastverteiler ausgeglichen, der tatsächlich zwei Knoten verwendet, die das Ultra Monkey-Paket nutzen, das Heartbeat (zum Überprüfen, ob der andere Knoten noch aktiv ist) und ldirectord (um die Anfragen an die Knoten des MySQL-Clusters aufzuteilen) bereitstellt.
In diesem Dokument verwende ich Debian Sarge für alle Knoten. Daher kann die Einrichtung für andere Distributionen etwas abweichen. Die MySQL-Version, die ich in dieser Einrichtung verwende, ist 5.0.19. Wenn Sie MySQL 5 nicht verwenden möchten, können Sie auch MySQL 4.1 verwenden, obwohl ich es nicht getestet habe.
Dieses How-to ist als praktische Anleitung gedacht; es behandelt nicht die theoretischen Hintergründe. Diese werden in vielen anderen Dokumenten im Web behandelt.
Dieses Dokument kommt ohne jegliche Gewährleistung! Ich möchte sagen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten, dieses Ziel zu erreichen, aber dies ist der Weg, den ich wähle. Ich gebe keine Garantie, dass dies für Sie funktioniert!
1 Meine Server
Ich verwende die folgenden Debian-Server, die sich alle im selben Netzwerk befinden (192.168.0.x in diesem Beispiel):
- sql1.example.com: 192.168.0.101 MySQL-Cluster-Knoten 1
- sql2.example.com: 192.168.0.102 MySQL-Cluster-Knoten 2
- loadb1.example.com: 192.168.0.103 Lastverteiler 1 / MySQL-Cluster-Verwaltungsserver
- loadb2.example.com: 192.168.0.104 Lastverteiler 2
Zusätzlich benötigen wir eine virtuelle IP-Adresse: 192.168.0.105. Sie wird dem MySQL-Cluster vom Lastverteiler zugewiesen, sodass Anwendungen eine einzige IP-Adresse haben, um auf den Cluster zuzugreifen.
Obwohl wir zwei MySQL-Cluster-Knoten in unserem MySQL-Cluster haben möchten, benötigen wir dennoch einen dritten Knoten, den MySQL-Cluster-Verwaltungsserver, aus hauptsächlich einem Grund: Wenn einer der beiden MySQL-Cluster-Knoten ausfällt und der Verwaltungsserver nicht läuft, werden die Daten auf den beiden Cluster-Knoten inkonsistent („split brain“). Wir benötigen ihn auch zur Konfiguration des MySQL-Clusters.
Normalerweise würden wir also fünf Maschinen für unsere Einrichtung benötigen:
2 MySQL-Cluster-Knoten + 1 Cluster-Verwaltungsserver + 2 Lastverteiler = 5Da der MySQL-Cluster-Verwaltungsserver nicht viele Ressourcen benötigt und das System einfach nur untätig dastehen würde, können wir unseren ersten Lastverteiler auf demselben Rechner installieren, was uns eine Maschine spart, sodass wir am Ende mit vier Maschinen auskommen.
2 Einrichtung des MySQL-Cluster-Verwaltungsservers
Zuerst müssen wir MySQL 5.0.19 (die max-Version!) herunterladen und den Cluster-Verwaltungsserver (ndb_mgmd) und den Cluster-Verwaltungsclient (ndb_mgm - er kann verwendet werden, um zu überwachen, was im Cluster vor sich geht) installieren. Die folgenden Schritte werden auf loadb1.example.com (192.168.0.103) durchgeführt:
loadb1.example.com:
mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\ glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/bin/ndb_mg*
cd /usr/src
rm -rf /usr/src/mysql-mgm
Als nächstes müssen wir die Cluster-Konfigurationsdatei /var/lib/mysql-cluster/config.ini erstellen:
loadb1.example.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
| [NDBD DEFAULT] NoOfReplicas=2 [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] [TCP DEFAULT] # Abschnitt für den Cluster-Verwaltungs-Node [NDB_MGMD] # IP-Adresse des Verwaltungs-Knotens (dieses System) HostName=192.168.0.103 # Abschnitt für die Speicherknoten [NDBD] # IP-Adresse des ersten Speicherknotens HostName=192.168.0.101 DataDir= /var/lib/mysql-cluster [NDBD] # IP-Adresse des zweiten Speicherknotens HostName=192.168.0.102 DataDir=/var/lib/mysql-cluster # ein [MYSQLD] pro Speicherknoten [MYSQLD] [MYSQLD] |
Bitte ersetzen Sie die IP-Adressen in der Datei entsprechend.
Dann starten wir den Cluster-Verwaltungsserver:
loadb1.example.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini Es macht Sinn, den Verwaltungsserver beim Systemstart automatisch zu starten, also erstellen wir ein sehr einfaches Init-Skript und die entsprechenden Startlinks:
loadb1.example.com:
echo ‘ndb_mgmd -f /var/lib/mysql-cluster/config.ini’ > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd
update-rc.d ndb_mgmd defaults
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.