Descubra o que levar em conta para implementar um Cluster MySQL para aplicações que exigem alta demanda e disponibilidade.
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.
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.
É 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.
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:
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.
Entre em contato (contato@optmax.com.br)