Hier ist eine kurze Anleitung wie man ein MySQL Cluster 7.3.4 auf mehreren Debian Wheezy VMs aufsetzt.
Dabei werden wir 2 Data-Nodes, 2 SQL-Nodes und auf beiden SQL-Nodes einen Management-Deamon laufen lassen.
Die ersten Schritte sind für alle 4 Maschinen die gleichen, also könnte hier auch eine Maschine aufgesetzt und anschließend 4-mal geklont werden.
Diese Schritte auf allen Nodes durchführen
# Lib AIO Installieren apt-get install libaio-dev # Die zu diesem Zeitpunkt aktuelle Version downloaden cd /usr/local wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz # Entpacken und in den Ordner mysql verschieben tar -xzf 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.tar.gz mysql mkdir /etc/mysql # Verzeichnis zur PATH Variablen hinzufügen export PATH="$PATH:/usr/local/mysql/bin" # MySQL User anlegen und Rechte gewähren useradd mysql $ chown -R mysql:mysql /usr/local/mysql
Ab hier unterschieden sich die Schritte für Data-Nodes und SQL-Nodes.
Wichtig ist, dass sich alle Nodes untereinander entweder (wie in diesem Beispiel) mittels Hostname ansprechen können oder via IP erreichbar sind!
Auf den beiden Data-Nodes folgende Schritte:
vim /etc/mysql/my.cnf
[mysqld] ndbcluster ndb-connectstring=sql-node1,sql-node2 [mysql_cluster] ndb-connectstring=sql-node1,sql-node2
vim /etc/mysql/my.cnf
[mysqld] ndbcluster ndb-connectstring=sql-node1,sql-node2 port=3306 default_storage_engine=ndbcluster [mysql_cluster] ndb-connectstring=sql-node1,sql-node2
vim /etc/mysql/config.ini
[ndb_mgmd default] DataDir=/usr/local/mysql/mysql-cluster [ndb_mgmd] NodeId=1 HostName=sql-node1 [ndb_mgmd] NodeId=2 HostName=sql-node2 [ndbd default] NoOfReplicas=2 DataMemory=256M IndexMemory=128M DataDir=/usr/local/mysql/mysql-cluster [ndbd] NodeId=3 HostName=data-node1 [ndbd] NodeId=4 HostName=data-node2 [mysqld] [mysqld]
mkdir -p /usr/local/mysql/mysql-cluster cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql update-rc.d mysql defaults cd /usr/local/mysql scripts/mysql_install_db --user=mysql
Das war es im Prinzip schon, jetzt können wir das Cluster starten:
# Auf dem SQL-Node1: ndb_mgmd -f /etc/mysql/config.ini --ndb-nodeid=1 # Auf dem SQL-Node2: ndb_mgmd -f /etc/mysql/config.ini --ndb-nodeid=2 # Auf dem Data-Node1: ndbd --ndb-nodeid=3 # Auf dem Data-Node2: ndbd --ndb-nodeid=4 # Auf dem SQL-Node1 und SQL-Node2: service mysql start
Mit dem Befehl:
ndb_mgm -e show
Lässt sich der aktuelle Status auslesen. Es sollten alle Einträge die zu sehen sind als connected angezeigt werden.
Tipp: Um den MySQL Dienst zu stoppen muss zuerst das Cluster heruntergefahren werden
ndb_mgmd -e shutdown
Hinweis: Die mysql Datenbank wird nicht im Cluster abgelegt, daher müssen auf beiden SQL-Nodes manuell dem Root-User ein Passwort verpasst werden:
mysqladmin -u root password ‘rootPa55w0rd’