SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
Databases run better with Percona
ProxySQL no MySQL: Apenas
um load balancer?
Agenda
© 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
Sobre mim
© 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)
O que é o ProxySQL?
© 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
© 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
Features ProxySQL
Features ProxySQL
Load Balance
© Copyright 2023 Percona® LLC. All rights reserved
Load Balance
12
Divisão da Leitura e escrita
© Copyright 2023 Percona® LLC. All rights reserved
Load balance - principais tabelas
● mysql_replication_hostgroups/mysql_group_replication_hostgroups/m
ysql_galera_hostgroups
13
© Copyright 2023 Percona® LLC. All rights reserved
Load balance - principais tabelas
● mysql_servers
14
© Copyright 2023 Percona® LLC. All rights reserved
Load balance - principais tabelas
● mysql_query_rules
15
© Copyright 2023 Percona® LLC. All rights reserved
Load balance - principais tabelas
● mysql_user
16
© Copyright 2023 Percona® LLC. All rights reserved
Load Balance
17
Configuração dos Hostgroups/Servers
© Copyright 2023 Percona® LLC. All rights reserved
Load Balance
18
Divisão da Leitura e escrita
© 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).
© 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
© Copyright 2023 Percona® LLC. All rights reserved
Alterando configurações entre camadas - Runtime
21
© Copyright 2023 Percona® LLC. All rights reserved
Alterando configurações entre camadas - Disk
22
© Copyright 2023 Percona® LLC. All rights reserved
Alterando configurações entre camadas - Disk
23
© 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
© Copyright 2023 Percona® LLC. All rights reserved
MySQL
Alterando configurações entre camadas - Variáveis
25
© Copyright 2023 Percona® LLC. All rights reserved
Admin
Alterando configurações entre camadas - Variáveis
26
Features ProxySQL
Connection Pool
© Copyright 2023 Percona® LLC. All rights reserved
Connection Pool
28
© Copyright 2023 Percona® LLC. All rights reserved
Connection Pool
29
© Copyright 2023 Percona® LLC. All rights reserved
Connection Pool
30
Features ProxySQL
Multiplexing
© Copyright 2023 Percona® LLC. All rights reserved
Multiplexing
32
© Copyright 2023 Percona® LLC. All rights reserved
Multiplexing
33
© Copyright 2023 Percona® LLC. All rights reserved
Multiplexing
34
© 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
Features ProxySQL
Failover
© 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
© Copyright 2023 Percona® LLC. All rights reserved
Variáveis de check:
● read_only
Failover - Galera/PXC
38
© Copyright 2023 Percona® LLC. All rights reserved
Variáveis de check:
● read_only
Failover - Group Replication
39
Features ProxySQL
Reescrita de query
© Copyright 2023 Percona® LLC. All rights reserved
Reescrita de query
41
Regra de query utilizando match_partten
© Copyright 2023 Percona® LLC. All rights reserved
Reescrita de query
42
Features ProxySQL
Bloqueando Queries
© Copyright 2023 Percona® LLC. All rights reserved
Bloqueando Queries
44
Executando query suspeita
© Copyright 2023 Percona® LLC. All rights reserved
Bloqueando Queries
45
Verificando Queries
© Copyright 2023 Percona® LLC. All rights reserved
Bloqueando Queries
46
Criando regra de bloqueio
Teste
Features ProxySQL
Query Cache
© Copyright 2023 Percona® LLC. All rights reserved
Query cache baseado em TTL(Time-to-live)
Query Cache
48
Features ProxySQL
ProxySQL Cluster
© Copyright 2023 Percona® LLC. All rights reserved
ProxySQL Cluster - Principais Tabelas
● proxysql_servers
50
© Copyright 2023 Percona® LLC. All rights reserved
ProxySQL Cluster - Principais Tabelas
● Variáveis do Cluster
51
© Copyright 2023 Percona® LLC. All rights reserved
ProxySQL Cluster -Validações
● validações via checksum
52
© Copyright 2023 Percona® LLC. All rights reserved
ProxySQL Cluster -Alterações
53
Features ProxySQL
Tabelas de estatística
© 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
Caso de Uso
© 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
© Copyright 2023 Percona® LLC. All rights reserved
Caso de Uso
58
© Copyright 2023 Percona® LLC. All rights reserved
Caso de Uso
59
© Copyright 2023 Percona® LLC. All rights reserved
Caso de Uso
60
© Copyright 2023 Percona® LLC. All rights reserved
Perguntas?
Vagas
percona.com
Obrigado!!

Mais conteúdo relacionado

Semelhante a ProxySQL no MySQL: Apenas um load balancer?

Semelhante a ProxySQL no MySQL: Apenas um load balancer? (20)

Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15
 
Utilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web JavaUtilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web Java
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQL
 
Backup Online no MySQL com Percona Xtrabackup
Backup Online no MySQL com Percona XtrabackupBackup Online no MySQL com Percona Xtrabackup
Backup Online no MySQL com Percona Xtrabackup
 
Percona XtraBackup
Percona XtraBackupPercona XtraBackup
Percona XtraBackup
 
Escalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxEscalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginx
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool II
 
Apresentação interbase (atualização 2)
Apresentação interbase (atualização 2)Apresentação interbase (atualização 2)
Apresentação interbase (atualização 2)
 
Tecnologias Netflix OSS
Tecnologias Netflix OSSTecnologias Netflix OSS
Tecnologias Netflix OSS
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source Replication
 
MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferenças
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
 
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de Uso
 
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
 
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQL
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
 

ProxySQL no MySQL: Apenas um load balancer?

  • 1. Databases run better with Percona
  • 2. 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)
  • 7. O que é o ProxySQL?
  • 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
  • 28. © Copyright 2023 Percona® LLC. All rights reserved Connection Pool 28
  • 29. © Copyright 2023 Percona® LLC. All rights reserved Connection Pool 29
  • 30. © Copyright 2023 Percona® LLC. All rights reserved Connection Pool 30
  • 32. © Copyright 2023 Percona® LLC. All rights reserved Multiplexing 32
  • 33. © Copyright 2023 Percona® LLC. All rights reserved Multiplexing 33
  • 34. © Copyright 2023 Percona® LLC. All rights reserved Multiplexing 34
  • 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
  • 42. © Copyright 2023 Percona® LLC. All rights reserved Reescrita de query 42
  • 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
  • 58. © Copyright 2023 Percona® LLC. All rights reserved Caso de Uso 58
  • 59. © Copyright 2023 Percona® LLC. All rights reserved Caso de Uso 59
  • 60. © Copyright 2023 Percona® LLC. All rights reserved Caso de Uso 60
  • 61. © Copyright 2023 Percona® LLC. All rights reserved Perguntas? Vagas