Pesquisa de site

Como instalar um servidor MySQL com balanceamento de carga com ProxySQL no Debian 11


ProxySQL é um proxy MySQL de alto desempenho com um pequeno espaço ocupado que pode ser instalado em vários ambientes, como VM, K8s, bare-metal e contêineres Docker. ProxySQL é uma solução de código aberto que fornece alta disponibilidade para seu cluster MySQL com suporte para multiplexação de conexão, fornece regras de consulta para rotear gravações para primários e distribui leituras entre réplicas.

ProxySQL oferece suporte a AMD64 (x86_64) e compatível com ARM64. Ele fornece um proxy de camada de aplicativo para seu aplicativo e também consultas avançadas com detecção de failover.

Neste guia, você instalará e configurará o balanceamento de carga do cluster MySQL via ProxySQL em um servidor Debian 11. Você instalará o ProxySQL v2 com o cliente percona XtraDB, em seguida, adicionará o cluster Percona XtraDB ao ProxySQL, configurará o usuário de monitoramento ProxySQL e, em seguida, adicionará o banco de dados e o usuário que serão usados para seus aplicativos.

Pré-requisitos

Para começar com este guia, você deve ter os seguintes requisitos:

  • Um servidor Linux executando o sistema Debian 11 - Este exemplo usa um servidor Debian com nome de host 'proxysql-deb'.
  • Um usuário não root com privilégios de administrador sudo/root.
  • Cluster MySQL totalmente configurado ou cluster Percona XtraDB.

É isso. Quando todos os requisitos estiverem prontos, você poderá iniciar a instalação do ProxySQL.

Repositórios de configuração

A primeira etapa que você deve realizar neste guia é adicionar os repositórios ProxySQL e Percona XtraDB ao seu servidor. O repositório Percona XtraDB será usado para instalar o pacote 'percona-xtradb-cluster-client', que o ProxySQL requer.

Para começar, instale algumas dependências básicas digitando o seguinte comando apt. Insira y quando solicitado e pressione ENTER para continuar.

sudo apt install wget gnupg2 lsb-release curl apt-transport-https ca-certificates

Em seguida, baixe o arquivo de repositório do Percona XtraDB e instale-o por meio do comando 'dpkg' abaixo.

wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb

Agora atualize e atualize seu índice de pacotes Debian usando o seguinte comando apt abaixo. Você deverá ver que o novo repositório Percona XdtraDB foi adicionado.

sudo apt update

Em seguida, insira o comando 'percona-release' para ativar o repositório Percona XtraDB Cluster 8.0.

sudo percona-release setup pxc80

Com o repositório Percona XtraDB adicionado, agora execute o seguinte comando para adicionar a chave GPG e o repositório para o ProxySQL.

wget -q -nv -O /etc/apt/trusted.gpg.d/proxysql-2.4.x-keyring.gpg 'https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key.gpg'
echo deb https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/$(lsb_release -sc)/ ./ | tee /etc/apt/sources.list.d/proxysql.list

Atualize e atualize novamente o índice do pacote Debian para atualizar o novo repositório.

sudo apt update

Com os repositórios Percona XtraDB e ProxySQL adicionados, você pode instalar os pacotes de cliente ProxySQL e Percona XtraDB.

Instalando ProxySQL e Percona XtraDB Cluster Client

Nesta seção, você instalará o pacote ProxySQL v2 com o pacote do cliente Percona XtraDB. Insira o seguinte comando apt para instalar os pacotes de cliente ProxySQL e Percona XtraDB.

sudo apt install proxysql2 percona-xtradb-cluster-client

Quando solicitado, insira y para confirmar e pressione ENTER para continuar.

Depois que o ProxySQL estiver instalado, ele será executado e iniciado automaticamente na inicialização do sistema. Insira o seguinte utilitário de comando systemctl para verificar o status do serviço ProxySQL.

sudo systemctl is-enabled proxysql
sudo systemctl start proxysql

Uma saída 'enabled' confirma que o ProxySQL será iniciado automaticamente na inicialização do sistema. E a saída 'ativo (em execução)' confirma que o ProxySQL está em execução.

Em seguida, digite o seguinte comando mysql para fazer login no servidor ProxySQL com o usuário e senha padrão 'admin'.

mysql -u admin -padmin -h 127.0.0.1 -P 6032 --prompt='proxysql-deb> '

Uma vez bem-sucedido, você deverá obter o shell ProxySQL da seguinte forma. Você se conectou ao módulo de administração ProxySQL por meio do cliente Percona XtraDB.

Agora insira a seguinte consulta para obter a lista de bancos de dados no servidor ProxySQL. Você deverá ver vários bancos de dados disponíveis no servidor ProxySQL.

SHOW DATABASES;

Com o servidor ProxySQL e o cliente Percona XtraDB Cluster instalados, você está pronto para adicionar MySQL ou Percona XtraDB Cluster ao servidor ProxySQL e configurar o balanceamento de carga.

Adicionando cluster MySQL/cluster Percona XtraDB ao ProxySQL

A primeira etapa que você deve realizar após instalar o servidor ProxySQL é adicionar seu cluster MySQL ou percona XtraDB ao servidor ProxySQL. E isso pode ser conseguido através do shell ProxySQL. Este exemplo usa o cluster Percona XtraDB com os seguintes detalhes:

Hostname    IP Address      Port
---------------------------------
pxc01       192.168.5.15    3306
pxc02       192.168.5.16    3306
pxc03       192.168.5.17    3306

Antes de começar, certifique-se de ter efetuado login no shell ProxySQL. Em seguida, insira as seguintes consultas para adicionar seus servidores MySQL ao ProxySQL. Certifique-se de alterar os detalhes dos endereços IP e portas com os detalhes do cluster MySQL.

INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.15',3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.16',3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.17',3306);

Uma saída 'Consulta OK, 1 linha afetada' confirma que o servidor MySQL foi adicionado ao servidor ProxySQL.

Insira a seguinte consulta para verificar a lista de servidores MySQL disponíveis no ProxySQL. Você deverá ver três servidores MySQL adicionados ao servidor ProxySQL.

SELECT * FROM mysql_servers;

Com o cluster MySQL ou Percona XtraDB adicionado ao ProxySQL, em seguida você precisará configurar o monitoramento do cluster Percona XtraDB no ProxySQL.

Configurando usuário de monitoramento ProxySQL

Para garantir que o cluster MySQL ou Percona XtraDB esteja íntegro, o ProxySQL monitorará continuamente o back-end de todos os servidores MySQL disponíveis. Para conseguir isso, você deve criar um novo usuário em seu cluster percona XtraDB e, em seguida, definir o usuário de monitoramento no servidor ProxySQL.

Faça login em seu servidor Percona XtraDB Cluster, acesse o shell MySQL através do comando 'mysql' e execute as seguintes consultas MySQL para criar um novo usuário 'monitor' com a senha 'monitor'.

CREATE USER 'monitor'@'%' IDENTIFIED WITH mysql_native_password by 'monitor';
GRANT USAGE ON *.* TO 'monitor'@'%';
FLUSH PRIVILEGES;
SELECT USER,host FROM mysql.user;
SHOW GRANTS FOR 'monitor'@'%';

Em seguida, vá para o servidor ProxySQL e execute a seguinte consulta para definir o usuário que será utilizado para monitorar o Cluster Percona XtraDB. Isto mudará a variável padrão 'mysql-monitor_username' com o usuário 'monitor' e a variável 'mysql-monitor_password' para a senha 'monitor >'.

UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_password';

Insira a consulta a seguir para atualizar alguns parâmetros adicionais para monitorar o cluster Percona XtraDB no servidor ProxySQL.

UPDATE global_variables SET variable_value='2000' WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');

Salve as alterações feitas em 'global_variables' no servidor ProxySQL executando as consultas a seguir.

LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;

Você deve receber uma saída como esta.

Agora execute a seguinte consulta para verificar a lista de 'global_variables' para 'mysql-monitor_' no servidor ProxySQL.

SELECT * FROM global_variables WHERE variable_name LIKE 'mysql-monitor_%';

Você deve obter uma saída como a captura de tela a seguir - A variável 'mysql-monitor_username' deve ter o valor do usuário 'monitor' e a variável 'mysql-monitor_password' para a senha é 'monitor'. Além disso, você pode ver o valor das variáveis 'mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval' que foram alterados para '2000'.

Por último, insira as seguintes consultas para verificar o status de monitoramento do Cluster Percona XtraDB no servidor ProxySQL. Isso mostrará os logs do último status do log e do último ping do servidor ProxySQL para todos os servidores Percona XtraDB Cluster disponíveis.

SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 6;
SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 6;

Quando for bem-sucedido, você deverá receber uma saída como esta.

Os últimos logs de conexão do servidor ProxySQL ao Cluster Percona XtraDB.

Os últimos registros de ping do servidor ProxySQL para o cluster Percona XtraDB.

Com o cluster MySQL ou Percona XtraDB monitorado pelo servidor ProxySQL, agora você está pronto para configurar um novo usuário que seus aplicativos usarão.

Configurando usuário de banco de dados para aplicativos

Com o servidor ProxySQL instalado e configurado e o cluster MySQL ou Percona XtraDB adicionado como back-end do banco de dados, você agora configurará um novo usuário que seus aplicativos usarão. Portanto, em vez de se conectar diretamente ao servidor MySQL, seus aplicativos devem se conectar ao servidor ProxySQL que é executado por padrão na porta '6033'.

Para configurar um novo usuário para seus aplicativos, você deve seguir as seguintes etapas:

  • Crie um novo usuário no cluster MySQL ou cluster Percona XtraDB e configure privilégios.
  • Adicione seu usuário Percona XtraDB Cluster ao servidor ProxySQL - insira na tabela 'mysql_users'.

Para começar, volte ao servidor Percona XtraDB Cluster e faça login no shell MySQL por meio do usuário root. Em seguida, crie um novo usuário MySQL e conceda ao usuário privilégios para acessar todos os bancos de dados inserindo as seguintes consultas. Neste exemplo, você criará um novo usuário 'sbuser' com a senha 'sbpass'. Além disso, certifique-se de alterar o endereço IP '192.168.5.85' pelo endereço IP do servidor ProxySQL.

CREATE USER 'sbuser'@'192.168.5.85' IDENTIFIED WITH mysql_native_password by 'sbpass';
GRANT ALL PRIVILEGES ON *.* TO 'sbuser'@'192.168.5.85';
FLUSH PRIVILEGES;

Em seguida, volte ao servidor ProxySQL e execute a seguinte consulta para adicionar seu novo usuário MySQL ao servidor ProxySQL. Seus usuários MySQL devem ser adicionados à tabela 'mysql_users' no servidor ProxySQL. Além disso, no momento em que este artigo foi escrito, o servidor ProxySQL ainda não suportava senhas criptografadas.

INSERT INTO mysql_users (username,password) VALUES ('sbuser','sbpass');

Agora insira as seguintes consultas para confirmar e salvar as alterações em seu servidor ProxySQL. Com isso, seu novo usuário está pronto e você pode usar esse usuário MySQL para suas aplicações.

LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;

Com isso, sua aplicação agora deverá se conectar ao servidor ProxySQL com usuário 'sbuser' e senha 'sbpass' com a porta 6033.

Verifique o banco de dados e o usuário

Nesta seção, você verificará a instalação do ProxySQL conectando-se ao servidor ProxySQL usando o usuário e a senha que você criou.

Digite o seguinte comando ‘mysql’ para efetuar login no servidor ProxySQL com o novo usuário ‘sbuser’ e senha ‘sbpass’. Quando for bem-sucedido, você deverá ver o shell do servidor ProxySQL.

mysql -u sbuser -psbpass -h 127.0.0.1 -P 6033 --prompt='proxysql-deb> '

Insira a seguinte consulta para verificar a lista de bancos de dados no cluster Percona XtraDB. Neste exemplo, há um banco de dados 'percona' no cluster Percona XtraDB.

show databases;

Mude para o banco de dados 'percona' através da consulta 'USE' abaixo.

use percona

A seguir, insira as seguintes consultas para verificar as tabelas de listas no banco de dados 'percona'. Em seguida, recupere os dados disponíveis no banco de dados atual em que você está trabalhando.

show tables;
select * from example;

Você deve receber uma saída como esta – Os bancos de dados armazenados no cluster Percona XtraDB são acessíveis a partir do servidor ProxySQL. Isso significa que a instalação do ProxySQL como balanceador de carga para o cluster Percona XtraDB foi bem-sucedida.

A seguir, insira as seguintes consultas para inserir novos dados no banco de dados 'percona' e na tabela 'exemplo'.

INSERT INTO percona.example VALUES (4, 'pxc04');
INSERT INTO percona.example VALUES (5, 'pxc05');

Em seguida, verifique novamente os dados recém-atualizados usando a consulta a seguir. se for bem-sucedido, você deverá obter os novos dados disponíveis na tabela 'exemplo'. Isso confirma que seu usuário pode ler e gravar em bancos de dados no Percona XtraDB Cluster.

select * from example;

Por último, para garantir que seus novos dados sejam atualizados no Percona XtraDB Cluster, você deve verificar diretamente no servidor percona XtraDB Cluster.

Faça login em seu servidor Percona XtraDB Cluster, acesse o shell do MySQL por meio do usuário root e execute a seguinte consulta para recuperar os dados do banco de dados 'percona' tabela 'exemplo' .

select * from percona.example;

Quando for bem-sucedido, você deverá obter os novos dados adicionados por meio do servidor ProxySQL.

Com isso em mente, a instalação do servidor ProxySQL como balanceador de carga para MySQL Cluster ou Percona XtraDB Cluster foi bem-sucedida.

Conclusão

Neste guia, você configurou um balanceamento de carga do cluster MySQL ou cluster Percona XtraDB via ProxySQL em um servidor Debian 11. Você instalou o ProxySQLv2, adicionou o cluster Percona XtraDB ao ProxySQL e configurou o monitoramento do cluster Percona XtraDB no ProxySQL.

Além disso, você também criou e configurou usuários MySQL ou Percona XtraDB Cluster que podem ser usados para seus aplicativos. Você também verificou o balanceamento de carga do MySQL Cluster ou Percona XtraDB Cluster via ProxySQL que permite alta disponibilidade e tolerância a falhas de seu servidor de banco de dados e de seus aplicativos.

Com isso, agora você pode adicionar mais nós do cluster percona XtraDB ao seu servidor de banco de dados de balanceamento de carga. Além disso, você pode configurar a divisão de leitura/gravação via ProxySQL, configurar a fragmentação do ProxySQL e configurar a conexão SSL do proxySQL para o cluster Percona XtraDB. Para saber mais sobre o ProxySQL, visite a documentação oficial do ProxySQL.

Artigos relacionados: