MySQL NDB Cluster: increase MaxNoOf

Diesen Beitrag schrieb ich 8 Jahre und 11 Monate zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

Weitere Beiträge der Artikelserie „MySQL NDB Cluster“ findest du an dieser Stelle.

Im laufenden Betrieb häufen sich dann erst einmal die Fehlermeldungen in meinem MySQL NDB Cluster; seinen Anfang nahm alles, nachdem ich einen Dump meiner WordPress-Datenbank eingespielt hatte und die Engine der Tabellen per ALTER TABLE auf NDBCLUSTER umstellen wollte…

ERROR 1296 (HY000) at line 1: Got error 708 'No more attribute metadata records (increase MaxNoOfAttributes)' from NDBCLUSTER

MaxNoOfAttributes, aha. Der Default für diesen Wert liegt bei 1000, der maximal mögliche Wert bei 4294967039 (0xFFFFFEFF). Dazwischen liegt ja schon etwas Spielraum, also: auf was soll ich den erhöhen?

Eine Möglichkeit, dieser Fragestellung zu Leibe zu rücken, ist das Script ndb_size.pl (benötigt Class::MethodMaker) auf den Data Nodes, das sich, wenn ihr meinem Tutorial zum Aufsetzen des experimentellen MySQL-NDB-Clusters in VirtualBox gefolgt seid, in /usr/local/mysql/bin befindet. Es wertet die Datenbanken aus und erzeugt mit nachfolgendem Aufruf Ausgabe im HTML-Format – an den angegebenen Werten kann man sich orientieren. Und wie wir in nebenstehendem Screenshot erkennen können: die benötigten Werte weichen deutlich vom Default ab!

$ ndb_size.pl --user=root --password=PASSWORT --socket=/tmp/mysql.sock --format=html > /tmp/output.html

Wie sind die aktuellen Werte überhaupt gerade?

root@datanode1:~/bin# ndb_config -q MaxNoOfAttributes
    1000 1000

Das ist nur ein Beispiel – ihr seht ja in dem Screenshot, dass MaxNoOfAttributes nicht der einzige Wert ist, der angepasst werden muss. Die Details zu den einzelnen Werten erfahrt ihr auf der MySQL-Website, und insbesondere findet ihr hier auch Angaben zum Restart Type, also wie die einzelnen Knoten anschließend durchgestartet werden müssen, um die geänderte Konfiguration zu übernehmen. Der überarbeitete [NDBD DEFAULT]-Abschnitt der config.ini könnte etwa so aussehen:

## file: "/var/lib/mysql-cluster/config.ini"
[NDBD DEFAULT]

NoOfReplicas=2
DataMemory=512M
MaxNoOfTriggers=4096
MaxNoOfAttributes=32768
MaxNoOfOrderedIndexes=512
IndexMemory=64M
MaxNoOfUniqueHashIndexes=64
MaxNoOfTables=512
[...]

Startet die einzelnen Knoten nun neu, haltet die Log-Files im Auge – anschließend lief mein ALTER TABLE jedenfalls sauber durch, die Änderung war also erfolgreich. Und so langsam stellt sich auch eine gewisse Sicherheit im Umgang mit dem MySQL NDB Cluster ein, ich entwickle Routine und verliere ein Stück weit die Scheu. Kaputt gespielt hat man hier nämlich recht schnell etwas – leider :D Doch davon ein andermal mehr…

Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „MySQL NDB Cluster: increase MaxNoOf“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.