Pergunta

Eu sei que o particionamento horizontal ... você pode criar muitas mesas.

Como você pode fazer isso com vários servidores? Isto irá permitir o MySQL de escala.

Criar tabelas X em servidores X?

Alguém se importa de explicar, ou ter tutorial um bom iniciante (passo a passo), que ensina a partição entre vários servidores?

Foi útil?

Solução

Com o MySQL, as pessoas geralmente fazem o que é chamado aplicação baseada sharding .

Em poucas palavras, você terá a mesma base de dados estrutura em vários servidores de banco de dados. Mas não vai conter os mesmos dados.

Assim, por exemplo:

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

Sharding (claro) não é uma técnica de backup, que está destinado a distribuir lê e escreve em um cluster.

As técnicas empregadas para caco são o MySQL-Proxy, por exemplo. Isso não é nada que HScale inventado, é mais ou menos um script LUA simples que distribui lê e grava em diferentes servidores de back-end. Deve haver uma abundância de exemplos na forja MySQL.

Outra ferramenta (baseado em MySQL Proxy) é SpockProxy . Completamente adaptado para sharding. Eles também se livrou off Lua, e eles trabalharam em várias coisas para torná-lo mais rápido do que o proxy. Até agora, eu só testei SpockProxy, mas nunca correu em produção.

Agora Afora esses proxies, você pode caco si mesmo também. Necessário seria uma tabela mestre, por exemplo:.

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

Em seguida, construir o seu lê e escreve para o servidor. Não é muito bonita, mas que funciona. O próximo obstactle seria para torná-lo tolarant mais falt. Assim, por exemplo, server1, server2 e server3 cada um deve ser um pequeno cluster.

E por último mas não menos importante, uma outra abordagem interessante para partição de dados e índices entre servidores é de Digg IDDB . Eu não tenho certeza se eles já lançou o seu código, mas seus posts dá grandes detalhes sobre o que ele faz.

Deixe-me saber se isso ajuda!

Outras dicas

Mas você precisa ter em mente que se você por algum motivo quer tomar esta solução para a nuvem e torná-lo de multi inquilino, em seguida, a configuração acima pode tornar-se mais desafiador. Pense sobre isso -

  1. você logado no sistema e o DB é selecionado (DB swap) com base na tabela organização pelo usuário
  2. Esta seria a nova tabela mestre que você está falando agora com a sua própria escravos
  3. Mas o ponto 2 precisa acima também sharding agora desde que você quer ter certeza de que o seu fora de escala não se torne um gargalo.

Então, agora a questão é que você provavelmente terá que pensar como você pode fazer isso sharding em uma espécie mster-escravo de env onde os escravos são tipicamente para leitura e mestres para a escrita.

aplausos! Gary

Aqui o que está escrito no anúncio de HSCALE 0,1:

Agora precisamos apenas dividir-se enormes mesas, mas, mais tarde, nós queremos distribuir partições mais de múltipla instâncias do MySQL para ter verdadeira a escala horizontal. A parte mais difícil vai ser lidar com transações onde temos que usar distribuídos transações (XA) ou evitar transações envolvendo partições diferentes hospedeiros ...

Tenha um olhar para este projeto: http://sourceforge.net/projects/hscale/ talvez seja adequado para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top