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.

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=1esync_binlog=1se o dado não pode ser perdido.slow_query_logligado. 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
- MySQL e MariaDB lentos? 12 causas comuns (e como resolver)
- Como fazer um health check completo no MySQL e MariaDB
- MySQL e MariaDB travando? Entenda locks e deadlocks
- Como otimizar o InnoDB buffer pool no MySQL e MariaDB
- Como encontrar queries lentas no MySQL e MariaDB
- Índices no MySQL e MariaDB: quando criar e quando remover
- Consultoria MySQL e MariaDB: quando vale a pena contratar um DBA especializado?
- DBA remoto para MySQL e MariaDB: como funciona?
- Assessment MySQL e MariaDB: o que é avaliado?
- Backup e disaster recovery no MySQL e MariaDB
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).