2013-08-02 3 views
9

Also, was ist die Idee hinter einem Cluster?Mysql Cluster für Dummies

  1. Sie haben mehrere Maschinen mit der gleichen Kopie der DB, wo Sie das Lesen/Schreiben verbreiten? Ist das richtig?

  2. Wie funktioniert diese Idee? Wenn ich eine Select-Abfrage mache, analysiert der Cluster, welcher Server weniger Lese-/Schreibzugriff hat und verweist meine Abfrage auf diesen Server.

  3. Wenn Sie anfangen sollten, einen Cluster zu verwenden, weiß ich, dass dies eine schwierige Frage ist, aber jemand kann mir ein Beispiel geben, wie 1 Million Besuche und eine 100 Millionen Zeilen DB.

Antwort

9

1) Correct. Jeder Datenknoten enthält keine vollständige Kopie der Clusterdaten, aber jedes einzelne Datenbit ist auf mindestens zwei Knoten gespeichert.

2) Essentially correct. MySQL Cluster unterstützt verteilte Transaktionen.

3) Wenn die vertikale Skalierung ist nicht mehr möglich, und die Replikation wird unpraktisch :)


Wie versprochen, einige Lesungen empfohlen:

+0

Vielen Dank, was sagen Sie zu Punkt 3: 'und Replikation wird unpraktisch? 'Können Sie mir ein Beispiel geben? – Uffo

+0

Fragen Sie darüber, wann die Replikation unpraktisch wird, oder über die Replikation insgesamt? Die horizontale Skalierung kann z. B. durch [zirkuläre Replikation] (http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-replication-multi-master.html) hinter einem Load Balancer erreicht werden. Wenn Sie jedoch mit der Implementierung dieser Dinge beginnen, sollten Sie sich fragen, ob Sie stattdessen einen Cluster implementieren möchten. – RandomSeed

+0

[Diese Antwort] (http://stackoverflow.com/a/5326403/1446005) könnte auch für Sie von Interesse sein. – RandomSeed

2

1-> Ihr erster Punkt ist in einer Weise richtig. Aber ich denke, wenn mehrere Maschinen die gleichen Daten teilen würde es Replikation statt Clustering sein. Beim Clustering werden die Daten auf die verschiedenen Maschinen aufgeteilt, und es gibt horizontale Partitionierungsmittel. Die Aufteilung der Daten basiert auf den Zeilen, die Datensätze werden unter Verwendung eines Algorithmus unter diesen Maschinen aufgeteilt.

Die Aufteilung der Daten erfolgt so, dass jeder Datensatz einen eindeutigen Schlüssel erhält, genau wie im Falle eines Schlüssel/Wert-Paares, und jede Maschine hat auch eine eindeutige machine_id, die verwendet wird, um das Schlüsselwertpaar zu definieren würde zu welcher Maschine gehen.

Wir nennen jede Maschine einen Cluster und jeder Cluster besteht aus einem einzelnen mysql-Server, individuellen Daten und einem Clustermanager. Außerdem gibt es eine gemeinsame Datennutzung zwischen allen Clusterknoten, so dass alle Daten für alle verfügbar sind Knoten jederzeit.

Das Abrufen von Daten erfolgt über memcached Geräte/Server für den schnellen Abruf und gibt es auch einen Replikationsserver für einen bestimmten Cluster, um die Daten zu speichern.

2-> Ja, es gibt eine Möglichkeit, da alle Daten unter allen Clusterknoten gemeinsam genutzt werden.Außerdem können Sie einen Load Balancer verwenden, um die Last auszugleichen. Die Idee des Load Balancers ist jedoch sehr häufig, da sie von den meisten Servern verwendet wird. Aber wenn Sie nur für Ihr Wissen versuchen, dann gibt es keine Notwendigkeit, weil Sie die Art der Last nicht bemerken werden, die die Anforderung eines Load Balancers schafft, kann der Cluster-Manager selbst die ganze Sache tun.

3-> RandomSeed ist richtig. Wenn die Replikation unpraktisch wird, bedeutet das, dass Sie einen Cluster benötigen, wenn Sie den Master-Server für Schreibvorgänge und Slave für Lesevorgänge verwenden. Wenn der Datenverkehr dann so groß wird, dass der Server nicht reibungslos arbeiten kann, werden Sie dies tun fühle das Bedürfnis nach Clusterbildung. einfach um den ganzen Prozess zu beschleunigen. Dies ist nicht der einzige Fall, dies ist nur eines der Szenarien, das ist nur ein Fall.

hoffe das ist hilfreich für dich !!

+0

Vielen Dank Sir für die Zeit, tolle Infos! – Uffo