MySQL Cluster 7.1 Fragen

  • Themenstarter Themenstarter Gelöschtes Mitglied 15619
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 15619

Guest
Hallo zusammen,

ich beschäftige mich zur Zeit mit MySQL Cluster 7.1 und habe ein kleines System aus einem ManagementNode und 2 Datanodes eingerichtet. Wenn ich Daten auf beiden Nodes anlege, werden diese auch synchronisiert. Ich habe jetzt ein paar Fragen:

Wie kann ich den ndbd Prozess automatisch starten?
Wie sehe ich ob die Datenodes synchron sind? Wenn zum Beispiel eine Datanode länger offline war und in der Zwischenzeit viele Daten geschrieben wurden? Ich habe gelesen, dass es möglich sein soll weitere Datanodes im laufenden Betrieb hinzuzufügen, finde aber keine Informationen dazu. Was passiert wenn der Management Server ausfällt? Kennt jemand aktuelles Buchmaterial welches MySQL Cluster 7.1 beeinhaltet?

Lieben Gruß
HDT
 
Wie kann ich den ndbd Prozess automatisch starten?
Indem du ein entsprechendes Init-Skript anlegst.

Wie sehe ich ob die Datenodes synchron sind?
Meiner Erfahrung nach am einfachsten indem du dir die Größe der Datenverzeichnisse auf Byte genau anschaust. Sind sie gleich gross, sind auch die Knoten synchron. ;) Das ist allerdings der "dirty way". Um es sauberer zu lösen nimmt man Tools wie cmon (Cluster Monitor).

Wenn zum Beispiel eine Datanode länger offline war und in der Zwischenzeit viele Daten geschrieben wurden?
Dann dauert es entsprechend lange, bis der Knoten wieder synchron ist. Allerdings ist er solange ja im Status "Starting" und erst wenn er in einen synchronen Zustand kommt, wird er auf "Started" geändert und bekommt ab da Anfragen vom Management-Node zugeteilt. Voraussetzung ist natürlich, dass man das Cluster über API-Nodes anspricht und nicht direkt auf die Data-Nodes zugreift. Wobei vermutlich auch ein Direktzugriff auf die Storage-Nodes nicht möglich ist, solange sie nicht auf "STARTED" gewechselt haben. Hab das allerdings nie getestet und werde dafür jetzt auch keinen meiner Storage-Nodes runterfahren. ;)

Ich habe gelesen, dass es möglich sein soll weitere Datanodes im laufenden Betrieb hinzuzufügen, finde aber keine Informationen dazu.
Das geht nur, wenn entsprechende NDBD-Nodes bereits in der Konfiguration definiert sind. Da man ja nur HostName und DataDir angeben muss kann man einfach schonmal im Voraus zusätzliche NDBD-Abschnitte in die Konfiguration einfügen und dort als HostName ein paar IPs eintragen, die man für weitere Storage-Nodes verwenden kann. Evtl. reicht es aber auch aus einfach leere NDBD-Abschnitte einzubauen. Das habe ich allerdings selbst noch nicht probiert. Bei den API-Nodes reicht es aber ja auch leere MYSQLD-Abschnitte in die Config zu packen.

Was passiert wenn der Management Server ausfällt?
Ich bin mir nicht 100% sicher, aber die anderen Knoten gehen dann entweder in den Status "UNKNOWN" oder "NO_CONTACT". Sie sind auf jeden Fall nicht mehr ansprechbar bis das Cluster neugestartet wurde. Von daher erreicht man echte Redundanz nur mit 2 Management-Knoten, was aber im üblichen Bereich, wo Cluster zum Einsatz kommen, aufgrund der Größe der Netzwerke zumeist eh notwendig ist. Bei einem Cluster mit einem Management-Knoten heisst ein Ausfall jedenfalls immer ein Cluster-Reboot.

Kennt jemand aktuelles Buchmaterial welches MySQL Cluster 7.1 beeinhaltet?
Als "Hardware" natürlich der Klassiker von O'Reilly, der in seiner aktuellen Ausgabe auch 7.1 beinhalten dürfte... "High Performance MySQL". Vorsicht: da gibt es 2 Ausgaben. Die eine ist recht dünn und ist eher als Nachschlagewerk geeignet. Die andere ist knapp doppelt so dick und geht etwas tiefer in's Detail. Wusste ich bisher auch nicht, bis ich es in meiner letzten Firma im Office mal als dicke Ausgabe sah. Hab selbst die dünne Version und da wird auf Cluster zwar eingegangen, aber da auch Master-Slave- und Master-Master-Replikationen darin behandelt werden, natürlich eher spärlich. Ansonsten ist mein Favorit immernoch das Reference Manual, das in Kapitel 17 sehr detailliert auf Cluster eingeht: http://docs.sun.com/source/mysql-refman-5.1/mysql-cluster.html Schon an den Überschriften ist zu erkennen, dass damit die meisten Fragen beantwortet werden. :)
 
Dann dauert es entsprechend lange, bis der Knoten wieder synchron ist. Allerdings ist er solange ja im Status "Starting" und erst wenn er in einen synchronen Zustand kommt, wird er auf "Started" geändert und bekommt ab da Anfragen vom Management-Node zugeteilt. Voraussetzung ist natürlich, dass man das Cluster über API-Nodes anspricht und nicht direkt auf die Data-Nodes zugreift. Wobei vermutlich auch ein Direktzugriff auf die Storage-Nodes nicht möglich ist, solange sie nicht auf "STARTED" gewechselt haben. Hab das allerdings nie getestet und werde dafür jetzt auch keinen meiner Storage-Nodes runterfahren. ;)

Ich habe mir jetzt das Buch HA-MySQL Cookbook gekauft. Kannst du mir noch mitteilen, wie ich einsehen kann ob der Zustand "Starting" oder "Started" ist? Dann würde ich das mal ausprobieren. Wie wichtig ist die Raumaustattung der API-Nodes? Die Tabellen werden doch auf den Storage Nodes(NDB) im RAM gehalten? Kann ich das Cluster auch über die Management Nodes gebalanced ansteuern oder sollte man dies grundsätzlich lieber über einen zusätzlichen Loadbalancer direkt auf die API-Nodes machen?
 
Zuletzt bearbeitet von einem Moderator:
Den Status der Knoten kannst du jederzeit mit ndb_mgm einsehen.

In meinem Setup nutzen Webserver jeder einen API-Node, der prinzipiell kaum Rechenleistung nutzt. Ein API-Node kann problemlos auch ohne grosse RAM-Ansprüche (sofern man die API-Nodes nicht zum Caching nutzt) direkt auf den Rechnern laufen, die auf die Datenbanken zugreifen müssen. Auf jeden Fall empfehle ich den Zugriff über API-Nodes oder wenn man diese vermeiden will/muss, dann mittels Layer-4-Loadbalancing direkt auf die Storage-Nodes. Da sollte man dann aber besser kein Round-Robin sondern ein Least-Load-basiertes Balancing nutzen, hat also einen gewissen Overhead durch SNMP, der sich aber in Grenzen hält.
 
Wenn ich nur ein ndb_mgm>show ausführe finde ich leider nichts von Starting oder Started, benötige ich noch eine spezielle Option? Kannst du vtl. mal einen Screenshot posten?
 
Hm, war es doch ndb_waiter. Sorry, mein Fehler.

Diese beiden Stati werden beim Startup eines Nodes verwendet. Im Starting bleiben sie z.B. hängen, wenn du eine Firewall auf den Storage-Nodes installierst, so dass die dynamisch vergebenen Ports dicht sind. ;) Der Status Started wird erreicht, wenn der Knoten komplett initialisiert ist. Er signalisiert dem Management-Knoten, dass der Storage-Node nun bereit ist und Daten entgegen nimmt.
 
Zurück
Oben