← Voltar ao blog
MySQL 5 min de leitura

Como fazer um health check completo no MySQL e MariaDB

Um roteiro prático, com comandos, para avaliar a saúde de um servidor MySQL ou MariaDB em uma tarde.

Como fazer um health check completo no MySQL e MariaDB

Ninguém espera o carro parar na estrada para trocar o óleo. Mas com banco de dados é o que mais vejo: só se olha para o MySQL ou o MariaDB quando ele já caiu. Um health check é a revisão preventiva. Este é o roteiro que eu uso.

Resumo rápido: Um roteiro prático, com comandos, para avaliar a saúde de um servidor MySQL ou MariaDB em uma tarde.

Série MySQL e MariaDB na prática: comandos válidos para MySQL 8.x e MariaDB 10.6+/11.x, com as diferenças indicadas quando existem.

O mapa do health check

1. Inventário      → versão, engine, tamanho, uptime
2. Configuração    → memória, logs, conexões
3. Recursos        → CPU, RAM, disco, swap
4. Desempenho      → queries, índices, buffer pool
5. Disponibilidade → replicação, backup, restore testado
6. Segurança       → usuários, privilégios, TLS, patches

1. Inventário

SELECT VERSION(), @@version_comment;   -- MySQL ou MariaDB? qual série?
SHOW GLOBAL STATUS LIKE 'Uptime';
SELECT table_schema, ROUND(SUM(data_length+index_length)/1024/1024/1024,2) AS gb
  FROM information_schema.tables GROUP BY table_schema ORDER BY gb DESC;
SELECT engine, COUNT(*) FROM information_schema.tables
 WHERE table_schema NOT IN ('mysql','sys','information_schema','performance_schema')
 GROUP BY engine;   -- MyISAM perdido por aí? anote.

Versão fora de suporte é o primeiro achado. MySQL 5.7 já chegou ao fim de vida; no MariaDB, prefira as séries LTS.

2. Configuração

SHOW VARIABLES WHERE Variable_name IN (
 'innodb_buffer_pool_size','innodb_log_file_size','innodb_redo_log_capacity',
 'innodb_flush_log_at_trx_commit','sync_binlog','max_connections',
 'slow_query_log','long_query_time','binlog_format');
  • innodb_flush_log_at_trx_commit=1 e sync_binlog=1 se o dado não pode ser perdido.
  • slow_query_log ligado. Sem ele, você está no escuro.

3. Recursos

free -h; vmstat 1 5; iostat -x 1 5; df -h

Swap em uso, disco acima de 80% e iowait alto são achados prioritários.

4. Desempenho

-- Consultas que mais somam tempo (sys schema, MySQL e MariaDB 10.6+)
SELECT query, exec_count, total_latency FROM sys.statement_analysis LIMIT 10;
-- Índices nunca usados
SELECT * FROM sys.schema_unused_indexes;
-- Tabelas sem chave primária
SELECT t.table_schema, t.table_name FROM information_schema.tables t
 LEFT JOIN information_schema.table_constraints c
   ON c.table_schema=t.table_schema AND c.table_name=t.table_name AND c.constraint_type='PRIMARY KEY'
 WHERE c.constraint_name IS NULL AND t.table_type='BASE TABLE'
   AND t.table_schema NOT IN ('mysql','sys','information_schema','performance_schema');

5. Disponibilidade

SHOW REPLICA STATUS\G   -- MySQL 8.0.22+ (no MariaDB 10.5+, SHOW REPLICA STATUS também funciona)
-- Olhe: IO e SQL running = Yes, Seconds_Behind_Source baixo, Last_Error vazio

E a pergunta que derruba muita empresa: quando foi o último teste de restore? Backup que nunca foi restaurado é esperança, não backup. Veja backup e disaster recovery.

6. Segurança

SELECT user, host FROM mysql.user WHERE host = '%';          -- acesso de qualquer lugar
SELECT user, host FROM mysql.user WHERE authentication_string = ''; -- sem senha
SHOW GRANTS FOR 'app'@'%';   -- aplicação com ALL PRIVILEGES? não.

O resultado

Um bom health check termina com uma lista priorizada: crítico (risco de perda de dado ou parada), importante (desempenho) e melhoria. Quando isso vira um trabalho formal, com relatório e plano de ação, chamamos de assessment.

A série completa: MySQL e MariaDB na prática

Precisa de ajuda especializada?

Se o seu ambiente MySQL ou MariaDB precisa de diagnóstico, otimização, backup confiável ou acompanhamento contínuo, conheça a HTI Tecnologia, especialista em bancos de dados.

Ainda decidindo entre os dois? Leia MySQL ou MariaDB: qual é o melhor? e o guia definitivo de MySQL.

Quer dominar a base que os dois compartilham?

MariaDB nasceu do MySQL, e tudo o que é fundamento (modelagem, índices, transações, replicação, otimização) vale para os dois. É isso que eu ensino no livro Aprendendo MySQL: Prática, Teoria, Laboratórios, Desafios e Projetos: 292 páginas, 10 laboratórios guiados, 277 exercícios e 4 desafios com gabarito, e uma máquina virtual pronta para você quebrar (e consertar) à vontade.

Conheça o livro e leia a degustação gratuita.

Bora trocar ideia?

Se este artigo te ajudou (ou te fez discordar, que também vale), me siga no LinkedIn e no Instagram. Lá eu posto bastidores de banco de dados, história da computação e histórias de produção que ninguém conta em curso oficial.


Sobre o autor: Alexandre Almeida atua com bancos de dados há mais de 25 anos, foi instrutor oficial de MySQL e Oracle para mais de 1.000 alunos e escreveu Aprendendo MySQL: Prática, Teoria e Laboratórios.

Fontes: MySQL 8.4 Reference Manual (Oracle), MariaDB Server Documentation (MariaDB Knowledge Base), documentação do Percona Toolkit e do Percona XtraBackup. Imagem de capa: ilustração gerada por IA (estetoscópio sobre um servidor em um datacenter).