Problem: Eine neue MySQL NDB Node muss für eine alte eingesetzt werden.
Idee: Alte NDB Node runterfahren, neue NDB Node wie die alte konfigurieren und loslegen -> geht nicht
Lösung: Um eine NDB Node zu ersetzen muss einige Vorarbeit erfolgen. Da ich hier auf die Thematik “STORAGE ON DISK” eingehe, ist das alles nicht so einfach handzuhaben wie bei einem normalen “STORAGE MEMORY” Cluster.
Nach Installation des Systems und Anpassung der Konfiguration (kann von der alten NDB Node übernommen werden) wird man nach einem Start von ndbd und mysqld eine Überraschung erleben. ndbd startet zwar, aber mysqld verweigert seinen Dienst.
Zwar kann bei einer Replikation durch ndbd die DB Struktur erhalten bleiben, aber letztendlich werden nur die Binär Logs übertragen.
Es muss also, um schnell wieder ins Rennen zu kommen, idealerweise das komplette MySQL Lib Verzeichnis (/var/lib/mysql) übernommen werden und die Besitzrechte auf mysql:mysql gestellt werden.
Nach Neustart des ndbd und mysqld (und einigem Warten, je nach Größe der DB) läuft alles wieder wunderbar.
Hintergrund: ndbd repliziert nur die Logs und lässt daher die DB Struktur, vor allem die Datendateien unberührt. Diese werden erst durch mysqld und den Binär Logs wieder zu einer Lauffähigen DB gemacht.
Probleme: Es kann vorkommen das die Log Datei nicht mehr eingelesen werden kann (logfile group). In diesem Fall das Verzeichnis ndb_$NODEID_fs löschen und ndbd –initial starten.