robertogarciadebem1
26 views
62 slides
Dec 05, 2023
Slide 1 of 62
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
About This Presentation
Talk realizada no evento MySQL Meetup Brazil na sede da Oracle no dia 02/12/2023.
Size: 3.64 MB
Language: pt
Added: Dec 05, 2023
Slides: 62 pages
Slide Content
Databases r un b etter w ith Percona
ProxySQL no MySQL: Apenas um load balancer?
Agenda
‹#› 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
‹#› 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?
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/ ‹#›
Load balance - principais tabelas mysql_replication_hostgroups/mysql_group_replication_hostgroups/ mysql_galera_hostgroups ‹#›
Load balance - principais tabelas mysql_servers ‹#›
Load balance - principais tabelas mysql_query_rules ‹#›
Load balance - principais tabelas mysql_user ‹#›
Load Balance ‹#› Configuração dos Hostgroups /Servers
Load Balance ‹#› Divisão da Leitura e escrita
Camadas ProxySQL Runtime: Representa os valores em memória do ProxySQL. Tabelas iniciadas com runtime. ‹#› Memory : Representa o banco de dados em memória onde editamos configurações no ProxySQL. Disk : Representa o banco de dados em disco (SQLite3).
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 ‹#›
Alterando configurações entre camadas - Runtime ‹#›
Alterando configurações entre camadas - Disk ‹#›
Alterando configurações entre camadas - Disk ‹#›
Temos dois tipos de variáveis no ProxySQL: Admin MySQL Alterando configurações entre camadas - Variáveis ‹#›
MySQL Alterando configurações entre camadas - Variáveis ‹#›
Admin Alterando configurações entre camadas - Variáveis ‹#›
Features ProxySQL Connection Pool
Connection Pool ‹#›
Connection Pool ‹#›
Connection Pool ‹#›
Features ProxySQL Multiplexing
Multiplexing ‹#›
Multiplexing ‹#›
Multiplexing ‹#›
Multiplexing - Desabilitar ‹#› 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
Variáveis de check: read_only Failover - Galera/PXC ‹#›
Variáveis de check: read_only Failover - Group Replication ‹#›
Features ProxySQL Reescrita de query
Reescrita de query ‹#› Regra de query utilizando match_partten
Reescrita de query ‹#›
Features ProxySQL Bloqueando Queries
Bloqueando Queries ‹#› Executando query suspeita
Bloqueando Queries ‹#› Verificando Queries
Bloqueando Queries ‹#› Criando regra de bloqueio Teste
Features ProxySQL Query Cache
Query cache baseado em TTL(Time-to-live) Query Cache ‹#›
Features ProxySQL ProxySQL Cluster
ProxySQL Cluster - Principais Tabelas proxysql_servers ‹#›
ProxySQL Cluster - Principais Tabelas Variáveis do Cluster ‹#›
ProxySQL Cluster -Validações validações via checksum ‹#›
ProxySQL Cluster -Alterações ‹#›
Features ProxySQL Tabelas de e statística
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 ‹#›
Caso de Uso
Caso de Uso ‹#› 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