MariaDB sob pressão: ProxySQL, Galera Cluster e backups confiáveis

Como fazer o MariaDB aguentar carga real: otimização, balanceamento com ProxySQL, alta disponibilidade com Galera Cluster e backups confiáveis com Mariabackup.

Equipe Solvefy 7 min de leitura

O MariaDB carrega muita aplicação em produção, e por bons motivos: é maduro, compatível com o ecossistema MySQL e open-source. Mas, como todo banco, ele revela seus limites quando a carga aperta. Três frentes fazem a diferença entre um MariaDB que engasga e um que aguenta pressão.

Comece medindo, não configurando

Antes de mexer em parâmetro, descubra onde está a dor. O MariaDB entrega isso de graça:

  • Registro de consultas lentas, com limite ajustado para capturar o que realmente pesa.
  • Estatísticas de execução acumuladas, que revelam as consultas mais frequentes — muitas vezes o problema não é a consulta lenta isolada, e sim a rápida executada dez mil vezes por minuto.
  • Planos de execução das consultas críticas, conferindo se o índice esperado está sendo usado de fato.
  • Estado das conexões e das travas, para separar lentidão de contenção.

Uma sessão de análise honesta costuma encontrar duas ou três consultas responsáveis pela maior parte do consumo. Corrigi-las rende mais que qualquer upgrade de hardware.

Otimização: a base antes de escalar

Antes de adicionar cluster ou proxy, o básico precisa estar afinado:

  • Buffer pool do InnoDB: o parâmetro que mais impacta desempenho. Ele determina quanto de dados e índices ficam em memória. Curto demais, e o banco vive indo ao disco. Em servidor dedicado, a maior parte da RAM deveria estar aqui.
  • Índices certos: consultas lentas quase sempre são falta de índice — ou índice que não é usado. Analisar as consultas reais e indexar o que importa costuma render mais que qualquer hardware novo.
  • Configuração de logs e flush: ajustada ao equilíbrio entre desempenho e durabilidade que o seu negócio exige.
  • Tamanho do log de transação: log pequeno provoca escrita constante em disco; dimensioná-lo adequadamente suaviza os picos de I/O.
  • Tipos de dado e conjunto de caracteres: coluna maior que o necessário multiplica o tamanho dos índices, e conjunto de caracteres inconsistente entre tabelas impede o uso de índice em junções.

Escalar um banco mal otimizado é caro e frustrante — você joga hardware num problema que era de configuração.

Sobre índices, três princípios evitam a maior parte dos problemas: índice composto na ordem em que as colunas são filtradas; índice que cobre a consulta inteira, dispensando a leitura da tabela; e disciplina para remover índice que ninguém usa, porque cada um deles cobra em cada escrita.

Durabilidade: uma decisão de negócio

Há um parâmetro que define se cada transação confirmada é gravada em disco imediatamente ou agrupada com outras. A configuração mais segura garante que nada se perde numa queda abrupta; as mais relaxadas entregam ganho expressivo de escrita ao custo de possivelmente perder as últimas transações.

Não existe resposta técnica universal aqui. Para dado financeiro, a escolha é óbvia. Para métricas de navegação, relaxar é razoável. O que não é aceitável é essa decisão ter sido tomada por acidente, sem ninguém do negócio saber.

ProxySQL: inteligência entre a aplicação e o banco

O ProxySQL fica entre a aplicação e o MariaDB e faz muito mais que repassar conexões:

  • Pool de conexões, aliviando o banco da sobrecarga de abrir e fechar conexões o tempo todo.
  • Roteamento de consultas: envia leituras para réplicas e escritas para o primário, distribuindo a carga.
  • Balanceamento e failover: se um nó sai, o tráfego é redirecionado sem a aplicação perceber.
  • Regras por padrão de consulta, permitindo direcionar, limitar ou até bloquear comandos específicos sem alterar a aplicação.

É a peça que transforma vários servidores MariaDB em um serviço coeso do ponto de vista da aplicação.

Uma armadilha merece destaque: separar leitura e escrita não é gratuito. Se a aplicação grava um registro e imediatamente o lê de uma réplica com atraso, o dado pode não estar lá. O resultado são bugs intermitentes e difíceis de reproduzir. As saídas são conhecidas: manter na primária as leituras que acontecem logo após uma escrita, ou exigir consistência para consultas específicas. Escolher uma e documentar é parte do projeto, não detalhe.

Galera Cluster: alta disponibilidade síncrona

O Galera Cluster entrega replicação síncrona multi-primário: os nós mantêm cópias consistentes e você pode ler (e, com cuidado, escrever) em qualquer um. A vantagem é resiliência real — a queda de um nó não derruba o serviço nem exige um failover demorado. Exige atenção ao projeto (número ímpar de nós para evitar split-brain, rede de baixa latência entre eles), mas entrega um dos modelos de HA mais sólidos do ecossistema MySQL/MariaDB.

Aquele "com cuidado" carrega mais peso do que parece, e vale abri-lo:

  • Escreva em um nó só. Tecnicamente você pode escrever em qualquer um, mas gravações concorrentes na mesma linha, em nós diferentes, geram conflitos que a aplicação recebe como erro na hora de confirmar. Direcionar toda a escrita para um nó — via proxy, com os outros prontos a assumir — elimina essa classe de problema sem perder a alta disponibilidade.
  • Toda tabela precisa de chave primária. É requisito do modelo de replicação, e tabela legada sem chave é a surpresa mais comum na migração.
  • Latência entra em cada confirmação. Como a transação precisa ser validada por todos os nós antes de confirmar, a rede entre eles passa a fazer parte do tempo de resposta. Cluster esticado entre cidades distantes precisa de configuração específica e expectativa ajustada.
  • Transações gigantes são inimigas. Uma carga em lote de milhões de linhas em uma única transação pressiona o cluster inteiro. Quebrar em lotes menores é a prática.
  • Mudanças de schema exigem planejamento. Alterações de estrutura podem bloquear o cluster enquanto rodam. Em tabela grande, isso significa janela — ou uma estratégia específica de aplicação nó por nó.
  • Nó que entra no cluster precisa se sincronizar. Se o histórico em cache não cobrir o período em que ele ficou fora, a sincronização é completa, a partir de outro nó, que fica sobrecarregado durante o processo. Dimensionar esse cache evita transferências completas desnecessárias.

Se essa lista soar pesada para o seu caso, existe a alternativa clássica e perfeitamente respeitável: replicação assíncrona com um primário, réplicas para leitura e o proxy cuidando do failover. Menos garantias de consistência imediata, muito menos complexidade.

Mariabackup: backup que não trava o banco

Backup de banco em produção não pode parar a operação. O Mariabackup faz backup físico a quente — com o banco rodando — de forma consistente. Combinado com uma política de retenção e, idealmente, arquivamento off-site, ele garante que você tem para onde voltar. E, como sempre: backup só é backup depois de restaurado em teste. Um arquivo de backup nunca validado é uma suposição.

Alguns pontos que fazem a diferença na hora da verdade:

  • Backup completo mais incrementais reduz janela e espaço, ao custo de uma cadeia que precisa estar íntegra por inteiro.
  • Guarde a posição do log binário junto do backup. É ela que permite avançar do backup até um instante específico.
  • Combine com os logs binários para ter recuperação a um ponto no tempo — a diferença entre perder um dia e perder minutos depois de um comando equivocado.
  • Mantenha também um despejo lógico periódico. Ele é mais lento para restaurar, mas serve para recuperar uma única tabela e para migrar entre versões, casos em que o backup físico não ajuda.
  • Documente e cronometre a restauração. O número que interessa não é "temos backup", é "voltamos em quanto tempo".

Segurança e ciclo de versão

Dois itens que costumam ficar para depois e cobram caro: acesso de rede restrito ao que precisa conversar com o banco, com usuários específicos por aplicação e privilégio mínimo em vez de um superusuário compartilhado; e a versão em uso dentro do ciclo que ainda recebe correções, com atualização planejada e testada em cópia dos dados antes de tocar em produção.

Checklist de produção

  1. Consultas mais custosas identificadas, indexadas e reavaliadas periodicamente.
  2. Buffer pool e logs dimensionados ao servidor e à carga.
  3. Nível de durabilidade escolhido conscientemente, com o negócio ciente.
  4. Proxy na frente, com pool e failover configurados e testados.
  5. Estratégia de leitura definida quanto ao atraso de replicação.
  6. Alta disponibilidade com número ímpar de nós e escrita concentrada em um deles.
  7. Backup físico com retenção, logs binários preservados e restauração cronometrada.
  8. Despejo lógico periódico para recuperação seletiva.
  9. Monitoramento de conexões, travas, atraso de replicação e espaço em disco.
  10. Acesso restrito, usuários por aplicação, versão dentro do suporte.

O conjunto que aguenta pressão

Otimização dá a base; ProxySQL distribui e protege; Galera entrega HA; Mariabackup fecha com recuperação confiável. É a combinação que leva o MariaDB de "funciona no meu ambiente" para "aguenta o pico de produção".

Onde a Solvefy/Cloud entra

Nossa consultoria especializada em bancos cobre MariaDB de ponta a ponta: otimização, ProxySQL, Galera Cluster, migração e backups com Mariabackup — com runbooks e transferência de conhecimento. Cobrada por hora, com escopo definido.

Seu MariaDB aguenta o próximo pico? Diagnóstico gratuito, sem compromisso, em solvefy.cloud.

Solvefy/Cloud — Infraestrutura que cresce com você.

Faça agora o seu diagnóstico e orçamento

Inicie com um diagnóstico gratuito da sua infraestrutura e receba uma proposta personalizada — com escopo, cronograma e valores.