Qual é a diferença entre o MySQL Fabric e o MySQL Cluster

9

Eu sou novo no mundo MySQL e fiquei confuso com os dois. Ambos não oferecem alta disponibilidade e sharding?

Além disso, como o WebScaleSQL se compara?

Mark13426
fonte

Respostas:

20

Essas três coisas não têm nada a ver uma com a outra. Vou fazer uma introdução e você pode pesquisar ou solicitar mais detalhes separadamente:

MySQL Cluster é o nome de marketing do que muitos de nós chamamos - para evitar confusões como a que você está sofrendo atualmente - "NDB Cluster" ou "MySQL NDB Cluster". É um armazenamento de valor-chave síncrono, principalmente apenas de memória, que permite uma arquitetura de nada compartilhado para o MySQL (fornecendo um back-end para o NDB Engine). Oferece sharding automático (melhor rendimento de leitura e gravação) e alta disponibilidade. Funciona bem para sistemas de dados pequenos de valor-chave de alto rendimento, mas é relativamente complexo de configurar (levando a problemas se não estiver configurado corretamente ou for usado de maneira não intencional) e não é a melhor coisa para latência. sábio (velocidade bruta). Esta é uma versão simplificada (pode ser usada para mais do que apenas memória e valor-chave, mas foi projetada em torno dela). Na minha opinião, é uma peça muito boa de engenharia, mas possui casos de uso limitados, pois é um produto diferente do servidor MySQL normal com downloads separados (e requer o uso de um mecanismo específico).

O MySQL Fabric é um conjunto de ferramentas / middleware escrito em python que permite o gerenciamento de um conjunto de servidores MySQL regulares em um ambiente GTID replicado . Não é um cluster em si, mas facilita o gerenciamento de um. Possui links para (por enquanto) conectores Java e Python, para que ele possa lidar automaticamente com o compartilhamento e a alta disponibilidade de servidores, mas é uma camada sobre servidores MySQL regulares e replicação regular (mecanismos de armazenamento regulares como o InnoDB podem ser usados) . Até agora, a replicação é assíncrona (ou semi-síncrona); portanto, pode não fornecer por si só a melhor consistência e segurança; isso pode mudar nas futuras versões 5.7. No entanto, essa abordagem tem menos sobrecarga na latência e usa a tecnologia de replicação mais familiar do MySQL DBA. O MySQL Fabric é um garoto relativamente novo na vizinhança, portanto ainda não muito extenso, mas parece ser a reação da Oracle (juntamente com a replicação síncrona anunciada) aos clusters baseados em Galera dos concorrentes.

Se você precisar de sharding e HA, poderá usar um dos 2 produtos anteriores, mas provavelmente para cenários totalmente diferentes.

O WebScaleSQL não é uma solução de HA, como as anteriores, é apenas o nome que várias empresas deram a um fork / versão do MySQL, onde compartilham patches específicos de que precisam e talvez a Oracle não tenha aplicado. Tanto quanto sei, ele foi criado pelo Facebook, Twitter, LinkedIn e Google, e eles reformulam suas próprias versões do MySQL sobre essa base comum. Eles não fornecem suporte ou versões binárias. Se você é um usuário final, provavelmente não deve usá-lo, mas fique de olho no projeto para ver o que irá evoluir a partir dele ou a resposta de outros fornecedores.

Se você está tentando aprender / iniciar com o MySQL HA / scaling, comece com a replicação básica do MySQL (pode não ser a melhor, mas é a coisa mais fácil para começar), então você pode continuar a partir daí para outras soluções: DRBD [ sic], replicação de GTID, NDB, Galera, tungstênio.

jynus
fonte
Por que você coloca o "[sic]" após o nome DRBD? Eu olhei para eles e eles parecem bastante impressionantes do ponto de vista tecnológico.
Vérace 26/03
DRBD é uma tecnologia em nível de bloco, o que significa que não sabe nada sobre o DB ou seus buffers. Não espere um ótimo desempenho para sistemas OLTP; ele não pode ser ativo-ativo (nem mesmo no modo somente leitura), se o MySQL travar, você deverá recuperar o travamento local e não o protegerá da corrupção do banco de dados. Não é uma tecnologia pura de "nada compartilhado" no nível lógico - é mais um RAID distribuído, portanto não é 100% adequado ao MySQL. É bom para carga de baixa gravação ou se você precisar distribuir vários protocolos ao mesmo tempo. A replicação semi-sincronizada com base em linha é superior caso contrário.
jynus
@ Vérace ... É, em resumo, uma objeção de caso de uso (clustering MySQL), não tenho nada contra a tecnologia em outros casos, onde protocolos de nível superior podem não estar disponíveis / pode ser um ajuste melhor.
jynus
Eu entendi perfeitamente - o argumento sobre o buffer é bem feito - o DRBD, como você diz, não sabe nada sobre os elementos internos do MySQL - ou seja, coisas comprometidas, mas ainda não gravadas em disco serão perdidas no caso de uma falha.
Vérace 28/03
2

O MySQL Fabric é implementado como um nó / processo do MySQL Fabric (que executa funções de gerenciamento) e conectores compatíveis com o Fabric, capazes de rotear consultas e transações diretamente para o servidor MySQL mais apropriado. O nó MySQL Fabric armazena informações de estado e roteamento em seu State Store (que é um banco de dados MySQL).

O MySQL Cluster é uma tecnologia que permite agrupar bancos de dados na memória em um sistema que não compartilha nada. A arquitetura de nada compartilhado permite que o sistema trabalhe com hardware muito barato e com um mínimo de requisitos específicos para hardware ou software.

Elayachi
fonte