Tunning-Mysql
Sobre
Olá! Visitante, reunimos aqui, informações sobre o processo de Tunning no Mysql, este procedimento tende a aumentar o desempenho de leitura e escrita em Banco, assim aumentando a performance geral do sistema de Banco de Dados em Mysql. Estes ajustes podem auxiliar em momentos que algum sistema ou rede tenham gargalo, ou até mesmo evita um upgrade desnecessário de infra.
Guia Completo de Tunning e Monitoramento de MySQL
Introdução
Este guia reúne todas as etapas para otimizar e monitorar servidores MySQL modernos (5.7 ou 8.0), com foco em:
- Aumentar a performance de leitura e escrita
- Reduzir gargalos
- Evitar upgrades desnecessários de infraestrutura
- Coletar métricas em tempo real e histórico
As práticas incluem uso do **MySQLTuner**, ajustes no arquivo de configuração e monitoramento contínuo com **Performance Schema** e **PMM (Percona Monitoring and Management)**.
MySQLTuner
O MySQLTuner é um script em Perl que analisa o estado atual do MySQL e sugere ajustes de performance.
Download
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl -O mysqltuner.pl chmod +x mysqltuner.pl # Opcional: auditoria de senhas básicas wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt
Executar análise
perl mysqltuner.pl
O script gera recomendações de:
- Buffers e caches
- Conexões
- Queries e waits
- Segurança do MySQL
Ajustes de Configuração
Local do arquivo
- Ubuntu/Debian:
/etc/mysql/mysql.conf.d/mysqld.cnf - CentOS/RHEL:
/etc/my.cnf
Exemplo de abertura:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Valores recomendados por RAM
| Variável | 8 GB RAM | 16 GB RAM | 32 GB RAM | Observações |
|---|---|---|---|---|
| tmp_table_size | 64M | 128M | 256M | Buffers temporários para tabelas HEAP/Temp |
| max_heap_table_size | 64M | 128M | 256M | Igual a tmp_table_size |
| innodb_buffer_pool_size | 2G | 8G | 16G | Cerca de 70-80% da RAM dedicada ao MySQL |
| innodb_buffer_pool_instances | 1 | 4 | 8 | Para pools grandes, aumenta paralelismo |
| innodb_log_file_size | 256M | 512M | 1G | Total log files ≈ 25% do buffer pool |
| performance_schema | ON | ON | ON | Ativar para diagnósticos avançados |
| max_connections | 200 | 300 | 400 | Ajustar conforme número de usuários |
| query_cache_size | 0 | 0 | 0 | Ignorado no MySQL 8.0 |
| query_cache_type | 0 | 0 | 0 | Ignorado no MySQL 8.0 |
Exemplo de bloco em mysqld.cnf
[mysqld] tmp_table_size = 128M max_heap_table_size = 128M innodb_buffer_pool_size = 8G innodb_buffer_pool_instances = 4 innodb_log_file_size = 512M performance_schema = ON max_connections = 300 query_cache_size = 0 query_cache_type = 0
Aplicar alterações
sudo systemctl restart mysql
Após reiniciar, execute novamente o MySQLTuner para validar os ajustes.
Monitoramento Contínuo
Performance Schema (PFS)
O Performance Schema coleta métricas detalhadas sobre queries, locks, buffers e tempos de execução.
Ativar no arquivo de configuração:
[mysqld] performance_schema=ON
Reinicie o MySQL:
sudo systemctl restart mysql
Consultas úteis:
-- Queries mais pesadas SELECT * FROM performance_schema.events_statements_summary_by_digest ORDER BY AVG_TIMER_WAIT DESC LIMIT 10; -- Esperas por locks SELECT * FROM performance_schema.events_waits_summary_global_by_event_name ORDER BY SUM_TIMER_WAIT DESC;
Ajuste `performance_schema_max_table_instances` e `performance_schema_max_digest_length` se houver muita carga.
PMM (Percona Monitoring and Management)
PMM pode ser instalado nativamente no servidor Linux.
1. Baixe o pacote do PMM Server (exemplo para Debian/Ubuntu): OBS: Acessar o site e baixar a versão mais atual.
wget https://www.percona.com/downloads/pmm2/pmm2-server/pool/main/p/pmm2-server/pmm2-server_VERSION_all.deb sudo dpkg -i pmm2-server_VERSION_all.deb
2. Instale o PMM Client no servidor MySQL:
sudo apt install pmm2-client
3. Configure o PMM Client para conectar ao PMM Server:
pmm-admin config --server-url=https://admin:admin@IP_DO_PMM_SERVER pmm-admin add mysql --username=root --password=SEU_PASSWORD
4. Acesse o PMM Server pelo navegador:
- IP do servidor PMM, porta 80
- Dashboards mostram:
* Queries lentas * Uso de CPU e memória * Locks e waits * Throughput de transações
- Alertas podem ser configurados via Grafana
Dicas Finais
- Ajuste os valores conforme memória disponível e carga real.
- Monitore o impacto por algumas horas/dias antes de aplicar em produção.
- Use Performance Schema para análises rápidas e PMM para monitoramento contínuo.
- Evite desativar proteções nativas ou usar parâmetros obsoletos.