ProxySQL no MySQL: Apenas um load balancer?

robertogarciadebem1 26 views 62 slides Dec 05, 2023
Slide 1
Slide 1 of 62
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62

About This Presentation

Talk realizada no evento MySQL Meetup Brazil na sede da Oracle no dia 02/12/2023.


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/ ‹#›

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 ‹#›

Features ProxySQL

Features ProxySQL Load Balance

Load Balance ‹#› Divisão da Leitura e escrita

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

Features ProxySQL Failover

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 ‹#›

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

Caso de Uso ‹#›

Caso de Uso ‹#›

Caso de Uso ‹#›

Perguntas? Vagas

percona.com Obrigado!!