Ziel dieses Artikels ist es, die Installation und Konfiguration eines MySQL-Clusters auf Basis von 2 Servern vorzustellen. Und seien Sie sich darüber im Klaren, dass MySQL auch dann weiterlaufen kann, wenn ein Server Probleme hat oder ausfällt.
Beachten! Obwohl es sich um einen MySQL-Cluster handelt, der auf 2 Servern basiert, muss ein zusätzlicher dritter Server als Verwaltungsknoten vorhanden sein, dieser Server kann jedoch heruntergefahren werden, nachdem der Cluster-Start abgeschlossen ist. Gleichzeitig ist zu beachten, dass es nicht empfehlenswert ist, den Server, der als Verwaltungsknoten dient, herunterzufahren, nachdem der Cluster-Start abgeschlossen ist. Obwohl es theoretisch möglich ist, einen MySQL-Cluster auf der Basis von nur zwei Servern aufzubauen, kann der Cluster mit einer solchen Architektur nach dem Ausfall eines Servers nicht mehr normal weiterarbeiten, wodurch die Bedeutung des Clusters verloren geht. Aus diesem Grund ist ein dritter Server erforderlich, der als Verwaltungsknoten fungiert. Darüber hinaus verfügen viele Freunde möglicherweise nicht über die tatsächliche Umgebung von drei Servern und erwägen daher möglicherweise die Durchführung von Experimenten mit VMWare oder anderen virtuellen Maschinen.
Im Folgenden wird von der Situation dieser drei Dienste ausgegangen:
Server1: mysql1.vmtest.net 192.168.0.1
Server2: mysql2.vmtest.net 192.168.0.2
Server3: mysql3.vmtest.net 192.168.0.3
Server1 und Server2 dienen als Server, die den MySQL-Cluster tatsächlich konfigurieren. Die Anforderungen an Server3 als Verwaltungsknoten sind geringer. Es sind nur geringfügige Anpassungen am Server3-System erforderlich, und es ist nicht erforderlich, MySQL zu installieren. Server3 kann einen Computer mit niedrigerer Konfiguration verwenden und gleichzeitig andere Dienste auf Server3 ausführen. 2. Installieren Sie MySQL auf Server1 und Server2
================================Von [url]/u/info_img/2009-05/30/url] Laden Sie mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz herunter. Hinweis: Es muss die Max-Version von MySQL sein. Die Standardversion unterstützt keine Cluster-Bereitstellung. Die folgenden Schritte müssen einmal auf Server1 und Server2 durchgeführt werden.
# mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/
# cd /usr/local/
#groupadd mysql
# useradd -g mysql mysql
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm -f mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# mv mysql-max-4.1.9-pc-linux-gnu-i686 mysql
# cd mysql
# scripts/mysql_install_db --user=mysql
# chown -R root .
# chown -R MySQL-Daten
# chgrp -R mysql .
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld MySQL derzeit nicht starten!
Installieren und konfigurieren Sie den Verwaltungsknotenserver (Server3)
===================================== Als Verwaltungsknotenserver benötigt Server3 zwei Dateien: ndb_mgm und ndb_mgmd: Laden Sie mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz von [url]/u/info_img/2009-05/30/url herunter.
# mkdir /usr/src/mysql-mgm
# cd /usr/src/mysql-mgm
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# cd mysql-max-4.1.9-pc-linux-gnu-i686
# mv bin/ndb_mgm .
# mv bin/ndb_mgmd .
# chmod +x ndb_mg*
# mv ndb_mg* /usr/bin/
#CD
# rm -rf /usr/src/mysql-mgm Beginnen Sie nun mit der Erstellung der Konfigurationsdatei für diesen Verwaltungsknotenserver:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini Fügen Sie den folgenden Inhalt zu config.ini hinzu:
[NDBD-STANDARD]
NoOfReplicas=2
[MYSQLD-STANDARD]
[NDB_MGMD DEFAULT]
[TCP-STANDARD]
#ManagementServer
[NDB_MGMD]
HostName=192.168.0.3 #Die IP-Adresse des Verwaltungsknotenservers Server3
# Speicher-Engines
[NDBD]
HostName=192.168.0.1 #Die IP-Adresse des MySQL-Clusters Server1
DataDir= /var/lib/mysql-cluster
[NDBD]
HostName=192.168.0.2 #Die IP-Adresse des MySQL-Clusters Server2
DataDir=/var/lib/mysql-cluster
# Die folgenden zwei [MYSQLD] können die Hostnamen von Server1 und Server2 ausfüllen.
# Um den Server im Cluster schneller auszutauschen, wird jedoch empfohlen, das Feld leer zu lassen, andernfalls muss diese Konfiguration nach dem Austausch des Servers geändert werden.
[MYSQLD]
[MYSQLD] Starten Sie nach dem Speichern und Beenden den Verwaltungsknotenserver Server3:
# Nachdem Sie den Verwaltungsknoten mit ndb_mgmd gestartet haben, sollten Sie beachten, dass es sich nur um den Verwaltungsknotendienst und nicht um das Verwaltungsterminal handelt. Daher werden Ihnen keine Ausgabeinformationen zum Start angezeigt. 4. Konfigurieren Sie den Clusterserver und starten Sie MySQL
============================= Die folgenden Änderungen müssen sowohl in Server1 als auch in Server2 vorgenommen werden:
# vi /etc/my.cnf
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.3 #Server3s IP-Adresse
[mysql_cluster]
ndb-connectstring=192.168.0.3 #Nachdem Sie die IP-Adresse von Server3 gespeichert und beendet haben, erstellen Sie ein Datenverzeichnis und starten Sie MySQL:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# /usr/local/mysql/bin/ndbd --initial
# /etc/rc.d/init.d/mysqld start Sie können /usr/local/mysql/bin/ndbd zu /etc/rc.local hinzufügen, um zu starten. Hinweis: Sie müssen den Parameter --initial nur verwenden, wenn Sie ndbd zum ersten Mal starten oder nachdem Sie Änderungen an der config.ini von Server3 vorgenommen haben! 5. Überprüfen Sie den Arbeitsstatus
================ Kehren Sie zum Verwaltungsknotenserver Server3 zurück und starten Sie das Verwaltungsterminal:
# /usr/bin/ndb_mgm Geben Sie den Befehl show ein, um den aktuellen Arbeitsstatus anzuzeigen: (Das Folgende ist ein Beispiel für die Statusausgabe)
[root@mysql3 root]# /usr/bin/ndb_mgm
– NDB-Cluster – Management-Client –
ndb_mgm> anzeigen
Verbunden mit dem Verwaltungsserver unter: localhost:1186
Cluster-Konfiguration
--------------------------
[ndbd(NDB)] 2 Knoten
id=2 @192.168.0.1 (Version: 4.1.9, Knotengruppe: 0, Master)
id=3 @192.168.0.2 (Version: 4.1.9, Knotengruppe: 0)
[ndb_mgmd(MGM)] 1 Knoten
id=1 @192.168.0.3 (Version: 4.1.9)
[mysqld(API)] 2 Knoten
id=4 (Version: 4.1.9)
id=5 (Version: 4.1.9)
ndb_mgm>
Wenn die oben genannten Probleme nicht auftreten, beginnen Sie jetzt mit dem Testen von MySQL: Beachten Sie, dass in diesem Dokument das Root-Passwort für MySQL nicht festgelegt wird. Es wird empfohlen, das MySQL-Root-Passwort für Server1 und Server2 selbst festzulegen. Auf Server1:
# /usr/local/mysql/bin/mysql -u root -p
> Test verwenden;
> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
> INSERT INTO ctest () VALUES (1);
> SELECT * FROM ctest; Sie sollten 1 Zeile der zurückgegebenen Informationen sehen können (Rückgabewert 1). Wenn das oben Gesagte normal ist, wechseln Sie zu Server2 und wiederholen Sie den obigen Test, um den Effekt zu beobachten. Führen Sie bei Erfolg INSERT in Server2 aus und wechseln Sie dann zurück zu Server1, um zu beobachten, ob es normal funktioniert. Wenn es keine Probleme gibt, herzlichen Glückwunsch zum Erfolg! 6. Zerstörende Prüfung
============== Ziehen Sie das Netzwerkkabel von Server1 oder Server2 ab und beobachten Sie, ob der andere Clusterserver normal funktioniert (Sie können die SELECT-Abfrage zum Testen verwenden). Nachdem der Test abgeschlossen ist, stecken Sie das Netzwerkkabel wieder ein. Wenn Sie keinen Zugriff auf den physischen Server haben, also das Netzwerkkabel nicht abziehen können, können Sie den Test auch so durchführen: Auf Server1 oder Server2:
# ps aux |. grep ndbd sieht alle ndbd-Prozessinformationen:
root 5578 0,0 0,3 6220 1964 ? S 03:14 0:00 ndbd
root 5579 0,0 20,4 492072 102828 ? R 03:14 0:04 ndbd
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd und dann einen ndbd-Prozess beenden, um den MySQL-Cluster-Server zu zerstören:
# kill -9 5578 Nach 5579 verwenden Sie zum Testen die SELECT-Abfrage auf einem anderen Cluster-Server. Und wenn Sie den Befehl show im Verwaltungsterminal des Verwaltungsknotenservers ausführen, sehen Sie den Status des beschädigten Servers. Nach Abschluss des Tests müssen Sie nur noch den ndbd-Prozess des beschädigten Servers neu starten:
#ndbdAchtung! Wie bereits erwähnt, besteht derzeit keine Notwendigkeit, den Parameter --initial hinzuzufügen! Zu diesem Zeitpunkt ist die MySQL-Clusterkonfiguration abgeschlossen!