ITMMC

Como o ProxySQL Pode Melhorar o Desempenho do Seu Banco de Dados


Se você tem um sistema Zabbix ocupado, com muitas pessoas usando a interface web, talvez Grafana com dashboards complexos conectados ao seu Zabbix, e muitas outras tarefas se comunicando diretamente com o banco de dados, aqui vai uma ideia: experimente o ProxySQL. Este é um ótimo produto de código aberto que pode ajudar significativamente a melhorar o desempenho do seu banco de dados.

O que é ProxySQL?


ProxySQL é um proxy de SQL de alta performance. Ele age como um intermediário entre seus aplicativos e seu banco de dados, gerenciando conexões e consultas de maneira eficiente. Tudo o que você precisa fazer é configurar seus aplicativos – como o Zabbix – para se conectarem ao ProxySQL em vez de se conectarem diretamente ao banco de dados. O ProxySQL então gerencia um pool de conexões com o banco de dados, reutilizando conexões abertas de forma inteligente e permitindo uma gestão granular com vários servidores de banco de dados e roteamento de consultas.

Como o ProxySQL Funciona?


O ProxySQL atua como um intermediário transparente, gerenciando eficientemente as conexões com o banco de dados. Ele estabelece um pool de conexões, o que significa que as conexões abertas podem ser reutilizadas imediatamente, reduzindo o número de conexões inativas que consomem recursos do banco de dados.

Benefícios do ProxySQL

  1. Pooling de Conexões: Reutiliza conexões abertas, diminuindo o número de conexões inativas.
  2. Roteamento de Consultas: Permite um roteamento granular das consultas, distribuindo a carga de trabalho de forma eficiente.
  3. Redução de Latência: Melhora o tempo de resposta ao gerenciar as conexões de forma mais eficiente.

Caso Prático

No meu ambiente de teste, com poucas sessões de navegador abertas para Zabbix e Grafana, além de alguns scripts em execução, observei uma melhora significativa após a implementação do ProxySQL. Os gráficos a seguir ilustram essa mudança:

Número de Threads Conectados

O número de threads conectados caiu de 30-40 para cerca de 5.

Threads em Cache

O MySQL passou a usar threads em cache de maneira muito mais eficaz.

Como Instalar o ProxySQL e configurar o Zabbix

Vamos direto ao ponto. Se você quer configurar o Zabbix para usar o ProxySQL, siga este guia passo a passo. Vou abordar desde a instalação do ProxySQL até a configuração do Zabbix para se conectar a ele.

Passo 1: Instalar o ProxySQL

Primeiro, instale o ProxySQL. Se você estiver usando uma distribuição baseada em Debian, pode usar o seguinte comando:

sudo apt-get install proxysql

Se estiver usando outra distribuição, verifique o gerenciador de pacotes correspondente ou siga as instruções na página oficial de instalação do ProxySQL.

Passo 2: Configurar o ProxySQL

Edite o arquivo de configuração do ProxySQL. Normalmente, ele está localizado em /etc/proxysql.cnf. Aqui estão algumas configurações importantes que você precisa ajustar:

  1. Versão do Servidor: Altere a versão do servidor para corresponder à versão do seu MySQL:
admin_variables=
{
  admin_credentials="admin:admin"
  mysql_ifaces="0.0.0.0:6032"
  version="5.7.30"  # Altere para a versão do seu servidor MySQL
}   
  1. Porta e Interfaces: Por padrão, o ProxySQL escuta na porta 6033. Você pode alterar isso conforme necessário:
mysql_variables=
{
  threads=4
  max_connections=2048
  default_query_delay=0
  default_query_timeout=36000000
  poll_timeout=2000
  interfaces="0.0.0.0:6033"  # Altere conforme necessário
}
  1. Servidores MySQL: Defina a localização do seu servidor MySQL e como se conectar a ele:
mysql_servers =
(
  {
    address = "127.0.0.1"  # Endereço do seu servidor MySQL
    port = 3306  # Porta do seu servidor MySQL
    hostgroup = 0
    max_connections = 100
  }
)   
  1. Usuários: Configure os usuários que podem se conectar ao ProxySQL:
   mysql_users: ( { username = "zabbix" password = "zabbix_password" # Senha do usuário Zabbix no MySQL default_hostgroup = 0 active = 1 } )

Depois de configurar, inicie o ProxySQL:

systemctl enable proxysql 
systemctl start proxysql

Passo 3: Configurar o Zabbix para Usar o ProxySQL

Agora, você precisa ajustar a configuração do Zabbix para se conectar ao ProxySQL em vez de se conectar diretamente ao MySQL. Normalmente, isso envolve editar o arquivo de configuração da interface web do Zabbix.

  1. Localize o Arquivo de Configuração: O arquivo de configuração geralmente está em /etc/zabbix/web/zabbix.conf.php ou um caminho semelhante.
  2. Edite o Arquivo de Configuração: Abra o arquivo com seu editor de texto favorito:
sudo nano /etc/zabbix/web/zabbix.conf.php

Procure pelas linhas que definem as configurações do banco de dados e ajuste conforme necessário:

$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = '127.0.0.1';  // Endereço do ProxySQL
$DB['PORT']     = '6033';       // Porta do ProxySQL
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'zabbix_password';  // Senha do usuário Zabbix no MySQL
  1. Salvar e Sair:
    Salve as alterações e saia do editor.

Passo 4: Verificar a Conexão

Para garantir que tudo está funcionando corretamente, reinicie o servidor web e o serviço do Zabbix. Para o Apache, você pode usar:

sudo systemctl restart apache2 
sudo systemctl restart zabbix-server

Para o Nginx, use:

sudo systemctl restart nginx
sudo systemctl restart zabbix-server

==Verifique se o Zabbix está se conectando corretamente ao ProxySQL, acessando a interface web do Zabbix e verificando se há erros relacionados ao banco de dados.==

Configuração Avançada

Se desejar se aprofundar, o ProxySQL pode ser configurado e monitorado usando um console MySQL que, por padrão, escuta na porta 6032. Você pode encontrar mais informações na documentação oficial.

Monitoramento

Existem modelos de Zabbix disponíveis para monitorar o ProxySQL, como o modelo Zabbix para ProxySQL, embora alguns possam estar desatualizados.

Considerações Finais

Implementar o ProxySQL pode exigir ajustes adicionais para fortalecer a configuração e otimizar as conexões conforme a carga de trabalho do seu ambiente. No entanto, os benefícios em termos de desempenho podem ser significativos. Além disso, é uma oportunidade divertida para qualquer entusiasta de tecnologia experimentar e explorar.

Espero que esta explicação tenha sido clara e útil. Se você tiver alguma dúvida ou quiser discutir mais sobre ProxySQL, deixe um comentário abaixo!

Sair da versão mobile