SlideShare uma empresa Scribd logo
1 de 33
© 2017 Percona1
Marcelo Altmann
ProxySQL para MySQL
Mais que um simples proxy - Exemplos de uso
Senior Support Engineer
MySQL & MongoDB meetup - Sao Paulo
11/05/2017
© 2017 Percona2
Agenda
© 2017 Percona3
Agenda
▪ Sobre Mim
▪ ProxySQL
•Introdução
•Features
▪Load Balance
▪Firewall
▪Query Cache
▪Integrações
▪Outros
© 2017 Percona4
Sobre Mim
© 2017 Percona5
Marcelo Altmann
▪Engenheiro de Suporte @ percona
• MySQL DBA @ IEDR (CCTLD Irlanda)
▪Oracle ACE Associate
▪Certificaçoes
•Oracle Certified Professional, MySQL 5.6 Database Administrator
•Oracle Certified Professional, MySQL 5.6 Developer
•Oracle Certified Professional, MySQL 5 Database Administrator
•Oracle Certified Professional, MySQL 5 Developer
•Oracle Certified Associate, MySQL 5.0/5.1/5.5
▪blog.marceloaltmann.com
© 2017 Percona6
ProxySQL - Introdução
© 2017 Percona7
ProxySQL - Introdução
▪ Criado e mantido por René Cannaò
•MySQL Community - Contribuidor do ano (2017)
▪Open Source
•http://www.proxysql.com/
•https://github.com/sysown/proxysql
© 2017 Percona8
ProxySQL - Introdução
▪ Instalação
•Source Code / rpm / deb / percona repo (yum / apt-get)
▪MySQL admin interface
[root@localhost ~]# mysql -u admin -padmin -P 6032 -h 127.0.0.1 --prompt='Admin> '
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.5.30 (ProxySQL Admin Module)
. . .
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
Admin>
© 2017 Percona9
ProxySQL - Introdução
▪ Camadas
•Runtime - Dados que o proxySQL acessa
•Main/Memory - Camada onde executamos alterações e monitoramento
•Disk - Camada para persistir dados. SQLite3
•Config - Arquivo em disco que é lido caso o banco de dados SQLite3 nao exista.
© 2017 Percona10
ProxySQL - Introdução
▪ Tabelas
•mysql_servers - Contém a lista de servidores.
•mysql_query_rules - Contém a lista de regras para cache, reescrita e
redirecionamento de queries.
•mysql_users - Contém a lista de usuário para autenticação.
•global_variables - Contém a lista de variáveis de configuração.
© 2017 Percona11
ProxySQL - Features
© 2017 Percona12
ProxySQL - Features - Load Balance
▪ Usuários de autenticação
Admin> INSERT INTO mysql_users (username,password) VALUES ('application', 'app');
Query OK, 1 row affected (0.00 sec)
Admin> LOAD MYSQL USERS TO RUNTIME ;
Query OK, 0 rows affected (0.00 sec)
Admin> SAVE MYSQL USERS FROM RUNTIME; -- Hack para o plain-text password
Query OK, 0 rows affected (0.00 sec)
Admin> SAVE MYSQL USERS TO DISK ;
Query OK, 0 rows affected (0.01 sec)
© 2017 Percona13
ProxySQL - Features - Load Balance
▪ Redirecionamento do tráfego para lista de servidores
Admin> INSERT INTO mysql_servers (hostname) VALUES ('192.168.19.71'),('192.168.19.72'),('192.168.19.73');
Query OK, 3 rows affected (0.00 sec)
Admin> LOAD MYSQL SERVERS TO RUNTIME;
Query OK, 0 rows affected (0.01 sec)
Admin> SAVE MYSQL SERVERS TO DISK;
Query OK, 0 rows affected (0.02 sec)
© 2017 Percona14
ProxySQL - Features - Load Balance
▪ Redirecionamento do tráfego para lista de servidores
[root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT @@server_id"
+-------------+
| @@server_id |
+-------------+
| 2 |
+-------------+
[root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT @@server_id"
+-------------+
| @@server_id |
+-------------+
| 3 |
+-------------+
[root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT @@server_id"
+-------------+
| @@server_id |
+-------------+
| 1 |
+-------------+
© 2017 Percona15
ProxySQL - Features - Load Balance
▪ Dividir leituras e escritas
•Host Groups - Agrupamento de servidores
Admin> UPDATE mysql_servers SET hostgroup_id = 1 WHERE hostname <> '192.168.19.71';
Admin> SELECT hostgroup_id, hostname FROM mysql_servers;
+--------------+---------------+
| hostgroup_id | hostname |
+--------------+---------------+
| 0 | 192.168.19.71 |
| 1 | 192.168.19.72 |
| 1 | 192.168.19.73 |
+--------------+---------------+
Admin> LOAD MYSQL SERVERS TO RUNTIME;
Admin> SAVE MYSQL SERVERS TO DISK;
© 2017 Percona16
ProxySQL - Features - Load Balance
▪ Dividir leituras e escritas
Admin> SELECT username, default_hostgroup FROM mysql_users;
+-------------+-------------------+
| username | default_hostgroup |
+-------------+-------------------+
| application | 0 |
+-------------+-------------------+
1 row in set (0.00 sec)
© 2017 Percona17
ProxySQL - Features - Load Balance
▪ Dividir leituras e escritas
Admin> INSERT INTO mysql_query_rules (rule_id,active,match_digest,destination_hostgroup)
-> VALUES
-> (1,1,'^SELECT.*FOR UPDATE$',0),
-> (2,1,'^SELECT',1);
Query OK, 2 rows affected (0.00 sec)
Admin> LOAD MYSQL QUERY RULES TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)
Admin> SAVE MYSQL QUERY RULES TO DISK;
Query OK, 0 rows affected (0.01 sec)
© 2017 Percona18
ProxySQL - Features - Load Balance
▪ Dividir leituras e escritas
[root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "INSERT INTO test.t1 VALUES
(@@server_id)"
[root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT @@server_id, server FROM
test.t1"
+-------------+--------+
| @@server_id | server |
+-------------+--------+
| 3 | 1 |
+-------------+--------+
[root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT @@server_id, server FROM
test.t1"
+-------------+--------+
| @@server_id | server |
+-------------+--------+
| 2 | 1 |
+-------------+--------+
© 2017 Percona19
ProxySQL - Features - Stats
▪ SHOW TABLES FROM stats;
•Stats_mysql_commands_counters - Contador baseado em comandos
•Stats_mysql_connection_pool - Conexoes por servidor
•Stats_mysql_global - Estatisticas globais
•Stats_mysql_processlist - SHOW PROCESSLIST
•Stats_mysql_query_digest - Contador agrupado por digest
•Stats_mysql_query_rules - Contador baseado nas query rules
© 2017 Percona20
ProxySQL - Features - Reescrita de query
▪ stats_mysql_query_digest
Admin> SELECT digest, digest_text, sum_time FROM stats_mysql_query_digest ORDER BY sum_time DESC LIMIT 1;
+--------------------+-----------------------------------------+----------+
| digest | digest_text | sum_time |
+--------------------+-----------------------------------------+----------+
| 0xD69E622A5052289E | SELECT * FROM world.city WHERE Name = ? | 7016461 |
+--------------------+-----------------------------------------+----------+
Admin> INSERT INTO mysql_query_rules (rule_id,active,match_pattern, replace_pattern) VALUES (3,1,
'^SELECT * FROM world.city WHERE Name = (.*)$',
'SELECT Population FROM world.city WHERE Name = 1');
Query OK, 1 row affected (0.00 sec)
Admin> LOAD MYSQL QUERY RULES TO RUNTIME;
Query OK, 0 rows affected (0.01 sec)
Admin> SAVE MYSQL QUERY RULES TO DISK;
Query OK, 0 rows affected (0.01 sec)
© 2017 Percona21
ProxySQL - Features - Reescrita de query
[root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT * FROM world.city WHERE Name =
'São Paulo'"
+------------+
| Population |
+------------+
| 9968485 |
+------------+
© 2017 Percona22
ProxySQL - Features - Firewall
▪Bloquear queries - SQL INJECTION!
•Original query: SELECT Name FROM world.city WHERE Name = ‘?’
•SQL Injection: ? = São Paulo' OR ID > 0; --
•SELECT Name FROM world.city WHERE Name = 'São Paulo' OR ID > 0; --'
Admin> SELECT username, digest, digest_text FROM stats_mysql_query_digest WHERE digest_text LIKE '% OR ID %'
ORDER BY first_seen DESC LIMIT 1;
+-------------+--------------------+------------------------------------------------------+
| username | digest | digest_text |
+-------------+--------------------+------------------------------------------------------+
| application | 0xD8AF41BF32707ABD | SELECT Name FROM world.city WHERE Name = ? OR ID > ? |
+-------------+--------------------+------------------------------------------------------+
1 row in set (0.00 sec)
© 2017 Percona23
ProxySQL - Features - Firewall
Admin> INSERT INTO mysql_query_rules (rule_id, active, digest, error_msg, apply) VALUES
(4,1,'0xD8AF41BF32707ABD','Suspeita de SQL Injection',1);
Query OK, 1 row affected (0.00 sec)
Admin> LOAD MYSQL QUERY RULES TO RUNTIME;SAVE MYSQL QUERY RULES TO DISK;
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
[root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT Name FROM
world.city WHERE Name = 'São Paulo' OR ID > 0; --' "
ERROR 1148 (42000) at line 1: Suspeita de SQL Injection
© 2017 Percona24
ProxySQL - Features - Mirror
▪Espelhar queries em outros servidores
•Testar configurações
•Standby Master - Manter buffer pool quente
•Testar workload em versões diferentes - Upgrades
•Troubleshooting
© 2017 Percona25
ProxySQL - Features - Mirror
▪Esquentar buffer pool
Admin> INSERT INTO mysql_servers (hostgroup_id, hostname) VALUES (2, '192.168.29.29');
Admin> LOAD MYSQL SERVERS TO RUNTIME; SAVE MYSQL SERVERS TO DISK;
Admin> SELECT rule_id, match_digest, destination_hostgroup, mirror_hostgroup FROM
mysql_query_rules WHERE rule_id=2;
+---------+--------------+-----------------------+------------------+
| rule_id | match_digest | destination_hostgroup | mirror_hostgroup |
+---------+--------------+-----------------------+------------------+
| 2 | ^SELECT | 1 | NULL |
+---------+--------------+-----------------------+------------------+
Admin> UPDATE mysql_query_rules SET mirror_hostgroup=2 WHERE rule_id=2;
Admin> LOAD MYSQL QUERY RULES TO RUNTIME;
Admin> SAVE MYSQL QUERY RULES TO DISK;
© 2017 Percona26
ProxySQL - Features - Query Cache
▪Cache de queries baseado em TTL
[root@localhost ~]# sysbench --num-threads=16 --max-requests=0 --max-time=60 --test=/usr/share/doc/sysbench/tests/db/oltp.lua --mysql-
user=application --mysql-password=app --mysql-db=test --mysql-host=127.0.0.1 --mysql-port=6033 --oltp-table-size=10000 --oltp-read-only=on
--oltp-skip-trx=on --oltp-point-selects=100 --oltp-simple-ranges=1 --oltp-sum-ranges=1 --oltp-order-ranges=1 --oltp-distinct-ranges=1 run
| grep 'read/write requests'
read/write requests: 105664 (1744.81 per sec.)
Admin> SELECT count_star,sum_time,hostgroup,digest,digest_text FROM stats_mysql_query_digest ORDER BY sum_time DESC;
+------------+-----------+-----------+--------------------+----------------------------------------------------------------------+
| count_star | sum_time | hostgroup | digest | digest_text |
+------------+-----------+-----------+--------------------+----------------------------------------------------------------------+
| 100200 | 459147213 | 1 | 0xBF001A0C13781C1D | SELECT c FROM sbtest1 WHERE id=? |
| 1002 | 6533622 | 1 | 0xF7D3CD60704822A0 | SELECT DISTINCT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? ORDER BY c |
| 1002 | 6061540 | 1 | 0x877EEAAFADF3DDF2 | SELECT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? ORDER BY c |
| 1002 | 5905677 | 1 | 0xAF7A51977DD56217 | SELECT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? |
| 1002 | 5321376 | 1 | 0x3E268CF3E75DB831 | SELECT SUM(K) FROM sbtest1 WHERE id BETWEEN ? AND ?+? |
+------------+-----------+-----------+--------------------+----------------------------------------------------------------------+
© 2017 Percona27
ProxySQL - Features - Query Cache
Admin> INSERT INTO mysql_query_rules (rule_id,active,digest,cache_ttl,apply) VALUES (5,1, '0xBF001A0C13781C1D' ,2000,1);
Query OK, 1 row affected (0.00 sec)
Admin> LOAD MYSQL QUERY RULES TO RUNTIME;SAVE MYSQL QUERY RULES TO DISK;
[root@localhost ~]# sysbench --num-threads=16 --max-requests=0 --max-time=60 --test=/usr/share/doc/sysbench/tests/db/oltp.lua --mysql-
user=application --mysql-password=app --mysql-db=test --mysql-host=127.0.0.1 --mysql-port=6033 --oltp-table-size=10000 --oltp-read-only=on
--oltp-skip-trx=on --oltp-point-selects=100 --oltp-simple-ranges=1 --oltp-sum-ranges=1 --oltp-order-ranges=1 --oltp-distinct-ranges=1 run
| grep 'read/write requests'
read/write requests: 238680 (3956.42 per sec.)
Admin> SELECT count_star,sum_time,hostgroup,digest,digest_text FROM stats_mysql_query_digest ORDER BY sum_time DESC;
+------------+-----------+-----------+--------------------+----------------------------------------------------------------------+
| count_star | sum_time | hostgroup | digest | digest_text |
+------------+-----------+-----------+--------------------+----------------------------------------------------------------------+
| 140512 | 632180517 | 1 | 0xBF001A0C13781C1D | SELECT c FROM sbtest1 WHERE id=? |
| 3372 | 18351846 | 1 | 0xF7D3CD60704822A0 | SELECT DISTINCT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? ORDER BY c |
| 3372 | 17739689 | 1 | 0x877EEAAFADF3DDF2 | SELECT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? ORDER BY c |
| 3372 | 17709660 | 1 | 0xAF7A51977DD56217 | SELECT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? |
| 3372 | 15646777 | 1 | 0x3E268CF3E75DB831 | SELECT SUM(K) FROM sbtest1 WHERE id BETWEEN ? AND ?+? |
| 196688 | 0 | -1 | 0xBF001A0C13781C1D | SELECT c FROM sbtest1 WHERE id=? |
+------------+-----------+-----------+--------------------+----------------------------------------------------------------------+
© 2017 Percona28
ProxySQL - Features - Query Cache
Admin> SHOW VARIABLES LIKE 'mysql-query_cache%';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| mysql-query_cache_size_MB | 256 |
+---------------------------+-------+
1 row in set (0.00 sec)
Admin> SET mysql-query_cache_size_MB=512;
Query OK, 1 row affected (0.00 sec)
Admin> LOAD MYSQL VARIABLES TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)
Admin> SAVE MYSQL VARIABLES TO DISK;
Query OK, 72 rows affected (0.03 sec)
© 2017 Percona29
ProxySQL - Features - Query Cache
Admin> SELECT * FROM stats_mysql_global WHERE Variable_Name LIKE 'Query_Cache%';
+--------------------------+----------------+
| Variable_Name | Variable_Value |
+--------------------------+----------------+
| Query_Cache_Memory_bytes | 4469785 | -- Resultset armazenado no QC
| Query_Cache_count_GET | 542750 | -- Número de GET’s executados no QC
| Query_Cache_count_GET_OK | 441122 | -- Número de GET’s que retornaram OK (Query estava em cache e nao estava expirada)
| Query_Cache_count_SET | 101626 | -- Número de Resulset’s inseridos no QC
| Query_Cache_bytes_IN | 19613818 | -- Bytes escritos no QC
| Query_Cache_bytes_OUT | 85136546 | -- Bytes lidos do QC
| Query_Cache_Purged | 100257 | -- Número de queries Purged
| Query_Cache_Entries | 1369 | -- Queries atualmente no QC
+--------------------------+----------------+
© 2017 Percona30
ProxySQL - Features - Integrações
▪MHA (sem alterar DNS ou VIP)
•https://www.percona.com/blog/2016/09/13/proxysql-and-mha-integration/
▪Galera / Percona XtraDB Cluster
•https://www.percona.com/blog/2016/09/15/proxysql-percona-cluster-galera-
integration/
© 2017 Percona31
Estamos Contratando !!!
- Senior Support Engineer - Brazil - Americas
- Inglês fluente
- Manjar de MySQL
percona.com/careers
© 2017 Percona32
Perguntas?
© 2017 Percona33
DATABASE PERFORMANCE
MATTERS
Database Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance Matters
Obrigado!

Mais conteúdo relacionado

Mais procurados

DB Floripa - ProxySQL para MySQL
DB Floripa - ProxySQL para MySQLDB Floripa - ProxySQL para MySQL
DB Floripa - ProxySQL para MySQLMarcelo Altmann
 
MySQL Replication Overview -- PHPTek 2016
MySQL Replication Overview -- PHPTek 2016MySQL Replication Overview -- PHPTek 2016
MySQL Replication Overview -- PHPTek 2016Dave Stokes
 
Percona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQLPercona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQLMarcelo Altmann
 
MySQL Backup and Security Best Practices
MySQL Backup and Security Best PracticesMySQL Backup and Security Best Practices
MySQL Backup and Security Best PracticesLenz Grimmer
 
What is new in PostgreSQL 14?
What is new in PostgreSQL 14?What is new in PostgreSQL 14?
What is new in PostgreSQL 14?Mydbops
 
MySQL Performance Schema in 20 Minutes
 MySQL Performance Schema in 20 Minutes MySQL Performance Schema in 20 Minutes
MySQL Performance Schema in 20 MinutesSveta Smirnova
 
Download presentation
Download presentationDownload presentation
Download presentationwebhostingguy
 
MySQL Enterprise Backup (MEB)
MySQL Enterprise Backup (MEB)MySQL Enterprise Backup (MEB)
MySQL Enterprise Backup (MEB)Mydbops
 
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWebinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWagner Bianchi
 
MySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptxMySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptxNeoClova
 
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)Aurimas Mikalauskas
 
Intro ProxySQL
Intro ProxySQLIntro ProxySQL
Intro ProxySQLI Goo Lee
 
Online MySQL Backups with Percona XtraBackup
Online MySQL Backups with Percona XtraBackupOnline MySQL Backups with Percona XtraBackup
Online MySQL Backups with Percona XtraBackupKenny Gryp
 
PostgreSQL9.3 Switchover/Switchback
PostgreSQL9.3 Switchover/SwitchbackPostgreSQL9.3 Switchover/Switchback
PostgreSQL9.3 Switchover/SwitchbackVibhor Kumar
 
Performance Tuning Best Practices
Performance Tuning Best PracticesPerformance Tuning Best Practices
Performance Tuning Best Practiceswebhostingguy
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PGConf APAC
 
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...Marco Tusa
 
InnoDB Performance Optimisation
InnoDB Performance OptimisationInnoDB Performance Optimisation
InnoDB Performance OptimisationMydbops
 
Mysql 57-upcoming-changes
Mysql 57-upcoming-changesMysql 57-upcoming-changes
Mysql 57-upcoming-changesMorgan Tocker
 

Mais procurados (20)

DB Floripa - ProxySQL para MySQL
DB Floripa - ProxySQL para MySQLDB Floripa - ProxySQL para MySQL
DB Floripa - ProxySQL para MySQL
 
MySQL Replication Overview -- PHPTek 2016
MySQL Replication Overview -- PHPTek 2016MySQL Replication Overview -- PHPTek 2016
MySQL Replication Overview -- PHPTek 2016
 
Percona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQLPercona University - ProxySQL para MySQL
Percona University - ProxySQL para MySQL
 
MySQL Backup and Security Best Practices
MySQL Backup and Security Best PracticesMySQL Backup and Security Best Practices
MySQL Backup and Security Best Practices
 
What is new in PostgreSQL 14?
What is new in PostgreSQL 14?What is new in PostgreSQL 14?
What is new in PostgreSQL 14?
 
MySQL Performance Schema in 20 Minutes
 MySQL Performance Schema in 20 Minutes MySQL Performance Schema in 20 Minutes
MySQL Performance Schema in 20 Minutes
 
Download presentation
Download presentationDownload presentation
Download presentation
 
MySQL Enterprise Backup (MEB)
MySQL Enterprise Backup (MEB)MySQL Enterprise Backup (MEB)
MySQL Enterprise Backup (MEB)
 
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWebinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
 
MySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptxMySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptx
 
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)
 
Perf Tuning Short
Perf Tuning ShortPerf Tuning Short
Perf Tuning Short
 
Intro ProxySQL
Intro ProxySQLIntro ProxySQL
Intro ProxySQL
 
Online MySQL Backups with Percona XtraBackup
Online MySQL Backups with Percona XtraBackupOnline MySQL Backups with Percona XtraBackup
Online MySQL Backups with Percona XtraBackup
 
PostgreSQL9.3 Switchover/Switchback
PostgreSQL9.3 Switchover/SwitchbackPostgreSQL9.3 Switchover/Switchback
PostgreSQL9.3 Switchover/Switchback
 
Performance Tuning Best Practices
Performance Tuning Best PracticesPerformance Tuning Best Practices
Performance Tuning Best Practices
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs
 
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
 
InnoDB Performance Optimisation
InnoDB Performance OptimisationInnoDB Performance Optimisation
InnoDB Performance Optimisation
 
Mysql 57-upcoming-changes
Mysql 57-upcoming-changesMysql 57-upcoming-changes
Mysql 57-upcoming-changes
 

Semelhante a ProxySQL para mysql

Percona Live 2019 - MySQL Security
Percona Live 2019 - MySQL SecurityPercona Live 2019 - MySQL Security
Percona Live 2019 - MySQL SecurityVinicius M Grippa
 
NoSQL on MySQL - MySQL Document Store by Vadim Tkachenko
NoSQL on MySQL - MySQL Document Store by Vadim TkachenkoNoSQL on MySQL - MySQL Document Store by Vadim Tkachenko
NoSQL on MySQL - MySQL Document Store by Vadim TkachenkoData Con LA
 
ProxySQL for MySQL
ProxySQL for MySQLProxySQL for MySQL
ProxySQL for MySQLMydbops
 
MysQL melhores práticas de seguranca
MysQL  melhores práticas de segurancaMysQL  melhores práticas de seguranca
MysQL melhores práticas de segurancaMarcelo Altmann
 
제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQL제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQLTommy Lee
 
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricksQuery Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricksJaime Crespo
 
OSMC 2008 | Monitoring MySQL by Geert Vanderkelen
OSMC 2008 | Monitoring MySQL by Geert VanderkelenOSMC 2008 | Monitoring MySQL by Geert Vanderkelen
OSMC 2008 | Monitoring MySQL by Geert VanderkelenNETWAYS
 
ProxySQL Cluster - Percona Live 2022
ProxySQL Cluster - Percona Live 2022ProxySQL Cluster - Percona Live 2022
ProxySQL Cluster - Percona Live 2022René Cannaò
 
MySQL sys schema deep dive
MySQL sys schema deep diveMySQL sys schema deep dive
MySQL sys schema deep diveMark Leith
 
ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)YoungHeon (Roy) Kim
 
MySQL Best Practices - OTN
MySQL Best Practices - OTNMySQL Best Practices - OTN
MySQL Best Practices - OTNRonald Bradford
 
Using Vault to decouple MySQL Secrets
Using Vault to decouple MySQL SecretsUsing Vault to decouple MySQL Secrets
Using Vault to decouple MySQL SecretsDerek Downey
 
Common schema my sql uc 2012
Common schema   my sql uc 2012Common schema   my sql uc 2012
Common schema my sql uc 2012Roland Bouman
 
Common schema my sql uc 2012
Common schema   my sql uc 2012Common schema   my sql uc 2012
Common schema my sql uc 2012Roland Bouman
 

Semelhante a ProxySQL para mysql (20)

Percona Live 2019 - MySQL Security
Percona Live 2019 - MySQL SecurityPercona Live 2019 - MySQL Security
Percona Live 2019 - MySQL Security
 
NoSQL on MySQL - MySQL Document Store by Vadim Tkachenko
NoSQL on MySQL - MySQL Document Store by Vadim TkachenkoNoSQL on MySQL - MySQL Document Store by Vadim Tkachenko
NoSQL on MySQL - MySQL Document Store by Vadim Tkachenko
 
Guob - MySQL e LGPD
Guob - MySQL e LGPDGuob - MySQL e LGPD
Guob - MySQL e LGPD
 
Curso de MySQL 5.7
Curso de MySQL 5.7Curso de MySQL 5.7
Curso de MySQL 5.7
 
ProxySQL for MySQL
ProxySQL for MySQLProxySQL for MySQL
ProxySQL for MySQL
 
Enhancing MySQL Security
Enhancing MySQL SecurityEnhancing MySQL Security
Enhancing MySQL Security
 
MysQL melhores práticas de seguranca
MysQL  melhores práticas de segurancaMysQL  melhores práticas de seguranca
MysQL melhores práticas de seguranca
 
Instalar MySQL CentOS
Instalar MySQL CentOSInstalar MySQL CentOS
Instalar MySQL CentOS
 
Proxy SQL 2.0 with PXC
Proxy SQL 2.0 with PXCProxy SQL 2.0 with PXC
Proxy SQL 2.0 with PXC
 
Enhancing MySQL Security
Enhancing MySQL SecurityEnhancing MySQL Security
Enhancing MySQL Security
 
제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQL제3회난공불락 오픈소스 인프라세미나 - MySQL
제3회난공불락 오픈소스 인프라세미나 - MySQL
 
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricksQuery Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
 
OSMC 2008 | Monitoring MySQL by Geert Vanderkelen
OSMC 2008 | Monitoring MySQL by Geert VanderkelenOSMC 2008 | Monitoring MySQL by Geert Vanderkelen
OSMC 2008 | Monitoring MySQL by Geert Vanderkelen
 
ProxySQL Cluster - Percona Live 2022
ProxySQL Cluster - Percona Live 2022ProxySQL Cluster - Percona Live 2022
ProxySQL Cluster - Percona Live 2022
 
MySQL sys schema deep dive
MySQL sys schema deep diveMySQL sys schema deep dive
MySQL sys schema deep dive
 
ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)
 
MySQL Best Practices - OTN
MySQL Best Practices - OTNMySQL Best Practices - OTN
MySQL Best Practices - OTN
 
Using Vault to decouple MySQL Secrets
Using Vault to decouple MySQL SecretsUsing Vault to decouple MySQL Secrets
Using Vault to decouple MySQL Secrets
 
Common schema my sql uc 2012
Common schema   my sql uc 2012Common schema   my sql uc 2012
Common schema my sql uc 2012
 
Common schema my sql uc 2012
Common schema   my sql uc 2012Common schema   my sql uc 2012
Common schema my sql uc 2012
 

Mais de Marcelo Altmann

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 XtrabackupMarcelo Altmann
 
Percona XtraBackup - New Features and Improvements
Percona XtraBackup - New Features and ImprovementsPercona XtraBackup - New Features and Improvements
Percona XtraBackup - New Features and ImprovementsMarcelo Altmann
 
Troubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer PerspectiveTroubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer PerspectiveMarcelo Altmann
 
A Percona Support Engineer Walkthrough on pt-stalk
A Percona Support Engineer Walkthrough on pt-stalkA Percona Support Engineer Walkthrough on pt-stalk
A Percona Support Engineer Walkthrough on pt-stalkMarcelo Altmann
 
MySQL - Melhores práticas de replicação de dados
MySQL - Melhores práticas de replicação de dadosMySQL - Melhores práticas de replicação de dados
MySQL - Melhores práticas de replicação de dadosMarcelo Altmann
 
Percona Live London 2014 - MySQL Backup Strategy @ IEDR
Percona Live London 2014 - MySQL Backup Strategy @ IEDRPercona Live London 2014 - MySQL Backup Strategy @ IEDR
Percona Live London 2014 - MySQL Backup Strategy @ IEDRMarcelo Altmann
 

Mais de Marcelo Altmann (9)

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 - New Features and Improvements
Percona XtraBackup - New Features and ImprovementsPercona XtraBackup - New Features and Improvements
Percona XtraBackup - New Features and Improvements
 
Troubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer PerspectiveTroubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer Perspective
 
Backup para MySQL
Backup para MySQLBackup para MySQL
Backup para MySQL
 
GDB e Análise de Bugs
GDB e Análise de BugsGDB e Análise de Bugs
GDB e Análise de Bugs
 
A Percona Support Engineer Walkthrough on pt-stalk
A Percona Support Engineer Walkthrough on pt-stalkA Percona Support Engineer Walkthrough on pt-stalk
A Percona Support Engineer Walkthrough on pt-stalk
 
Optimizando MySQL
Optimizando MySQLOptimizando MySQL
Optimizando MySQL
 
MySQL - Melhores práticas de replicação de dados
MySQL - Melhores práticas de replicação de dadosMySQL - Melhores práticas de replicação de dados
MySQL - Melhores práticas de replicação de dados
 
Percona Live London 2014 - MySQL Backup Strategy @ IEDR
Percona Live London 2014 - MySQL Backup Strategy @ IEDRPercona Live London 2014 - MySQL Backup Strategy @ IEDR
Percona Live London 2014 - MySQL Backup Strategy @ IEDR
 

Último

Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Sonam Pathan
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作ys8omjxb
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一Fs
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa494f574xmv
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Paul Calvano
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一Fs
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一Fs
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Dana Luther
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Sonam Pathan
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书zdzoqco
 
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New OrleansElevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleanscorenetworkseo
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)Christopher H Felton
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 

Último (20)

Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
 
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
 
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New OrleansElevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleans
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
 
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 

ProxySQL para mysql

  • 1. © 2017 Percona1 Marcelo Altmann ProxySQL para MySQL Mais que um simples proxy - Exemplos de uso Senior Support Engineer MySQL & MongoDB meetup - Sao Paulo 11/05/2017
  • 3. © 2017 Percona3 Agenda ▪ Sobre Mim ▪ ProxySQL •Introdução •Features ▪Load Balance ▪Firewall ▪Query Cache ▪Integrações ▪Outros
  • 5. © 2017 Percona5 Marcelo Altmann ▪Engenheiro de Suporte @ percona • MySQL DBA @ IEDR (CCTLD Irlanda) ▪Oracle ACE Associate ▪Certificaçoes •Oracle Certified Professional, MySQL 5.6 Database Administrator •Oracle Certified Professional, MySQL 5.6 Developer •Oracle Certified Professional, MySQL 5 Database Administrator •Oracle Certified Professional, MySQL 5 Developer •Oracle Certified Associate, MySQL 5.0/5.1/5.5 ▪blog.marceloaltmann.com
  • 6. © 2017 Percona6 ProxySQL - Introdução
  • 7. © 2017 Percona7 ProxySQL - Introdução ▪ Criado e mantido por René Cannaò •MySQL Community - Contribuidor do ano (2017) ▪Open Source •http://www.proxysql.com/ •https://github.com/sysown/proxysql
  • 8. © 2017 Percona8 ProxySQL - Introdução ▪ Instalação •Source Code / rpm / deb / percona repo (yum / apt-get) ▪MySQL admin interface [root@localhost ~]# mysql -u admin -padmin -P 6032 -h 127.0.0.1 --prompt='Admin> ' mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 1 Server version: 5.5.30 (ProxySQL Admin Module) . . . Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. Admin>
  • 9. © 2017 Percona9 ProxySQL - Introdução ▪ Camadas •Runtime - Dados que o proxySQL acessa •Main/Memory - Camada onde executamos alterações e monitoramento •Disk - Camada para persistir dados. SQLite3 •Config - Arquivo em disco que é lido caso o banco de dados SQLite3 nao exista.
  • 10. © 2017 Percona10 ProxySQL - Introdução ▪ Tabelas •mysql_servers - Contém a lista de servidores. •mysql_query_rules - Contém a lista de regras para cache, reescrita e redirecionamento de queries. •mysql_users - Contém a lista de usuário para autenticação. •global_variables - Contém a lista de variáveis de configuração.
  • 12. © 2017 Percona12 ProxySQL - Features - Load Balance ▪ Usuários de autenticação Admin> INSERT INTO mysql_users (username,password) VALUES ('application', 'app'); Query OK, 1 row affected (0.00 sec) Admin> LOAD MYSQL USERS TO RUNTIME ; Query OK, 0 rows affected (0.00 sec) Admin> SAVE MYSQL USERS FROM RUNTIME; -- Hack para o plain-text password Query OK, 0 rows affected (0.00 sec) Admin> SAVE MYSQL USERS TO DISK ; Query OK, 0 rows affected (0.01 sec)
  • 13. © 2017 Percona13 ProxySQL - Features - Load Balance ▪ Redirecionamento do tráfego para lista de servidores Admin> INSERT INTO mysql_servers (hostname) VALUES ('192.168.19.71'),('192.168.19.72'),('192.168.19.73'); Query OK, 3 rows affected (0.00 sec) Admin> LOAD MYSQL SERVERS TO RUNTIME; Query OK, 0 rows affected (0.01 sec) Admin> SAVE MYSQL SERVERS TO DISK; Query OK, 0 rows affected (0.02 sec)
  • 14. © 2017 Percona14 ProxySQL - Features - Load Balance ▪ Redirecionamento do tráfego para lista de servidores [root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT @@server_id" +-------------+ | @@server_id | +-------------+ | 2 | +-------------+ [root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT @@server_id" +-------------+ | @@server_id | +-------------+ | 3 | +-------------+ [root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT @@server_id" +-------------+ | @@server_id | +-------------+ | 1 | +-------------+
  • 15. © 2017 Percona15 ProxySQL - Features - Load Balance ▪ Dividir leituras e escritas •Host Groups - Agrupamento de servidores Admin> UPDATE mysql_servers SET hostgroup_id = 1 WHERE hostname <> '192.168.19.71'; Admin> SELECT hostgroup_id, hostname FROM mysql_servers; +--------------+---------------+ | hostgroup_id | hostname | +--------------+---------------+ | 0 | 192.168.19.71 | | 1 | 192.168.19.72 | | 1 | 192.168.19.73 | +--------------+---------------+ Admin> LOAD MYSQL SERVERS TO RUNTIME; Admin> SAVE MYSQL SERVERS TO DISK;
  • 16. © 2017 Percona16 ProxySQL - Features - Load Balance ▪ Dividir leituras e escritas Admin> SELECT username, default_hostgroup FROM mysql_users; +-------------+-------------------+ | username | default_hostgroup | +-------------+-------------------+ | application | 0 | +-------------+-------------------+ 1 row in set (0.00 sec)
  • 17. © 2017 Percona17 ProxySQL - Features - Load Balance ▪ Dividir leituras e escritas Admin> INSERT INTO mysql_query_rules (rule_id,active,match_digest,destination_hostgroup) -> VALUES -> (1,1,'^SELECT.*FOR UPDATE$',0), -> (2,1,'^SELECT',1); Query OK, 2 rows affected (0.00 sec) Admin> LOAD MYSQL QUERY RULES TO RUNTIME; Query OK, 0 rows affected (0.00 sec) Admin> SAVE MYSQL QUERY RULES TO DISK; Query OK, 0 rows affected (0.01 sec)
  • 18. © 2017 Percona18 ProxySQL - Features - Load Balance ▪ Dividir leituras e escritas [root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "INSERT INTO test.t1 VALUES (@@server_id)" [root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT @@server_id, server FROM test.t1" +-------------+--------+ | @@server_id | server | +-------------+--------+ | 3 | 1 | +-------------+--------+ [root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT @@server_id, server FROM test.t1" +-------------+--------+ | @@server_id | server | +-------------+--------+ | 2 | 1 | +-------------+--------+
  • 19. © 2017 Percona19 ProxySQL - Features - Stats ▪ SHOW TABLES FROM stats; •Stats_mysql_commands_counters - Contador baseado em comandos •Stats_mysql_connection_pool - Conexoes por servidor •Stats_mysql_global - Estatisticas globais •Stats_mysql_processlist - SHOW PROCESSLIST •Stats_mysql_query_digest - Contador agrupado por digest •Stats_mysql_query_rules - Contador baseado nas query rules
  • 20. © 2017 Percona20 ProxySQL - Features - Reescrita de query ▪ stats_mysql_query_digest Admin> SELECT digest, digest_text, sum_time FROM stats_mysql_query_digest ORDER BY sum_time DESC LIMIT 1; +--------------------+-----------------------------------------+----------+ | digest | digest_text | sum_time | +--------------------+-----------------------------------------+----------+ | 0xD69E622A5052289E | SELECT * FROM world.city WHERE Name = ? | 7016461 | +--------------------+-----------------------------------------+----------+ Admin> INSERT INTO mysql_query_rules (rule_id,active,match_pattern, replace_pattern) VALUES (3,1, '^SELECT * FROM world.city WHERE Name = (.*)$', 'SELECT Population FROM world.city WHERE Name = 1'); Query OK, 1 row affected (0.00 sec) Admin> LOAD MYSQL QUERY RULES TO RUNTIME; Query OK, 0 rows affected (0.01 sec) Admin> SAVE MYSQL QUERY RULES TO DISK; Query OK, 0 rows affected (0.01 sec)
  • 21. © 2017 Percona21 ProxySQL - Features - Reescrita de query [root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT * FROM world.city WHERE Name = 'São Paulo'" +------------+ | Population | +------------+ | 9968485 | +------------+
  • 22. © 2017 Percona22 ProxySQL - Features - Firewall ▪Bloquear queries - SQL INJECTION! •Original query: SELECT Name FROM world.city WHERE Name = ‘?’ •SQL Injection: ? = São Paulo' OR ID > 0; -- •SELECT Name FROM world.city WHERE Name = 'São Paulo' OR ID > 0; --' Admin> SELECT username, digest, digest_text FROM stats_mysql_query_digest WHERE digest_text LIKE '% OR ID %' ORDER BY first_seen DESC LIMIT 1; +-------------+--------------------+------------------------------------------------------+ | username | digest | digest_text | +-------------+--------------------+------------------------------------------------------+ | application | 0xD8AF41BF32707ABD | SELECT Name FROM world.city WHERE Name = ? OR ID > ? | +-------------+--------------------+------------------------------------------------------+ 1 row in set (0.00 sec)
  • 23. © 2017 Percona23 ProxySQL - Features - Firewall Admin> INSERT INTO mysql_query_rules (rule_id, active, digest, error_msg, apply) VALUES (4,1,'0xD8AF41BF32707ABD','Suspeita de SQL Injection',1); Query OK, 1 row affected (0.00 sec) Admin> LOAD MYSQL QUERY RULES TO RUNTIME;SAVE MYSQL QUERY RULES TO DISK; Query OK, 0 rows affected (0.01 sec) Query OK, 0 rows affected (0.01 sec) [root@localhost ~]# mysql -u application -papp -P 6033 -h 127.0.0.1 -e "SELECT Name FROM world.city WHERE Name = 'São Paulo' OR ID > 0; --' " ERROR 1148 (42000) at line 1: Suspeita de SQL Injection
  • 24. © 2017 Percona24 ProxySQL - Features - Mirror ▪Espelhar queries em outros servidores •Testar configurações •Standby Master - Manter buffer pool quente •Testar workload em versões diferentes - Upgrades •Troubleshooting
  • 25. © 2017 Percona25 ProxySQL - Features - Mirror ▪Esquentar buffer pool Admin> INSERT INTO mysql_servers (hostgroup_id, hostname) VALUES (2, '192.168.29.29'); Admin> LOAD MYSQL SERVERS TO RUNTIME; SAVE MYSQL SERVERS TO DISK; Admin> SELECT rule_id, match_digest, destination_hostgroup, mirror_hostgroup FROM mysql_query_rules WHERE rule_id=2; +---------+--------------+-----------------------+------------------+ | rule_id | match_digest | destination_hostgroup | mirror_hostgroup | +---------+--------------+-----------------------+------------------+ | 2 | ^SELECT | 1 | NULL | +---------+--------------+-----------------------+------------------+ Admin> UPDATE mysql_query_rules SET mirror_hostgroup=2 WHERE rule_id=2; Admin> LOAD MYSQL QUERY RULES TO RUNTIME; Admin> SAVE MYSQL QUERY RULES TO DISK;
  • 26. © 2017 Percona26 ProxySQL - Features - Query Cache ▪Cache de queries baseado em TTL [root@localhost ~]# sysbench --num-threads=16 --max-requests=0 --max-time=60 --test=/usr/share/doc/sysbench/tests/db/oltp.lua --mysql- user=application --mysql-password=app --mysql-db=test --mysql-host=127.0.0.1 --mysql-port=6033 --oltp-table-size=10000 --oltp-read-only=on --oltp-skip-trx=on --oltp-point-selects=100 --oltp-simple-ranges=1 --oltp-sum-ranges=1 --oltp-order-ranges=1 --oltp-distinct-ranges=1 run | grep 'read/write requests' read/write requests: 105664 (1744.81 per sec.) Admin> SELECT count_star,sum_time,hostgroup,digest,digest_text FROM stats_mysql_query_digest ORDER BY sum_time DESC; +------------+-----------+-----------+--------------------+----------------------------------------------------------------------+ | count_star | sum_time | hostgroup | digest | digest_text | +------------+-----------+-----------+--------------------+----------------------------------------------------------------------+ | 100200 | 459147213 | 1 | 0xBF001A0C13781C1D | SELECT c FROM sbtest1 WHERE id=? | | 1002 | 6533622 | 1 | 0xF7D3CD60704822A0 | SELECT DISTINCT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? ORDER BY c | | 1002 | 6061540 | 1 | 0x877EEAAFADF3DDF2 | SELECT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? ORDER BY c | | 1002 | 5905677 | 1 | 0xAF7A51977DD56217 | SELECT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? | | 1002 | 5321376 | 1 | 0x3E268CF3E75DB831 | SELECT SUM(K) FROM sbtest1 WHERE id BETWEEN ? AND ?+? | +------------+-----------+-----------+--------------------+----------------------------------------------------------------------+
  • 27. © 2017 Percona27 ProxySQL - Features - Query Cache Admin> INSERT INTO mysql_query_rules (rule_id,active,digest,cache_ttl,apply) VALUES (5,1, '0xBF001A0C13781C1D' ,2000,1); Query OK, 1 row affected (0.00 sec) Admin> LOAD MYSQL QUERY RULES TO RUNTIME;SAVE MYSQL QUERY RULES TO DISK; [root@localhost ~]# sysbench --num-threads=16 --max-requests=0 --max-time=60 --test=/usr/share/doc/sysbench/tests/db/oltp.lua --mysql- user=application --mysql-password=app --mysql-db=test --mysql-host=127.0.0.1 --mysql-port=6033 --oltp-table-size=10000 --oltp-read-only=on --oltp-skip-trx=on --oltp-point-selects=100 --oltp-simple-ranges=1 --oltp-sum-ranges=1 --oltp-order-ranges=1 --oltp-distinct-ranges=1 run | grep 'read/write requests' read/write requests: 238680 (3956.42 per sec.) Admin> SELECT count_star,sum_time,hostgroup,digest,digest_text FROM stats_mysql_query_digest ORDER BY sum_time DESC; +------------+-----------+-----------+--------------------+----------------------------------------------------------------------+ | count_star | sum_time | hostgroup | digest | digest_text | +------------+-----------+-----------+--------------------+----------------------------------------------------------------------+ | 140512 | 632180517 | 1 | 0xBF001A0C13781C1D | SELECT c FROM sbtest1 WHERE id=? | | 3372 | 18351846 | 1 | 0xF7D3CD60704822A0 | SELECT DISTINCT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? ORDER BY c | | 3372 | 17739689 | 1 | 0x877EEAAFADF3DDF2 | SELECT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? ORDER BY c | | 3372 | 17709660 | 1 | 0xAF7A51977DD56217 | SELECT c FROM sbtest1 WHERE id BETWEEN ? AND ?+? | | 3372 | 15646777 | 1 | 0x3E268CF3E75DB831 | SELECT SUM(K) FROM sbtest1 WHERE id BETWEEN ? AND ?+? | | 196688 | 0 | -1 | 0xBF001A0C13781C1D | SELECT c FROM sbtest1 WHERE id=? | +------------+-----------+-----------+--------------------+----------------------------------------------------------------------+
  • 28. © 2017 Percona28 ProxySQL - Features - Query Cache Admin> SHOW VARIABLES LIKE 'mysql-query_cache%'; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | mysql-query_cache_size_MB | 256 | +---------------------------+-------+ 1 row in set (0.00 sec) Admin> SET mysql-query_cache_size_MB=512; Query OK, 1 row affected (0.00 sec) Admin> LOAD MYSQL VARIABLES TO RUNTIME; Query OK, 0 rows affected (0.00 sec) Admin> SAVE MYSQL VARIABLES TO DISK; Query OK, 72 rows affected (0.03 sec)
  • 29. © 2017 Percona29 ProxySQL - Features - Query Cache Admin> SELECT * FROM stats_mysql_global WHERE Variable_Name LIKE 'Query_Cache%'; +--------------------------+----------------+ | Variable_Name | Variable_Value | +--------------------------+----------------+ | Query_Cache_Memory_bytes | 4469785 | -- Resultset armazenado no QC | Query_Cache_count_GET | 542750 | -- Número de GET’s executados no QC | Query_Cache_count_GET_OK | 441122 | -- Número de GET’s que retornaram OK (Query estava em cache e nao estava expirada) | Query_Cache_count_SET | 101626 | -- Número de Resulset’s inseridos no QC | Query_Cache_bytes_IN | 19613818 | -- Bytes escritos no QC | Query_Cache_bytes_OUT | 85136546 | -- Bytes lidos do QC | Query_Cache_Purged | 100257 | -- Número de queries Purged | Query_Cache_Entries | 1369 | -- Queries atualmente no QC +--------------------------+----------------+
  • 30. © 2017 Percona30 ProxySQL - Features - Integrações ▪MHA (sem alterar DNS ou VIP) •https://www.percona.com/blog/2016/09/13/proxysql-and-mha-integration/ ▪Galera / Percona XtraDB Cluster •https://www.percona.com/blog/2016/09/15/proxysql-percona-cluster-galera- integration/
  • 31. © 2017 Percona31 Estamos Contratando !!! - Senior Support Engineer - Brazil - Americas - Inglês fluente - Manjar de MySQL percona.com/careers
  • 33. © 2017 Percona33 DATABASE PERFORMANCE MATTERS Database Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance MattersDatabase Performance Matters Obrigado!