sql >> Databasteknik >  >> RDS >> Mysql

Hur partitionerar man Mysql över FLERA SERVRAR?

Med MySQL gör människor i allmänhet vad som kallas applikationsbaserad sharding .

I ett nötskal kommer du att ha samma databasstruktur på flera databasservrar. Men den kommer inte att innehålla samma data.

Så till exempel:

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

Sharding (naturligtvis) är inte en säkerhetskopieringsteknik, det är tänkt att distribuera läsningar och skrivningar över ett kluster.

Tekniker som används för att skära är MySQL-proxy, till exempel. Det här är inget som HScale uppfann, det är mer eller mindre ett enkelt LUA-skript som distribuerar läser och skriver till olika backend-servrar. Det borde finnas gott om exempel på MySQL-smedjan.

Ett annat verktyg (baserat på MySQL Proxy) är SpockProxy . Helt anpassad för skärning. De blev också av med Lua, och de arbetade med olika saker för att göra det snabbare än proxyn. Hittills har jag bara testat SpockProxy, men aldrig kört den i produktion.

Nu bortsett från dessa proxyservrar kan du skära dig själv också. En huvudtabell krävs, t.ex.:

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

Konstruera sedan dina läsningar och skrivningar mot servern. Inte särskilt snyggt men det funkar. Nästa hinder skulle vara att göra det mer falttolarant. Så till exempel server1 , server2 och server3 var och en ska vara ett litet kluster.

Och sist men inte minst, en annan intressant metod för att partitionera data och index över servrar är Diggs IDDB . Jag är inte säker på om de någonsin släppt dess kod, men deras blogginlägg ger fantastiska detaljer om vad den gör.

Låt mig veta om detta hjälper!



  1. Git bash på Windows 7. kommandot mysqldump fungerar inte

  2. Lägg till veckor till ett datum i PostgreSQL

  3. Anslut till fjärr MySQL-databas med VB.NET 2010

  4. Hur kan jag använda en PostgreSQL-utlösare för att lagra ändringar (SQL-satser och radändringar)