Frage

Ich weiß, dass horizontale Partitionierung ... Sie viele Tabellen erstellen können.

Wie können Sie tun dies mit mehreren Servern? Dies ermöglicht Mysql zu skalieren.

Erstellen X Tabellen auf X-Servern?

Hat zu erklären jemand dafür interessieren, oder hat ein Tutorial guten Anfänger (Schritt-für-Schritt), die lehrt, wie man über mehrere Server partitionieren?

War es hilfreich?

Lösung

Mit MySQL, die Menschen im Allgemeinen tun, was genannt wird Anwendung basiert sharding .

Auf den Punkt gebracht, haben Sie die gleiche Datenbank Struktur auf mehreren Datenbankservern. Aber es wird nicht die gleichen Daten enthalten.

So zum Beispiel:

Users 1 - 10000: server A
Users 10001 - 20000: server B

Sharding (natürlich) ist kein Backup-Technik, es liest verteilen soll und schreibt über einen Cluster.

Techniques Scherbe beschäftigt ist das MySQL-Proxy, zum Beispiel. Das ist nichts, was HScale erfunden, es ist mehr oder weniger ein einfaches Skript, das LUA verteilt liest und schreibt an verschiedene Backend-Server. Es sollte auf der MySQL-Schmiede viele Beispiele sein.

Ein weiteres Tool (basierend auf MySQL Proxy) ist SpockProxy . Komplett in Richtung sharding zugeschnitten. Sie wurden auch Lua gereinigt weg, und sie arbeiteten an verschiedenen Dingen machen sie schneller als der Proxy. Bisher habe ich nur SpockProxy getestet, aber nie lief es in der Produktion.

Nun, abgesehen von diesen Proxies, können Sie sich auch Scherbe. Erforderlich wäre eine Master-Tabelle sein, z.

-------------------
| userA | server1 |
| userB | server2 |
| userC | server1 |
-------------------

Dann erstellen Sie Ihre liest und schreibt auf dem Server. Nicht sehr schön, aber das funktioniert. Die nächste obstactle wäre es mehr falt tolarant zu machen. So zum Beispiel, server1, server2 und server3 jeder sollte eine kleine Gruppe sein.

Und last but not least, ein weiterer interessanter Ansatz Daten und Indizes über mehrere Server zu partitionieren ist Digg IDDB . Ich bin nicht sicher, ob sie jemals seinen Code veröffentlicht, aber ihre Blog-Posts gibt große Details auf, was es tut.

Lassen Sie mich wissen, ob das hilft!

Andere Tipps

Aber Sie müssen bedenken, dass, wenn Sie aus irgendwelchen Gründen diese Lösung nehmen wollen Cloud und es Multi Tenant machen dann die obige Konfiguration schwieriger werden könnte. Denken Sie darüber nach -

  1. angemeldet Sie in das System und die DB ausgewählt wird (DB-Swap) auf der Grundlage der vom Benutzer Organisation Tabelle
  2. Dies würde die neue Master-Tabelle, die Sie mit einem eigenen Sklaven jetzt sprechen
  3. Aber der Punkt 2 oben muss auch sharding jetzt, da Sie sicherstellen möchten, dass Ihre Waage aus nicht zu einem Engpass.

So, jetzt die Frage ist, dass Sie wahrscheinlich zu denken brauchen, um, wie können Sie dieses sharding in einer Mster-Slave Art von env tun, wo Sklaven typischerweise zum Lesen und zum Schreiben Meister sind.

Prost! Gary

Hier ist, was auf Ihre Anzeige geschrieben von HScale 0,1:

  

Im Moment müssen wir einfach aufgespalten   riesige Tabellen aber später wollen wir   verteilen Partitionen über mehrere   MySQL-Server-Instanzen real haben   horizontale Skala aus. Der schwierigste Teil   wird mit Transaktionen zu tun haben   wo wir verwenden verteilt   Transaktionen (XA) oder verbieten   Transaktionen mit Partitionen auf   verschiedene Hosts ...

Haben Sie einen Blick auf dieses Projekt: http://sourceforge.net/projects/hscale/ vielleicht wird es für Sie geeignet sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top