sql >> Databáze >  >> RDS >> Mysql

Jak rozdělit Mysql přes VÍCE SERVERŮ?

S MySQL lidé obecně dělají to, co se nazývá aplikační sharding .

Stručně řečeno, budete mít stejnou strukturu databáze na více databázových serverech. Nebude však obsahovat stejná data.

Takže například:

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

Sdílení (samozřejmě) není technika zálohování, jeho účelem je distribuovat čtení a zápisy napříč clusterem.

Techniky používané ke shardu jsou například MySQL-Proxy. Toto není nic, co vynalezl HScale, je to víceméně jednoduchý LUA skript, který distribuuje čtení a zápisy na různé backendové servery. Na kovárně MySQL by měla být spousta příkladů.

Dalším nástrojem (založeným na MySQL Proxy) je SpockProxy . Kompletně přizpůsobené pro sharding. Také se zbavili Lua a pracovali na různých věcech, aby to bylo rychlejší než proxy. Zatím jsem testoval pouze SpockProxy, ale nikdy jsem jej nespustil ve výrobě.

Nyní kromě těchto proxy, můžete střepiny také sami. Vyžaduje se hlavní tabulka, např.:

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

Poté vytvořte čtení a zápis směrem k serveru. Ne moc hezké, ale funguje to. Další překážkou by bylo udělat to více falešně tolerantní. Například server1 , server2 a server3 každý by měl být malý shluk.

A v neposlední řadě je dalším zajímavým přístupem k rozdělení dat a indexů mezi servery Diggův IDDB . Nejsem si jistý, jestli někdy vydali jeho kód, ale jejich blogové příspěvky poskytují skvělé podrobnosti o tom, co dělá.

Dejte mi vědět, jestli to pomůže!



  1. Instalace MySQL-python

  2. Sql*plus vždy vrátí kód ukončení 0?

  3. Co zkontrolovat, zda je využití paměti PostgreSQL vysoké

  4. Převést Unixtime na Datetime SQL (Oracle)