Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como particionar o Mysql em vários SERVIDORES?


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!