Com o MySQL, as pessoas geralmente fazem o que é chamado de aplicativo baseado em fragmentação .
Em poucas palavras, você terá a mesma estrutura de banco de dados em vários servidores de banco de dados. Mas não conterá os mesmos dados.
Assim, por exemplo:
Users 1 - 10000: server A
Users 10001 - 20000: server B
A fragmentação (claro) não é uma técnica de backup, destina-se a distribuir leituras e gravações em um cluster.
As técnicas empregadas para shard são o MySQL-Proxy, por exemplo. Isso não é nada que o HScale inventou, é mais ou menos um script LUA simples que distribui leituras e gravações para diferentes servidores de backend. Deve haver muitos exemplos no forge do MySQL.
Outra ferramenta (baseada no MySQL Proxy) é SpockProxy . Totalmente adaptado para sharding. Eles também se livraram de Lua e trabalharam em várias coisas para torná-lo mais rápido que o proxy. Até agora, testei apenas o SpockProxy, mas nunca o executei em produção.
Agora, além desses proxies, você também pode se fragmentar. Obrigatório seria uma tabela mestra, por exemplo:
-------------------
| userA | server1 |
| userB | server2 |
| userC | server1 |
-------------------
Em seguida, construa suas leituras e gravações para o servidor. Não é muito bonito, mas funciona. O próximo obstáculo seria torná-lo mais tolerante. Por exemplo,
server1
, server2
e server3
cada um deve ser um pequeno cluster. E por último, mas não menos importante, outra abordagem interessante para particionar dados e índices entre servidores é o IDDB . Eu não tenho certeza se eles já lançaram seu código, mas suas postagens no blog dão grandes detalhes sobre o que ele faz.
Avise-me se isso ajudar!