Quais são as desvantagens de usar o Galera Cluster em vez da Replicação de Mestre / Escravo?

13

Quais são as desvantagens de usar o Galera Cluster em vez da replicação mestre / escrava regular? O tempo de atraso de 0 escravo do Galera, replicação síncrona e nenhum ponto único de falha parecem muito atraentes; por que o cluster Galera não é tão comum?

Sam
fonte

Respostas:

16

Porque, como qualquer outra otimização, não se encaixa em todas as cargas de trabalho.

O Galera pode ficar sobrecarregado por uma alta taxa de transações ou quando as transações atualizam muitas linhas. Também pode fazer com que seus aplicativos sofram atrasos no COMMIT à medida que o cluster é sincronizado.

O Galera também não atualiza outros nós de forma síncrona. Apenas transmite worksets de forma síncrona. Dessa forma, é um pouco como a replicação padrão no modo semi-síncrono. Portanto, ainda há uma pequena chance de ler dados obsoletos de outro nó do cluster. Há uma opção que você pode definir para forçar o SELECT a esperar até que a fila de worksets atualize o banco de dados, mas isso significa que há atrasos no SELECT. E até uma chance de obter um impasse no SELECT, o que parece contra-intuitivo.

O Galera é brilhante, mas não é uma tecnologia única. Ainda existem boas razões para usar a replicação assíncrona.

Bill Karwin
fonte
Obrigado Bill, mas estou lendo suas apresentações da Percona há algum tempo.
6133 Sam
3
Outra desvantagem é ter um nó doador desligado e ser usado para copiar (via xtrabackup, rsync, mysqldump) para qualquer nó introduzido no cluster, deixando os nós restantes no cluster para fazer o trabalho pesado até que o novo nó esteja sincronizado. Não é uma desvantagem para bancos de dados pequenos ou médios.
RolandoMySQLDBA
1
Os métodos SSR do @RolandoMySQLDBA, como o xtrabackup, evitam o bloqueio do doador. Embora seja verdade que, em qualquer caso, o doador terá um desempenho degradado se o banco de dados for grande.
jynus
3
@ jynus, o problema não está bloqueando o nó doador , mas o nó receptor está offline e indisponível para qualquer consulta enquanto o SST estiver em andamento. Portanto, se você estiver usando o cluster para balanceamento de carga de consulta, as consultas que teriam ido para o nó de recebimento deverão ser enviadas para outros nós até que o SST seja concluído.
Bill Karwin
2
Caso alguém esteja procurando, a opção à qual Bill está se referindo é wsrep_causal_reads... definida como ON SET GLOBAL wsrep_causal_reads = 'ON';para obter seleções para aguardar até que todos os conjuntos de gravação sejam concluídos.
Lucas Cousins
2

Algumas desvantagens do Galera incluem:

  • Suporte ao mecanismo de armazenamento: limitado ao InnoDB / XtraDB (mais suporte experimental para MyISAM)
  • Suporte ao SO: apenas Linux / Unix-like Oses

Há também algumas limitações que devem ser observadas, mas talvez possam ser contornadas:

  • Por padrão, as operações DDL (isolamento total do pedido) bloqueiam todo o cluster até que elas sejam concluídas
  • Toda tabela deve ter uma chave primária explícita, única ou com várias colunas
  • Bloqueio: alguns tipos de bloqueio explícito não são suportados.

Para mais informações, consulte os detalhes em Codership (e aqui sobre o bloqueio de DDL), MariaDB e Percona .

EDIT: Observe também que alguns argumentam que clusters de banco de dados fortemente acoplados, como o Galera, não devem ter nós distribuídos geograficamente devido aos problemas decorrentes da falta de confiabilidade inerente à camada de rede. Em vez disso, soluções assíncronas devem ser usadas nesses casos. Veja: Como não fazer alta disponibilidade do MySQL: distribuição geográfica de nós com uso indevido de replicação baseada em Galera . No entanto, o blog Galera afirma que (2015):

O argumento para a criação de clusters de bancos de dados distribuídos geograficamente é forte. A abordagem Galera para replicação e os recursos específicos do produto tornam prático a criação de clusters Galera que abrangem vários data centers e vários usuários já possuem esses clusters em produção.

dbdemon
fonte