ProxySQL é um proxy muito popular em ambientes MySQL. Ele vem com um bom conjunto de recursos, incluindo divisão de leitura/gravação, cache de consulta e reescrita de consulta. O ProxySQL armazena sua configuração no banco de dados SQLite, as alterações de configuração podem ser aplicadas em tempo de execução e são realizadas através de comandos SQL. Isso aumenta a curva de aprendizado e pode ser um bloqueador para algumas pessoas que gostariam de apenas instalá-lo e executá-lo.
Esta é a razão pela qual existem algumas ferramentas que podem ajudá-lo a gerenciar o ProxySQL. Vamos dar uma olhada em um deles, proxysql-admin, e compará-lo com os recursos disponíveis para ProxySQL no ClusterControl.
proxysql-admin
Proxysql-admin é uma ferramenta que vem incluída no ProxySQL quando instalada a partir de repositórios Percona. Ele é dedicado a facilitar a configuração do Percona XtraDB Cluster no ProxySQL. Você pode definir a configuração no arquivo de configuração (/etc/proxysql-admin.cnf) ou através de argumentos para o comando proxysql-admin. É possível:
- Configurar grupos de hosts (leitor, gravador, gravador de backup, offline) para PXC
- Criar usuário de monitoramento em ProxySQL e PXC
- Criar usuário de aplicativo em ProxySQL e PXC
- Configurar o ProxySQL (máximo de conexões em execução, máximo de transações por trás)
- Sincronizar usuários entre PXC e ProxySQL
- Sincronizar nós entre PXC e ProxySQL
- Criar regras de consulta predefinidas (divisão R/W) para usuários importados do PXC
- Configurar SSL para conexões do ProxySQL aos bancos de dados de back-end
- Defina um único escritor ou acesso round robin ao PXC
Como você pode ver, esta não é uma ferramenta complexa, ela se concentra na configuração inicial. Vejamos alguns exemplos.
[email protected]:~# proxysql-admin --enable
This script will assist with configuring ProxySQL for use with
Percona XtraDB Cluster (currently only PXC in combination
with ProxySQL is supported)
ProxySQL read/write configuration mode is singlewrite
Configuring the ProxySQL monitoring user.
ProxySQL monitor user name as per command line/config-file is proxysql-monitor
The monitoring user is already present in Percona XtraDB Cluster.
Would you like to enter a new password [y/n] ? n
Monitoring user 'proxysql-monitor'@'10.%' has been setup in the ProxySQL database.
Configuring the Percona XtraDB Cluster application user to connect through ProxySQL
Percona XtraDB Cluster application user name as per command line/config-file is proxysql_user
Application user 'proxysql_user'@'10.%' already present in PXC.
Adding the Percona XtraDB Cluster server nodes to ProxySQL
Write node info
+------------+--------------+------+--------+
| hostname | hostgroup_id | port | weight |
+------------+--------------+------+--------+
| 10.0.0.152 | 10 | 3306 | 1000 |
+------------+--------------+------+--------+
ProxySQL configuration completed!
ProxySQL has been successfully configured to use with Percona XtraDB Cluster
You can use the following login credentials to connect your application through ProxySQL
mysql --user=proxysql_user -p --host=localhost --port=6033 --protocol=tcp
Acima mostra a configuração inicial. Como você pode ver, um modo singlewriter (padrão) foi usado, monitoramento e usuários de aplicativos foram configurados e toda a configuração do servidor foi preparada.
[email protected]:~# proxysql-admin --status
mysql_galera_hostgroups row for writer-hostgroup: 10
+--------+--------+---------------+---------+--------+-------------+-----------------------+------------------+
| writer | reader | backup-writer | offline | active | max_writers | writer_is_also_reader | max_trans_behind |
+--------+--------+---------------+---------+--------+-------------+-----------------------+------------------+
| 10 | 11 | 12 | 13 | 1 | 1 | 2 | 100 |
+--------+--------+---------------+---------+--------+-------------+-----------------------+------------------+
mysql_servers rows for this configuration
+---------------+-------+------------+------+--------+--------+----------+---------+-----------+
| hostgroup | hg_id | hostname | port | status | weight | max_conn | use_ssl | gtid_port |
+---------------+-------+------------+------+--------+--------+----------+---------+-----------+
| writer | 10 | 10.0.0.153 | 3306 | ONLINE | 1000 | 1000 | 0 | 0 |
| reader | 11 | 10.0.0.151 | 3306 | ONLINE | 1000 | 1000 | 0 | 0 |
| reader | 11 | 10.0.0.152 | 3306 | ONLINE | 1000 | 1000 | 0 | 0 |
| backup-writer | 12 | 10.0.0.151 | 3306 | ONLINE | 1000 | 1000 | 0 | 0 |
| backup-writer | 12 | 10.0.0.152 | 3306 | ONLINE | 1000 | 1000 | 0 | 0 |
+---------------+-------+------------+------+--------+--------+----------+---------+-----------+
Aqui está a saída da configuração padrão dos nós PXC no ProxySQL.
Controle de Cluster
ClusterControl é, em comparação com o proxysql-admin, uma solução muito mais complexa. Ele pode implantar um balanceador de carga ProxySQL e pré-configurar de acordo com os requisitos do usuário.
Ao implantar você pode definir usuário e senha de administrador, monitorar usuário e você pode também importe um dos usuários MySQL existentes (ou crie um novo se isso for o que você precisa) para o aplicativo usar. Também é possível importar a configuração do ProxySQL de outro ProxySQL que você já tenha no cluster. Isso torna a implantação mais rápida e eficiente.
O que também é importante mencionar é que o ClusterControl pode implantar ProxySQL em clusters MySQL e Galera. Ele pode ser usado com os sabores MySQL, Percona e MariaDB do MySQL.
Uma vez implantado, o ClusterControl oferece opções para gerenciar totalmente o ProxySQL por meio de uma GUI fácil de usar.
Você pode monitorar sua instância ProxySQL.
Você pode verificar as consultas mais pesadas executadas através do ProxySQL. Também é possível criar uma regra de consulta com base na consulta exata.
ClusterControl configura ProxySQL para uma divisão de leitura/gravação. Também é possível adicionar regras de consulta personalizadas com base em seus requisitos e configuração do aplicativo.
Comparado ao proxysql-admin, o ClusterControl oferece controle total sobre a configuração do servidor . Você pode adicionar novos servidores, você pode movê-los entre os grupos de hosts conforme desejar. Você pode criar novos grupos de hosts (e então, por exemplo, criar novas regras de consulta para eles).
Também é possível gerenciar usuários em ProxySQL. Você pode editar usuários existentes, importar novos usuários que existem no banco de dados back-end.
A importação em massa também é possível. Você também pode criar novos usuários em bancos de dados ProxySQL e back-end.
ClusterControl também pode ser usado para reconfigurar o ProxySQL. Você pode modificar todas as variáveis por meio de uma interface simples com opção de pesquisa.
Como você pode ver, o ClusterControl vem com recursos de gerenciamento detalhados para ProxySQL. Ele permite que você implante e gerencie instâncias do ProxySQL com facilidade.