MySQL Database · DBA · Guia Completo · Curso Prático

mysql> MySQL --dba-cheat-sheet

Do básico ao expert · Administração · Backup · Tuning · Replication · InnoDB Cluster · HeatWave
12Módulos
220+Comandos
4Níveis
5.7Legado
8.0/8.4LTS
9.xInnovation
renato@mysql-lab:~$ mysql -uroot -p && echo "MySQL DBA Training — Renato Barros"
COMPATIBILIDADE: MySQL 5.7 legadoMySQL 8.0MySQL 8.4 LTSMySQL 9.x InnovationMySQL 9.7 LTSInnoDB · Replication · HeatWave
01

Fundamentos & Arquitetura MySQL

mysqld · Client · Databases · Schemas · Storage Engines · InnoDB
Básico
Conceitos Essenciais
ItemDescrição
mysqldProcesso servidor MySQL responsável por conexões, SQL, cache, storage engines e transações.
mysql clientCliente de linha de comando usado para conectar e administrar o servidor.
Database/SchemaNo MySQL, database e schema são usados praticamente como sinônimos.
Storage EngineCamada responsável pelo armazenamento físico e comportamento transacional.
InnoDBEngine padrão moderna: ACID, MVCC, row-level locking, foreign keys e crash recovery.
Data DictionaryMetadados armazenados no próprio servidor a partir do MySQL 8.0.
Arquivos e Diretórios
ItemDescrição
datadirDiretório físico dos dados, por exemplo /var/lib/mysql.
my.cnfArquivo principal de configuração do MySQL.
error logLog de inicialização, falhas, warnings e mensagens críticas.
binary logRegistra eventos de mudanças; usado em replication e point-in-time recovery.
redo logLog transacional do InnoDB para crash recovery.
undo logUsado por rollback, MVCC e leituras consistentes.
Comandos rápidos
mysql@dbserver
$ mysql -uroot -p mysql> status; mysql> select @@version, @@hostname, @@port; mysql> show databases; mysql> show engines; mysql> show variables like 'datadir';
Views e Schemas do Sistema
ItemDescrição
information_schemaMetadados SQL padrão: tabelas, colunas, constraints e estatísticas.
performance_schemaInstrumentação de waits, statements, locks, I/O e memória.
sysViews amigáveis sobre o Performance Schema para troubleshooting.
mysqlUsuários, privilégios, roles, plugins e tabelas internas.
02

Instalação & Configuração

Linux · Repositórios · systemd · my.cnf · Inicialização segura
Básico
Instalação Linux
root@linux
# dnf install mysql-community-server # systemctl enable --now mysqld # systemctl status mysqld # grep 'temporary password' /var/log/mysqld.log # mysql_secure_installation
Parâmetros importantes
ParâmetroUso
innodb_buffer_pool_sizePrincipal cache do InnoDB; normalmente o maior consumidor de memória.
max_connectionsQuantidade máxima de conexões simultâneas.
log_binHabilita binary log para replication e PITR.
server_idIdentificador único em ambientes replicados.
slow_query_logHabilita log de queries lentas.
long_query_timeThreshold para slow query log.
Exemplo my.cnf
[mysqld] server_id=10 datadir=/var/lib/mysql port=3306 default_authentication_plugin=caching_sha2_password innodb_buffer_pool_size=4G innodb_redo_log_capacity=2G log_bin=mysql-bin binlog_expire_logs_seconds=604800 slow_query_log=ON long_query_time=1
Validação
$ mysqladmin -uroot -p ping $ mysql -uroot -p -e "select @@version, @@datadir" $ ss -lntp | grep 3306 $ journalctl -u mysqld -n 100 --no-pager
03

MySQL Client & Administração Básica

Conexão · Usuários · Grants · Schemas · Processlist
Básico
Comandos do mysql
ComandoDescrição
status;Mostra conexão, versão, charset, uptime e SSL.
show databases;Lista databases/schemas.
use appdb;Seleciona database.
show tables;Lista tabelas do database atual.
desc tabela;Descreve colunas de uma tabela.
show processlist;Mostra sessões e comandos em execução.
show grants;Mostra privilégios do usuário atual.
Usuários e privilégios
mysql> create database appdb; mysql> create user 'app'@'%' identified by 'Senha#2026'; mysql> grant select, insert, update, delete on appdb.* to 'app'@'%'; mysql> show grants for 'app'@'%'; mysql> alter user 'app'@'%' identified by 'NovaSenha#2026';
Sessões
mysql> show full processlist; mysql> select * from information_schema.processlist order by time desc; mysql> kill 12345; mysql> show global status like 'Threads_connected';
Metadados úteis
mysql> select table_schema, table_name, engine from information_schema.tables where table_schema='appdb'; mysql> select table_schema, round(sum(data_length+index_length)/1024/1024,2) mb from information_schema.tables group by table_schema; mysql> select user, host, account_locked from mysql.user;
04

InnoDB Storage Engine

Buffer Pool · Redo · Undo · MVCC · Locks · Tablespaces
Intermediário
Componentes InnoDB
ItemDescrição
Buffer PoolCache de páginas de dados e índices.
Redo LogGarante durabilidade e crash recovery.
Undo LogPermite rollback e MVCC.
Doublewrite BufferProteção contra partial page writes.
Change BufferOtimiza mudanças em índices secundários.
Adaptive Hash IndexOtimização de lookup para workloads específicos.
Monitorar InnoDB
mysql> show engine innodb status\G mysql> show variables like 'innodb_buffer_pool_size'; mysql> show global status like 'Innodb_buffer_pool%'; mysql> select * from sys.innodb_lock_waits\G
Tablespaces
  • file-per-table — um arquivo .ibd por tabela quando habilitado.
  • system tablespace — arquivo ibdata1 para estruturas internas e, em versões antigas, dados.
  • undo tablespace — armazena undo fora do system tablespace em versões modernas.
  • temporary tablespace — usado para objetos temporários InnoDB.
Locks
LockDescrição
Record lockBloqueio de registro de índice.
Gap lockBloqueio de intervalo entre registros.
Next-key lockRecord + gap lock, comum em REPEATABLE READ.
Metadata lockBloqueio de DDL/estrutura de objetos.
DeadlockCiclo de dependência entre transações; InnoDB escolhe uma vítima.
05

Backup & Restore

mysqldump · MySQL Shell · MyDumper · XtraBackup · PITR
Intermediário
Estratégias
FerramentaUso
mysqldumpBackup lógico simples, portátil, bom para bancos menores.
mysqlpumpDump lógico com paralelismo em versões compatíveis.
MySQL Shell DumpDump/load moderno e paralelo com util.dumpInstance/util.loadDump.
MyDumperBackup lógico paralelo muito usado em ambientes grandes.
XtraBackupBackup físico online para InnoDB.
Binary LogsBase para point-in-time recovery.
mysqldump
$ mysqldump -uroot -p --single-transaction --routines --triggers --events appdb > appdb.sql $ mysqldump -uroot -p --all-databases --single-transaction --master-data=2 > full.sql $ mysql -uroot -p appdb < appdb.sql
MySQL Shell
$ mysqlsh root@localhost:3306 JS> util.dumpInstance("/backup/full", {threads: 8}) JS> util.dumpSchemas(["appdb"], "/backup/appdb", {threads: 8}) JS> util.loadDump("/backup/appdb", {threads: 8})
PITR com binlog
$ mysqlbinlog --start-datetime="2026-06-12 10:00:00" --stop-datetime="2026-06-12 11:00:00" mysql-bin.000123 > pitr.sql $ mysql -uroot -p < pitr.sql
06

Performance Tuning

EXPLAIN · Slow Query · Performance Schema · Índices · Observabilidade
Intermediário
Fluxo de análise
EtapaAção
1. SintomaCPU, I/O, lock, query lenta ou saturação de conexões.
2. EvidênciaSlow log, Performance Schema, sys schema e métricas de host.
3. PlanoEXPLAIN, EXPLAIN ANALYZE, cardinalidade e índices.
4. CorreçãoÍndice, rewrite, particionamento, parâmetro ou arquitetura.
5. ValidaçãoComparar tempo, rows examined, locks, I/O e CPU antes/depois.
SQL Tuning
mysql> explain select * from pedidos where cliente_id=10; mysql> explain analyze select * from pedidos where cliente_id=10; mysql> show index from pedidos; mysql> analyze table pedidos;
Slow Query Log
mysql> set global slow_query_log=ON; mysql> set global long_query_time=1; mysql> show variables like 'slow_query_log%'; $ mysqldumpslow -s t -t 20 /var/lib/mysql/*slow*.log
sys schema
mysql> select * from sys.statement_analysis limit 10; mysql> select * from sys.schema_table_statistics order by total_latency desc limit 10; mysql> select * from sys.user_summary_by_statement_latency;
07

Segurança

Usuários · Roles · TLS · Password Policy · Auditoria
Intermediário
Boas práticas
  • Menor privilégio — conceder apenas o necessário por schema/tabela.
  • Não usar root em aplicação — criar usuários específicos por serviço.
  • TLS — exigir conexão criptografada em rede não confiável.
  • Rotação de senhas — controlar validade e política de senha.
  • Auditoria — usar logs/plugins conforme edição e necessidade regulatória.
Roles e grants
mysql> create role app_readonly; mysql> grant select on appdb.* to app_readonly; mysql> grant app_readonly to 'app'@'%'; mysql> set default role app_readonly to 'app'@'%';
TLS
mysql> show variables like '%ssl%'; mysql> alter user 'app'@'%' require ssl; mysql> status;
Auditoria básica
mysql> show variables like 'general_log'; mysql> set global general_log=ON; mysql> select user, host from mysql.user;
Em produção, general_log pode gerar alto volume. Use com critério.
08

Replication

Source/Replica · GTID · Binlog · Relay Log · Lag
Avançado
Conceitos
ItemDescrição
SourceServidor origem que grava binary logs.
ReplicaServidor que recebe e aplica eventos.
GTIDIdentificador global de transação; simplifica failover e reconfiguração.
Binary LogEventos gerados no source.
Relay LogEventos recebidos pela replica antes da aplicação.
Replica LagAtraso entre source e replica.
Comandos
mysql> show binary logs; mysql> show master status; mysql> show replica status\G mysql> start replica; mysql> stop replica;
GTID
mysql> show variables like 'gtid_mode'; mysql> show variables like 'enforce_gtid_consistency'; mysql> select @@global.gtid_executed;
Lag
mysql> show replica status\G Seconds_Behind_Source: 0 Replica_IO_Running: Yes Replica_SQL_Running: Yes
09

Group Replication & InnoDB Cluster

HA · MySQL Shell · MySQL Router · Failover
Avançado
Componentes
ItemDescrição
Group ReplicationReplicação em grupo com coordenação e tolerância a falhas.
InnoDB ClusterSolução HA usando Group Replication, MySQL Shell e Router.
MySQL ShellAdminAPI para criar e administrar cluster.
MySQL RouterRoteia aplicação para primary/replicas.
Single-primaryModo comum com um writer e múltiplos readers.
AdminAPI
$ mysqlsh root@mysql01:3306 JS> dba.checkInstanceConfiguration('root@mysql01:3306') JS> cluster = dba.createCluster('cluster01') JS> cluster.addInstance('root@mysql02:3306') JS> cluster.status()
Router
$ mysqlrouter --bootstrap root@mysql01:3306 --user=mysqlrouter $ systemctl enable --now mysqlrouter $ mysql -uapp -p -h router01 -P 6446
Checklist HA
  • Validar DNS/hosts entre nós.
  • Sincronizar horário com NTP/chrony.
  • Garantir usuários administrativos e recovery user.
  • Testar failover planejado e não planejado.
  • Monitorar quorum, latência e estado dos membros.
10

Upgrade & Versionamento

5.7 → 8.0 → 8.4 LTS → 9.x · Compatibilidade · Deprecações
Avançado
Trilha recomendada
  • MySQL 5.7 — versão legada, comum em ambientes antigos.
  • MySQL 8.0 — série bugfix antes do modelo LTS/Innovation.
  • MySQL 8.4 LTS — linha LTS moderna para produção estável.
  • MySQL 9.x — linha Innovation/LTS atual conforme disponibilidade.
Para upgrades antigos, valide caminho, compatibilidade, reserved words, authentication plugin e mudanças de data dictionary.
Pré-checks
mysql> select @@version; mysql> show variables like 'sql_mode'; mysql> show variables like 'default_authentication_plugin'; $ mysqlsh -- util checkForServerUpgrade root@localhost:3306
Checklist
  • Backup full validado antes do upgrade.
  • Teste em homologação com cópia realista.
  • Validar aplicação, drivers e conectores.
  • Revisar plugins, charset/collation e autenticação.
  • Planejar rollback e janela de manutenção.
Pós-upgrade
$ systemctl restart mysqld mysql> select @@version; mysql> check table appdb.pedidos; mysql> analyze table appdb.pedidos;
11

Troubleshooting DBA

Locks · Deadlocks · Conexões · I/O · Replication Lag · Logs
Expert
Primeiros comandos
$ systemctl status mysqld $ tail -100 /var/log/mysqld.log mysql> show full processlist; mysql> show engine innodb status\G mysql> show global status like 'Threads%';
Problemas comuns
SintomaOnde olhar
Conexões esgotadasmax_connections, Threads_connected, application pool.
Deadlockshow engine innodb status\G e logs da aplicação.
Replication lagshow replica status\G, I/O, queries longas e rede.
Disco cheiodatadir, binlogs, temp, backups e logs.
CPU altaTop SQL, EXPLAIN ANALYZE, índices e plano.
I/O altoBuffer pool hit ratio, flush, redo, scans e disco.
Locks
mysql> select * from performance_schema.data_locks\G mysql> select * from performance_schema.data_lock_waits\G mysql> select * from sys.innodb_lock_waits\G
Espaço
$ df -h $ du -sh /var/lib/mysql/* | sort -h mysql> select table_schema, round(sum(data_length+index_length)/1024/1024/1024,2) gb from information_schema.tables group by table_schema order by gb desc;
12

Cloud & MySQL HeatWave

OCI · HeatWave · DB Systems · Backup · Monitoring · Migration
Expert
Cloud DBA
ItemDescrição
MySQL HeatWaveServiço gerenciado MySQL com aceleração analítica HeatWave.
DB SystemInstância gerenciada com compute, storage, backups e rede.
Backup automáticoRetenção e restore gerenciados pela plataforma.
MonitoringMétricas de CPU, memória, conexões, storage e queries.
HAArquiteturas gerenciadas com alta disponibilidade conforme serviço.
Migração
  • Inventariar versão, tamanho, engines, usuários e rotinas.
  • Validar compatibilidade 5.7/8.0/8.4.
  • Escolher método: dump lógico, replication, MySQL Shell ou ferramenta cloud.
  • Planejar cutover, rollback e janela.
  • Executar validação de dados, performance e aplicação.
Comandos úteis
mysql> select @@version, @@hostname; mysql> show variables like 'innodb_buffer_pool_size'; mysql> show global status like 'Threads_connected'; mysql> show global status like 'Queries';
Checklist profissional
  • Backups e restore testados.
  • Alertas para storage, conexões, replication e slow queries.
  • Usuários com menor privilégio.
  • Plano de upgrade e patching.
  • Runbook de incidentes e continuidade.

Mini Lab Interativo — MySQL DBA Simulator

Digite comandos MySQL simulados · Use help para listar opções · Clique nos comandos para testar
Lab
Aulas rápidas do Lab
  • Aula 1: Validar versão, status e databases.
  • Aula 2: Ver engines, variáveis e status global.
  • Aula 3: Analisar sessões com processlist.
  • Aula 4: Ver InnoDB, locks e buffer pool.
  • Aula 5: Simular backup, restore e binlogs.
  • Aula 6: Checar replication e lag.
MAPA VISUAL MYSQL DATABASE
CLIENTS app · shell · router MYSQLD SERVER SQL Layer · Optimizer · Connections INNODB MVCC · Locks · ACID BUFFER POOL Data & Index Cache REDO / UNDO Crash Recovery · MVCC BINLOG Replication · PITR
"Performance não é mágica; é observabilidade, método e consistência."
— Renato Barros
🙂 ┌───────────────┐ │ mysql> SQL_ │ └───────────────┘ ⌨️
Terminal MySQL Simulator
Dica: digite help para ver os comandos suportados. Cada execução limpa o resultado anterior.
mysql simulator
Digite help ou clique em um comando acima para começar.