Implementando ProxySQL em um Innodb Cluster MySQL Group Replication

Nos artigos anteriores desta série construímos nosso ambiente de laboratório passo a passo. Começamos pela instalação do Oracle VirtualBox, configuramos o Oracle Linux 10, instalamos o MySQL 8.4 LTS e criamos um cluster utilizando MySQL Group Replication.

Com isso, passamos a ter um ambiente capaz de manter os dados sincronizados entre as instâncias. Porém, ainda existia uma questão importante: como disponibilizar esse cluster para as aplicações de forma transparente?

A aplicação precisaria saber qual servidor é o Primary? Como distribuir consultas de leitura entre os demais membros do cluster? E como evitar alterações na string de conexão quando ocorrer uma troca de Primary?

Neste laboratório vamos adicionar mais uma peça à arquitetura: o ProxySQL.

Seu papel será centralizar as conexões da aplicação, identificar automaticamente os membros do cluster e aplicar regras de roteamento para operações de leitura e escrita.

Pré-requisitos

Este laboratório considera que todas as etapas anteriores já foram concluídas.

O ambiente já possui um cluster MySQL Group Replication instalado e funcional. Todo o processo de preparação, incluindo instalação do Oracle Linux, configuração do MySQL e criação do cluster, foi realizado nos laboratórios anteriores.

Ambiente utilizado

Componente Versão
Sistema Operacional Oracle Linux 10
Banco de Dados MySQL 8.4 LTS
Memória 4 GB
Cluster MySQL Group Replication
Proxy ProxySQL 3.x

Para simplificar os estudos, todo o ambiente foi montado em um único servidor.

O laboratório é composto por:

  • MySQL 3306
  • MySQL 3307
  • MySQL 3308
  • MySQL 3309
  • ProxySQL
  • Aplicação PHP para validação dos testes

Embora todas as instâncias estejam executando no mesmo servidor, o objetivo é reproduzir conceitos encontrados em ambientes corporativos, como balanceamento de leitura, roteamento de consultas e abstração da topologia do cluster para as aplicações.


Instalando o repositório do ProxySQL

O primeiro passo consiste em adicionar o repositório oficial do ProxySQL.

Após criar o repositório, podemos instalar o ProxySQL utilizando o gerenciador de pacotes do sistema operacional.


Instalando o ProxySQL

Realize a instalação:

Em seguida, habilite e inicialize o serviço:

Após a instalação, o ProxySQL disponibilizará sua interface administrativa na porta 6032.


Primeiro acesso ao ProxySQL

A administração do ProxySQL é realizada através de uma interface compatível com o protocolo MySQL.

Conecte-se utilizando:

A partir deste ponto todas as configurações serão realizadas diretamente na base administrativa do ProxySQL.


Registrando o primeiro servidor do cluster

O ProxySQL precisa conhecer pelo menos um membro do cluster para iniciar o monitoramento.

Como estamos utilizando MySQL Group Replication, basta registrar uma única instância. A partir dela, o ProxySQL identificará automaticamente os demais membros do grupo.

Neste laboratório utilizaremos a instância da porta 3306 como ponto inicial para descoberta dos demais servidores.


Definindo os HostGroups

O ProxySQL organiza os servidores em grupos chamados HostGroups.

Cada HostGroup possui uma responsabilidade específica dentro da arquitetura.

Neste laboratório utilizaremos:

HostGroup Função
10 Writer
12 Backup Writer
20 Readers
30 Offline

A configuração é realizada através do comando abaixo:

Neste cenário:

  • O HostGroup 10 receberá operações de escrita.
  • O HostGroup 20 receberá operações de leitura.
  • O HostGroup 12 armazenará possíveis candidatos a Writer.
  • O HostGroup 30 será utilizado para servidores indisponíveis.

A opção writer_is_also_reader = 0 garante que o Writer permaneça dedicado às operações de gravação.


Criando os usuários de acesso

Neste laboratório serão utilizados dois usuários para demonstrar cenários distintos de utilização.

O usuário hrproxy será utilizado pela aplicação PHP.

Também criaremos um usuário dedicado para ferramentas analíticas, como Power BI.

Dessa forma conseguimos demonstrar como diferentes perfis de acesso podem ser direcionados para HostGroups distintos.


Criando regras de roteamento

Uma das funcionalidades mais interessantes do ProxySQL é a possibilidade de encaminhar consultas para servidores diferentes de acordo com o seu padrão.

Neste laboratório criaremos duas regras simples.

A primeira garante que consultas utilizando bloqueio sejam enviadas ao Writer.

A segunda regra direciona os demais SELECTs para os Readers.

Com essas duas regras passamos a ter um cenário simples de separação entre leitura e escrita.


Aplicando as configurações

Até este momento todas as alterações foram realizadas apenas na memória administrativa do ProxySQL.

Para que elas sejam aplicadas imediatamente e persistidas após reinicializações do serviço, é necessário carregá-las para o Runtime e gravá-las em disco.


Validando a configuração

Para facilitar futuras administrações, podemos criar um alias para acesso rápido ao ProxySQL.

Acesse o ProxySQL:

Agora podemos verificar os servidores conhecidos pelo ProxySQL.

Também podemos consultar o histórico de monitoramento do Group Replication.

Se tudo estiver correto, será possível visualizar as instâncias 3306, 3307, 3308 e 3309 classificadas em seus respectivos HostGroups, além das informações coletadas pelo monitor interno do ProxySQL.


Validando com uma aplicação PHP

Após concluir a configuração, realizei os testes utilizando uma aplicação PHP conectada exclusivamente ao ProxySQL.

A aplicação não possui conhecimento direto das instâncias MySQL. Todas as conexões são realizadas através da porta 6033 do ProxySQL.

Durante os testes foi possível observar que:

  • operações de escrita permaneceram direcionadas ao Writer;
  • consultas de leitura foram encaminhadas para os Readers;
  • a aplicação continuou utilizando o mesmo ponto de conexão independentemente da topologia do cluster.

Essa abordagem simplifica significativamente o desenvolvimento das aplicações, já que a lógica de roteamento passa a ser responsabilidade do ProxySQL.


Conclusão

Com este laboratório demos mais um passo na evolução do ambiente construído ao longo desta série.

O objetivo não foi apenas instalar o ProxySQL, mas entender como ele pode atuar como uma camada intermediária entre aplicações e um cluster MySQL Group Replication.

Utilizando quatro instâncias MySQL executando nas portas 3306, 3307, 3308 e 3309, além de uma aplicação PHP conectada através do ProxySQL, foi possível validar na prática o roteamento de consultas, a separação entre leitura e escrita e o monitoramento automático dos membros do cluster.

Mesmo sendo um ambiente simples e executado em um único servidor Oracle Linux 10, os testes reproduziram conceitos amplamente utilizados em ambientes corporativos, permitindo compreender de forma prática como o ProxySQL pode simplificar o acesso a clusters MySQL.

Nos próximos laboratórios continuaremos evoluindo essa arquitetura, explorando novos recursos do ProxySQL e aprofundando os testes em cenários mais próximos de produção.

 

Hands on:

 

 

Links oficial:

https://proxysql.com/documentation

https://proxysql.com/

 

COMPARTILHE:
Picture of Marcio

Marcio

Minha paixão por tecnologia e minhas habilidades em resolução de problemas me permitem enfrentar desafios complexos e entregar soluções de banco de dados de alta qualidade. Estou sempre ávido por aprender e me manter atualizado com as últimas tendências em administração de banco de dados.
Picture of Marcio

Marcio

Minha paixão por tecnologia e minhas habilidades em resolução de problemas me permitem enfrentar desafios complexos e entregar soluções de banco de dados de alta qualidade. Estou sempre ávido por aprender e me manter atualizado com as últimas tendências em administração de banco de dados.

PARTICIPE

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

POSTADO POR
Picture of Marcio

Marcio

Minha paixão por tecnologia e minhas habilidades em resolução de problemas me permitem enfrentar desafios complexos e entregar soluções de banco de dados de alta qualidade. Estou sempre ávido por aprender e me manter atualizado com as últimas tendências em administração de banco de dados.
PARCEIROS