Tunning-Mysql: mudanças entre as edições

De Wiki Projeto Root
Ir para navegação Ir para pesquisar
(Criou página com '== 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,...')
 
Sem resumo de edição
 
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada)
Linha 2: Linha 2:
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.
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.


== Otimizando Mysql ==
= Guia Completo de Tunning e Monitoramento de MySQL =


* Baixar o Mysql tunner
== Introdução ==
  wget http://mysqltuner.pl/ -O mysqltuner.pl
Este guia reúne todas as etapas para otimizar e monitorar servidores MySQL modernos (5.7 ou 8.0), com foco em:
  wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt


* Executar Teste
* Aumentar a performance de leitura e escrita
  perl mysqltuner.pl
* 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)**.


* Ajustar arquivo my.cf conforme saída do teste
== MySQLTuner ==
  nano etc/mysql/my.cf
O MySQLTuner é um script em Perl que analisa o estado atual do MySQL e sugere ajustes de performance.


* exemplo de saída
=== Download ===
<pre>
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl -O mysqltuner.pl
chmod +x mysqltuner.pl


  -------- Recommendations ---------------------------------------------------------------------------
# Opcional: auditoria de senhas básicas
    General recommendations:
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt
    Dedicate this server to your database for highest performance.
</pre>
    Reduce or eliminate unclosed connections and network issues
    Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=1
    When making adjustments, make tmp_table_size/max_heap_table_size equal
    Reduce your SELECT DISTINCT queries which have no LIMIT clause
    Performance schema should be activated for better diagnostics
    Consider installing Sys schema from https://github.com/mysql/mysql-sys
    Before changing innodb_log_file_size and/or innodb_log_files_in_group read this: http://bit.ly/2wgkDvS
   
    Variables to adjust:
    query_cache_size (=0)
    query_cache_type (=0)
    tmp_table_size (> 16M)
    max_heap_table_size (> 16M)
    performance_schema = ON enable PFS
    innodb_log_file_size should be (=16M) if possible, so InnoDB total log files size equals to 25% of buffer pool size.
    innodb_buffer_pool_instances (=1)


=== Executar análise ===
<pre>
perl mysqltuner.pl
</pre>


* Exemplo de ajustes no Arquivo
O script gera recomendações de:


  query_cache_limit  = 1M
* Buffers e caches
  #query_cache_size   = 16M
* Conexões
  query_cache_size    = 0
* Queries e waits
  max_heap_table_size = 16M
* Segurança do MySQL
  performance_schema = ON
 
 
== Ajustes de Configuração ==
  query_cache_size = 0
=== Local do arquivo ===
  query_cache_type = 0
* Ubuntu/Debian: <code>/etc/mysql/mysql.conf.d/mysqld.cnf</code>
   innodb_log_file_size = 16M
* CentOS/RHEL: <code>/etc/my.cnf</code>
   innodb_buffer_pool_instances = 1
 
Exemplo de abertura:
<pre>
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
</pre>
 
=== Valores recomendados por RAM ===
{| class="wikitable sortable"
! 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 ===
<pre>
[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
</pre>
 
=== Aplicar alterações ===
<pre>
sudo systemctl restart mysql
</pre>
 
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:
<pre>
[mysqld]
performance_schema=ON
</pre>
 
Reinicie o MySQL:
<pre>
sudo systemctl restart mysql
</pre>
 
Consultas úteis:
<pre>
-- 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;
</pre>
 
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.
 
<pre>
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
</pre>
 
2. Instale o PMM Client no servidor MySQL:
<pre>
sudo apt install pmm2-client
</pre>
 
3. Configure o PMM Client para conectar ao PMM Server:
<pre>
pmm-admin config --server-url=https://admin:admin@IP_DO_PMM_SERVER
pmm-admin add mysql --username=root --password=SEU_PASSWORD
</pre>
 
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.

Edição atual tal como às 21h17min de 19 de fevereiro de 2026

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.