Um sich mit den Grundlagen vertraut zu machen, beschreiben wir zuerst die denkbar einfachste Konfiguration eines funktionsfähigen MySQL Clusters. Danach müssten Sie in der Lage sein, die von Ihnen gewünschte Startkonfiguration aus den Informationen der anderen zum Thema gehörenden Teile dieses Kapitels zu erschließen.
Zuerst müssen Sie ein Konfigurationsverzeichnis wie
beispielsweise /var/lib/mysql-cluster
anlegen, indem Sie folgenden Befehl als
System-root
-User ausführen:
shell> mkdir /var/lib/mysql-cluster
In diesem Verzeichnis legen Sie eine Datei namens
config.ini
an, die folgende Daten enthält.
Bitte setzen Sie für HostName
und
DataDir
die für Ihr System passenden Werte
ein.
# Die Datei "config.ini" zeigt eine Minimalkonfiguration, bestehend aus 1 Datenknoten, # 1 Management-Server und 3 MySQL Servern. # Die leeren Default-Abschnitte sind nicht erforderlich und werden nur der # Vollständigkeit halber gezeigt. # Die Datenknoten müssen einen Hostnamen angeben, nicht aber die MySQL Server. # Wenn Sie den Hostnamen Ihres Computers nicht wissen, verwenden Sie localhost. # Der Parameter DataDir hat ebenfalls einen Standardwert, sollte aber besser # explizit gesetzt werden. # Hinweis: DB, API und MGM sind Aliase für NDBD, MYSQLD und NDB_MGMD # DB und API sind veraltet und sollten in neuen # Installationen nicht mehr benutzt werden. [NDBD DEFAULT] NoOfReplicas= 1 [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] [TCP DEFAULT] [NDB_MGMD] HostName= myhost.example.com [NDBD] HostName= myhost.example.com DataDir= /var/lib/mysql-cluster [MYSQLD] [MYSQLD] [MYSQLD]
Sie können jetzt den Management-Server
ndb_mgmd starten. Da dieser standardmäßig
versucht, die Datei config.ini
in seinem
aktuellen Arbeitsverzeichnis zu lesen, müssen Sie in das
Verzeichnis wechseln, in dem die Datei sich befindet, und dann
ndb_mgmd aufrufen:
shell>cd /var/lib/mysql-cluster
shell>ndb_mgmd
Danach starten Sie einen einzelnen DB-Knoten mit dem Befehl
ndbd. Wenn Sie ndbd zum
allerersten Mal für einen DB-Knoten starten, müssen Sie die
Option --initial
einsetzen:
shell> ndbd --initial
Bei allen weiteren Starts von ndbd müssen
Sie die --initial
-Option unbedingt
weglassen:
shell> ndbd
Der Grund, weshalb die Option --initial
bei
weiteren Neustarts nicht wieder benutzt werden darf, ist der,
dass sie ndbd veranlasst, alle vorhandenen
Daten- und Logdateien (und alle Metadaten für Tabellen) dieses
Datenknotens zu löschen und neu zu erzeugen. Die einzige
Ausnahme von dieser Regel, --initial
nur für
den allerersten Aufruf von ndbd zu verwenden,
tritt dann ein, wenn der Cluster neu gestartet und nach dem
Hinzufügen neuer Datenknoten aus den Sicherungsdateien
wiederhergestellt wird.
Nach Voreinstellung sucht ndbd den
Management-Server auf localhost
am Port 1186.
Hinweis: Wenn Sie MySQL von
einem Binary Tarball installiert haben, müssen Sie den Pfad der
ndb_mgmd- und ndbd-Server
explizit angeben. (Normalerweise befinden sich die beiden in
/usr/local/mysql/bin
.)
Zum Schluss gehen Sie in das MySQL-Datenverzeichnis
(normalerweise /var/lib/mysql
oder
/usr/local/mysql/data
) und sorgen dafür,
dass die Datei my.cnf
die Option enthält,
die zur Aktivierung der Speicher-Engine NDB erforderlich ist:
[mysqld] ndbcluster
Jetzt können Sie den MySQL Server wie gewöhnlich starten:
shell> mysqld_safe --user=mysql &
Warten Sie einen Augenblick, um sich zu vergewissern, dass der
MySQL Server richtig läuft. Wenn Sie die Meldung mysql
ended
sehen, schauen Sie in die
.err
-Datei des Servers, um den Fehler zu
finden.
Wenn so weit alles geklappt hat, können Sie den Server nun
geclustert starten. Verbinden Sie sich mit dem Server und
schauen Sie nach, ob die Speicher-Engine
NDBCLUSTER
aktiviert ist:
shell>mysql
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 5.1.5-alpha-Max Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>SHOW ENGINES\G
... *************************** 12. row *************************** Engine: NDBCLUSTER Support: YES Comment: Clustered, fault-tolerant, memory-based tables *************************** 13. row *************************** Engine: NDB Support: YES Comment: Alias for NDBCLUSTER ...
Die Zeilennummern der obigen Ausgabe können auf Ihrem System je nach Ihrer Serverkonfiguration abweichen.
Versuchen Sie nun, eine NDBCLUSTER
-Tabelle
anzulegen:
shell>mysql
mysql>USE test;
Database changed mysql>CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
Query OK, 0 rows affected (0.09 sec) mysql>SHOW CREATE TABLE ctest \G
*************************** 1. row *************************** Table: ctest Create Table: CREATE TABLE `ctest` ( `i` int(11) default NULL ) ENGINE=ndbcluster DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
Um zu prüfen, ob Ihre Knoten richtig eingerichtet sind, starten Sie den Management-Client:
shell> ndb_mgm
Innerhalb des Management-Clients geben Sie den Befehl SHOW ein, um einen Statusbericht über den Cluster zu erhalten:
NDB> SHOW
Cluster Configuration
---------------------
[ndbd(NDB)] 1 node(s)
id=2 @127.0.0.1 (Version: 3.5.3, Nodegroup: 0, Master)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @127.0.0.1 (Version: 3.5.3)
[mysqld(API)] 3 node(s)
id=3 @127.0.0.1 (Version: 3.5.3)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)
Nun haben Sie mit Erfolg einen funktionierenden MySQL Cluster
eingerichtet. In diesen Cluster können Sie jetzt aus jeder
Tabelle, die mit ENGINE=NDBCLUSTER
oder
seinem Alias ENGINE=NDB
angelegt wurde, Daten
laden.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.