Mysql
 sql >> Database >  >> RDS >> Mysql

Come partizionare Mysql su PIÙ SERVER?

Con MySQL, le persone generalmente fanno quello che viene chiamato sharding basato su applicazioni .

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

Quindi ad esempio:

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

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

Le tecniche impiegate per lo shard sono il MySQL-Proxy, per esempio. Questo non è niente che HScale ha inventato, è più o meno un semplice script LUA che distribuisce letture e scritture su diversi server backend. Dovrebbero esserci molti esempi sulla fucina 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 solo testato SpockProxy, ma non l'ho mai eseguito in produzione.

Ora, a parte quei proxy, puoi anche shard te stesso. È richiesta 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ù tollerante. Ad esempio, server1 , server2 e server3 ciascuno dovrebbe essere un piccolo gruppo.

E, ultimo ma non meno importante, un altro approccio interessante per partizionare dati e indici tra i server è 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!