A alta disponibilidade do MySQL é uma opção que você pode selecionar para permitir que seu banco de dados MySQL permaneça disponível em caso de falha ou interrupção. O recurso permite definir requisitos de tempo de atividade mais altos e tolerância zero à perda de dados. Neste artigo, veremos o que significa o conceito geral de alta disponibilidade e como funciona a opção de alta disponibilidade do MySQL.
O que é alta disponibilidade?
Alta disponibilidade é a capacidade de um sistema ou serviço de continuar funcionando e permanecer disponível quando ocorre uma falha ou interrupção. Um sistema altamente disponível garante que os sistemas e aplicativos essenciais de uma organização estejam sempre funcionando. É especialmente importante para organizações em setores como saúde, finanças e aviação, onde a falha de um sistema essencial pode ter consequências graves.
A alta disponibilidade normalmente é expressa como uma porcentagem do tempo de atividade definida por acordos de nível de serviço (SLAs, Service Level Agreements), com uma pontuação de 100 representando um sistema que nunca falha. Como isso é praticamente inatingível, a maioria das organizações busca disponibilidade de 99,999%.
Como o MySQL alcança alta disponibilidade
Um sistema altamente disponível deve ser capaz de se recuperar instantaneamente se ocorrer uma falha. Uma arquitetura de alta disponibilidade requer pelo menos três elementos básicos que trabalham juntos para garantir recuperação e alta disponibilidade:
Detecção de falhas
O MySQL tem uma opção de alta disponibilidade que permite que os aplicativos atendam aos requisitos de maior tempo de atividade (e tolerância zero à perda de dados). Quando a opção Alta disponibilidade está ativada, o sistema MySQL cria três instâncias em diferentes domínios de falha ou zonas de disponibilidade.
Os dados são replicados entre as três instâncias usando a replicação de grupo MySQL, e o aplicativo se conecta à instância primária para leitura e gravação de dados de e para o banco de dados. Se ocorrer uma falha, o sistema aciona um failover automático para uma instância secundária em minutos.
Failover
O mecanismo de failover transfere serviços para uma instância replicada. Se mais de uma instância de backup estiver disponível, o mecanismo de failover escolherá a melhor para promover para o nó primário.
Um mecanismo de redirecionamento
Depois que ocorre o failover para uma instância secundária, o recurso Alta disponibilidade redireciona todas as conexões de aplicativos e usuários para o que agora é o novo nó primário. Ele também redireciona todas as consultas do nó primário antigo para o novo banco de dados primário.
Alta disponibilidade do MySQL: Tempo de atividade
Tempo de atividade é o tempo em que um sistema está disponível e funcionando corretamente e é expresso como uma porcentagem do tempo total em que se espera que o sistema esteja operacional. Alto tempo de atividade significa que o sistema está disponível e funcionando como esperado na maioria das vezes.
O tempo de atividade que você pode esperar com diferentes níveis de alta disponibilidade do MySQL dependerá da solução específica de alta disponibilidade (HA, High Availability) que você implementar.
Replicação do MySQL
O MySQL Replication permite configurar vários servidores para fornecer redundância e failover para dar suporte a tempos de atividade mais altos do que um servidor MySQL sem capacidade de HA. Uma configuração mestre-escravo usa um único servidor mestre que aceita leituras e gravações e um ou mais servidores secundários somente leitura. Os dados do servidor mestre são replicados de forma assíncrona para os servidores secundários.
Para implementar o failover, você precisará configurar um ou mais servidores secundários como standbys que podem ser promovidos a mestre em caso de falha. O failover é geralmente um processo manual em que você precisa promover o nó secundário para o nó mestre alterando o status do escravo promovido para o modo de leitura/gravação para que ele possa aceitar consultas.
Como o failover é feito manualmente, levará mais tempo e pode ser propenso a erro humano, levando a uma interrupção mais longa. A replicação do MySQL também usa replicação assíncrona, o que significa que, se o master falhar, as transações comprometidas no master podem ainda não ter replicado para os servidores secundários. Se houver perda crítica de dados, os dados precisarão ser restaurados, aumentando o tempo de inatividade do sistema.
Replicação do grupo MySQL
O MySQL Group Replication permite que você obtenha tempo de atividade mais alto do que o MySQL Replication. Usando o MySQL Group Replication, você configura vários servidores MySQL em um grupo com um servidor designado como servidor primário e os outros servidores como servidores secundários. Cada servidor do grupo mantém uma cópia dos dados e usa replicação para garantir que as cópias permaneçam em sincronia.
Se o servidor primário ficar inativo, os servidores secundários no grupo detectarão automaticamente a falha e iniciarão o processo de failover. Um dos servidores secundários é automaticamente promovido para o novo servidor primário e começa a atender solicitações de clientes. Os outros membros secundários do grupo agora recebem atualizações do novo servidor primário e continuam processando solicitações lidas pelo cliente.
Se o servidor com falha voltar a ficar online, ele automaticamente se juntará ao grupo como um servidor secundário.
Como a detecção de falhas e o failover ocorrem automaticamente com a replicação do grupo MySQL, o tempo de inatividade é mínimo, e os usuários e aplicativos normalmente não sabem que ocorreu uma interrupção.
Cluster MySQL
Uma solução de HA de cluster MySQL oferece o mais alto nível de tempo de atividade. Esse sistema de banco de dados distribuído e altamente disponível, juntamente com failover automático e balanceamento de carga, oferece altos níveis de disponibilidade, desempenho e escalabilidade, além de ser desenvolvido para oferecer tempo de inatividade quase zero.
O MySQL Cluster usa três tipos de nós que trabalham juntos para armazenar e gerenciar dados:
- Nós de dados: Armazene dados e lide com consultas de leitura e gravação.
- Nós do servidor MySQL: Receba consultas dos aplicativos clientes, processe-as nos nós de dados e devolva o resultado aos clientes.
- Nós de gerenciamento: Gerencie a operação do cluster e lide com failover e recuperação se ocorrer uma falha.
Se um ou mais nós em um cluster falharem, o cluster detectará automaticamente o problema e acionará o processo de failover. Todo o processo normalmente acontece em um segundo após uma falha, sem interromper o serviço aos aplicativos do cliente. O cluster continua operando normalmente, praticamente sem tempo de inatividade.