Como particionar Mysql entre servidores múltiplos?
-
05-07-2019 - |
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?
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 -
- você logado no sistema e o DB é selecionado (DB swap) com base na tabela organização pelo usuário
- Esta seria a nova tabela mestre que você está falando agora com a sua própria escravos
- 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ê.