Cluster MySQL usando Group Replication

Descubra o que levar em conta para implementar um Cluster MySQL para aplicações que exigem alta demanda e disponibilidade.

OPTMAX · 12 de Junho de 2020

Cluster MySQL usando Group Replication

Neste artigo, vamos discutir sobre o Group Replication presente nas versões 5.7 ou superior do MySQL. É um recurso que permite utilizar vários servidores MySQL, trabalhando em conjunto, em um esquema de replicação master-master, isto é, todas as escritas (mais precisamente transações) executadas em quaisquer servidores do cluster são propagadas aos outros servidores.

Essa é uma descrição simplista do Group Replication, pois existem mecanismos bastante sofisticados para coordenar a execução de transações e garantir a consistência de dados entre todos os servidores. É importante ressaltar que tudo isso é feito de forma automática, inclusive o tratamento de falhas em servidores do cluster, quando estes deixam inesperadamente o cluster. Como consequência disso, é possível construir uma estrutura robusta, com vários servidores, onde cada um possui uma cópia completa de todos os dados, garantindo alta disponibiidade e performance, já que a carga de trabalho pode ser distribuída através de balanceamento de carga.

Group Replication vs. Replicação Tradicional

A replicação tradicional do MySQL permite associar servidores escravos (slaves) a um servidor principal (master). Mesmo hoje em dia, essa ferramenta ainda é muito útil para extrair relatórios e realizar backups demorados a partir de servidores escravos sem sobrecarregar o servidor principal. Porém, o problema ocorria quando era necessário distribuir operações de escrita. Nesse caso, normalmente se recorria a estruturas master-master com dois servidores, ou ainda com múltiplos servidores em uma estrutura tipo anel (master1->master2->...->masterN->master1). Comumente ocorriam duplicidades em chaves únicas e problemas em chaves estrangeiras, o que tornava quase inviável a administração de uma estrutura de produção deste tipo (salvo para aplicações muito específicas). O Group Replication surgiu para resolver exatamente essa questão, automatizando também a replicação de escritas.

Previsão de Infraestrutura

É possível implementar o Group Replication com estruturas a partir de 3 servidores MySQL. Com 3 servidores, o cluster possui tolerância a falha de 1 servidor. Porém, na prática, os cenários em que essa estrutura é tomada como solução, são cenários de alta demanda, com centenas de milhares de requisições por minuto (leitura e escrita). Nesse caso, comumente é usado um número maior de servidores, aumentando assim a performance e disponibilidade da estrutura (por exemplo, com 7 servidores no cluster a tolerância falhas passa para 3 servidores). Estruturas mais simples, como um servidor mais potente junto com um slave de backup, devem ser levadas em conta antes de se optar pelo Group Replication, já que minimizam os custos com hardware e manutenção.

Do Dev ao Prod

Antes de fazer o deploy de uma estrutura desse tipo para um ambiente de produção de alta demanda, alguns pontos importantes devem ser observados:

  1. Use uma ferramenta robusta e eficiente para o balanceamento de carga.
  2. Realize um teste de carga compatível com a demanda. O log de queries pode ser usado para registrar o perfil de consultas e transações do cluster, para depois aplicá-lo de forma paralela.
  3. Monitore a infraestrutura a partir da instrumentação presente no Group Replication e Performance Schema. Use ferramentas de monitoramento (e.g. Zabbix) para criar gatilhos para falhas.
  4. Mesmo com um estrutura com alta disponibilidade, realize backups frequentes e os mantenha em uma infraetsrutura distinta do cluster. Essa é uma regra de ouro que te salvará em momentos de desastre.

Conclusão

O Group Replication surgiu para resolver um problema histórico da replicação clássica do MySQL. É uma solução robusta e performática, que deve ser levada em conta para aplicações que exigem alta demanda.

Quer saber mais?

MySQL Group Replication
Monitoramento com Zabbix

Entre em contato (contato@optmax.com.br)

Sobre a OPTMAX

Procuramos nos capacitar para entender melhor o universo em que nossos clientes estão inseridos.
Se entendemos, somos capazes de propor soluções e implementá-las.
Todas essas ações nos trazem conhecimento e experiência para inovar.

Nossos Contatos

Rua Doutor Jarbas Vidal Gomes 30 SL 906
Bairro Cidade Nova
Belo Horizonte, Minas Gerais