Domanda

So che il partizionamento orizzontale ... puoi creare molte tabelle.

Come puoi farlo con più server? Ciò consentirà a Mysql di ridimensionarsi.

Creare tabelle X su X server?

Qualcuno ha voglia di spiegare, o ha un buon tutorial per principianti (passo-passo) che ti insegna come eseguire il partizionamento su più server?

È stato utile?

Soluzione

Con MySQL, le persone generalmente fanno ciò che viene chiamato applicazione basata su frammentazione .

In poche parole, avrai la stessa struttura su più server di database. Ma non conterrà gli stessi dati.

Quindi, per esempio:

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

Il frammento (ovviamente) non è una tecnica di backup, è pensato per distribuire letture e scritture su un cluster.

Le tecniche impiegate per il shard sono il proxy MySQL, per esempio. Questo non è nulla che HScale ha inventato, è più o meno un semplice script LUA che distribuisce letture e scritture su server back-end diversi. Dovrebbero esserci molti esempi sulla forgia di MySQL.

Un altro strumento (basato su MySQL Proxy) è SpockProxy . Completamente su misura per lo sharding. Si sono anche sbarazzati di Lua e hanno lavorato su varie cose per renderlo più veloce del proxy. Finora ho testato solo SpockProxy, ma non l'ho mai eseguito in produzione.

Ora oltre a questi proxy, puoi anche frammentare te stesso. Richiesto sarebbe una tabella principale, ad esempio:

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

Quindi costruisci le tue letture e scritture verso il server. Non molto carino ma funziona. Il prossimo ostacolo sarebbe renderlo più falt tolarant. Ad esempio, server1 , server2 e server3 dovrebbero essere ciascuno un piccolo cluster.

E, ultimo ma non meno importante, un altro approccio interessante per la partizione di dati e indici tra server è Diga IDDB . Non sono sicuro che abbiano mai rilasciato il suo codice, ma i loro post sul blog forniscono grandi dettagli su ciò che fa.

Fammi sapere se questo aiuta!

Altri suggerimenti

Ma devi tenere a mente che se per qualche motivo vuoi portare questa soluzione al cloud e renderla multi-tenant, la configurazione sopra potrebbe diventare più impegnativa. Pensa a questo -

  1. hai effettuato l'accesso al sistema e il DB viene selezionato (scambio di DB) in base alla tabella di organizzazione dell'utente
  2. Questa sarebbe la nuova tabella Master con cui stai parlando ora con i suoi stessi schiavi
  3. Ma ora anche il punto 2 sopra deve essere suddiviso poiché vuoi assicurarti che il ridimensionamento non diventi un collo di bottiglia.

Quindi ora la domanda è che probabilmente dovrai pensare come puoi fare questo sharding in un tipo di env mster-slave in cui gli schiavi sono in genere per la lettura e padroni per la scrittura.

evviva! Gary

Ecco cosa è scritto nell'annuncio di HSCALE 0.1:

  

In questo momento dobbiamo solo separarci   tavoli enormi ma più tardi vogliamo   distribuire partizioni su più   Istanze del server MySQL per avere reale   scala orizzontale fuori. La parte più difficile   si occuperà delle transazioni   dove dobbiamo usare distribuito   transazioni (XA) o non consentire   transazioni che coinvolgono partizioni su   host diversi ...

Dai un'occhiata a questo progetto: http://sourceforge.net/projects/hscale/ forse sarà adatto a te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top