Mais conteúdo relacionado
Semelhante a ProxySQL no MySQL: Apenas um load balancer? (20)
ProxySQL no MySQL: Apenas um load balancer?
- 4. © Copyright 2023 Percona® LLC. All rights reserved 4
Agenda
● Sobre mim
● O que é o ProxySQL?
● Instalação ProxySQL
● Features ProxySQL
○ Load Balance
○ Connection Pool
○ Multiplexing
○ Failover
○ Reescrita de query
○ Bloqueando Queries
○ Query Cache
○ ProxySQL Cluster
○ Tabelas de estatística
● Caso de Uso
- 6. © Copyright 2023 Percona® LLC. All rights reserved 6
Roberto Garcia de Bem
Engenheiro de Suporte na
Percona desde 2022
DBA durante quase 4
anos na Performance DB
Trabalhando com MySQL
mais de 5 anos
Sistemas de Informação
- Universidade do Sul de
Santa Catarina (UNISUL)
- 8. © Copyright 2023 Percona® LLC. All rights reserved
O que é o ProxySQL?
A High Performance MySQL Proxy: ProxySQL is an open source high
performance, high availability, database protocol aware proxy for MySQL
Um MySQL Proxy de Alta Performance: ProxySQL é um proxy de código aberto
de alto desempenho e alta disponibilidade com reconhecimento de
protocolo de banco de dados para MySQL. (Tradução Livre)
Criado e mantido por: René Cannaò
https://github.com/sysown/proxysql
https://proxysql.com/
8
- 9. © Copyright 2023 Percona® LLC. All rights reserved
● Source code / RPM / DEB / Percona repo (yum / apt)
https://proxysql.com/documentation/installing-proxysql/
https://www.percona.com/download-proxysql
https://docs.percona.com/percona-software-repositories/index.html
ProxySQL Instalação
9
- 12. © Copyright 2023 Percona® LLC. All rights reserved
Load Balance
12
Divisão da Leitura e escrita
- 13. © Copyright 2023 Percona® LLC. All rights reserved
Load balance - principais tabelas
● mysql_replication_hostgroups/mysql_group_replication_hostgroups/m
ysql_galera_hostgroups
13
- 14. © Copyright 2023 Percona® LLC. All rights reserved
Load balance - principais tabelas
● mysql_servers
14
- 15. © Copyright 2023 Percona® LLC. All rights reserved
Load balance - principais tabelas
● mysql_query_rules
15
- 16. © Copyright 2023 Percona® LLC. All rights reserved
Load balance - principais tabelas
● mysql_user
16
- 17. © Copyright 2023 Percona® LLC. All rights reserved
Load Balance
17
Configuração dos Hostgroups/Servers
- 18. © Copyright 2023 Percona® LLC. All rights reserved
Load Balance
18
Divisão da Leitura e escrita
- 19. © Copyright 2023 Percona® LLC. All rights reserved
Camadas ProxySQL
Runtime: Representa os valores
em memória do ProxySQL.
Tabelas iniciadas com runtime.
19
Memory: Representa o banco de
dados em memória onde
editamos configurações no
ProxySQL.
Disk: Representa o banco de
dados em disco (SQLite3).
- 20. © Copyright 2023 Percona® LLC. All rights reserved
Utilizamos os comandos LOAD e
SAVE para alterar uma
configuração entre camadas.
Nota: mudanças são ativadas
quando estão em runtime e
mudanças não salvas em disco
serão perdidas em caso de
restart.
Alterando configurações entre camadas
20
- 21. © Copyright 2023 Percona® LLC. All rights reserved
Alterando configurações entre camadas - Runtime
21
- 22. © Copyright 2023 Percona® LLC. All rights reserved
Alterando configurações entre camadas - Disk
22
- 23. © Copyright 2023 Percona® LLC. All rights reserved
Alterando configurações entre camadas - Disk
23
- 24. © Copyright 2023 Percona® LLC. All rights reserved
Temos dois tipos de variáveis no ProxySQL:
● Admin
● MySQL
Alterando configurações entre camadas - Variáveis
24
- 25. © Copyright 2023 Percona® LLC. All rights reserved
MySQL
Alterando configurações entre camadas - Variáveis
25
- 26. © Copyright 2023 Percona® LLC. All rights reserved
Admin
Alterando configurações entre camadas - Variáveis
26
- 35. © Copyright 2023 Percona® LLC. All rights reserved
Multiplexing - Desabilitar
35
Condições onde é desabilitado:
● Transação ativa
● Lock em tabela (LOCK TABLE, LOCK TABLES OU FTWRL) - UNLOCK TABLES
● GET_LOCK()
● SQL_CALC_FOUND_ROWS
● Quando uma tabela temporária é criada (CREATE TEMPORARY TABLE)
● PREPARE
● SQL_LOG_BIN=0
● Uso de Variáveis
- 37. © Copyright 2023 Percona® LLC. All rights reserved
Variáveis de checagem:
● read_only
● innodb_read_only
● super_ready_only
● read_only|innodb_read_only
● read_only&innodb_read_only
Failover - Replicação
37
- 38. © Copyright 2023 Percona® LLC. All rights reserved
Variáveis de check:
● read_only
Failover - Galera/PXC
38
- 39. © Copyright 2023 Percona® LLC. All rights reserved
Variáveis de check:
● read_only
Failover - Group Replication
39
- 41. © Copyright 2023 Percona® LLC. All rights reserved
Reescrita de query
41
Regra de query utilizando match_partten
- 44. © Copyright 2023 Percona® LLC. All rights reserved
Bloqueando Queries
44
Executando query suspeita
- 45. © Copyright 2023 Percona® LLC. All rights reserved
Bloqueando Queries
45
Verificando Queries
- 46. © Copyright 2023 Percona® LLC. All rights reserved
Bloqueando Queries
46
Criando regra de bloqueio
Teste
- 48. © Copyright 2023 Percona® LLC. All rights reserved
Query cache baseado em TTL(Time-to-live)
Query Cache
48
- 50. © Copyright 2023 Percona® LLC. All rights reserved
ProxySQL Cluster - Principais Tabelas
● proxysql_servers
50
- 51. © Copyright 2023 Percona® LLC. All rights reserved
ProxySQL Cluster - Principais Tabelas
● Variáveis do Cluster
51
- 52. © Copyright 2023 Percona® LLC. All rights reserved
ProxySQL Cluster -Validações
● validações via checksum
52
- 53. © Copyright 2023 Percona® LLC. All rights reserved
ProxySQL Cluster -Alterações
53
- 55. © Copyright 2023 Percona® LLC. All rights reserved
● SHOW TABLES FROM STATS;
■ Stats_mysql_commands_counters - Estatísticas dos comandos
■ Stats_mysql_connection_pool - Conexoes por servidor
■ Stats_mysal_global - Estatísticas globais
■ Stats_mysal_processlist - SHOW PROCESSLIST
■ Stats_mysql_query_digest - Estatísticas agrupadas por digest
■ Stats_mysql_query_rules - Estatísticas das query rules
■ Stats_proxysql_servers_checksums - Visualização atual do Cluster ProxySQL -
checksums
Stats tables
55
- 57. © Copyright 2023 Percona® LLC. All rights reserved
Caso de Uso
57
Sysbench teste
sysbench [...] --range_size=100 --table_size=10000 --tables=10 --
threads=20 --events=0 --time=6000 --rand-type=uniform
/usr/share/sysbench/oltp_read_write.lua
● Teste 1 - Todas as conexões no mesmo servidor
● Teste 2 - Fazendo balanceamento de escrita e leitura
● Teste 3 - Fazendo Cache das 10 consultas mais utilizadas