SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
MAXSCALE 2.0
IMPLEMENTAÇÃO E CASOS DE USO
By Wagner Bianchi, Principal Remote DBA @ MariaDB Corporation
Email: wagner.bianchi@mariadb.com
Twitter: @wagnerbianchijr
MEETUP SÃO PAULO, 2017
WAGNER BIANCHI
Wagner Bianchi ou somente Bianchi, é atualmente Principal Remote DBA na US/Finlandesa MariaDB Corporation,
tendo trabalhado anteriormente em empresas como Percona, Pythian, IBM e Oracle, sempre com operações e entrega
de serviços. Bianchi é focado em MariaDB/MySQL/Percona Server, atuando em projetos de alta-disponibilidade,
escalabilidade e análise de performance. Além disso, como trabalha em ambiente de operações, tem experiência com
soluções de provisionamento, orchestration e monitoramento. Formado em Gerenciamento de Bancos de Dados pela
Faculdade Infórium de Tecnologia, com MBA em Administração pela Função Getúlio Vargas e MBA Oracle Database,
Bianchi milita na área de sistemas, bancos de dados e operações há mais de 11 anos.
Além disso, Bianchi é Oracle Certified Expert (OCE) e Oracle ACE Director desde 2014.
Twitter: @wagnerbianchijr
Email: wagner.bianchi@mariadb.com
2
MEETUP SÃO PAULO, 2017
AGENDA
▸ Explorando o cenário de trabalho;
▸ Instalando Maxscale 2.0;
▸ Configurando o Maxscale 2.0 para:
▸ Maxscale::ReadWriteSplit;
▸ Maxscale::Schemarouter;
▸ Maxscale::Binlogrouter;
3
MEETUP SÃO PAULO, 2017
EXPLORANDO O CENÁRIO DE TRABALHO
▸ VirtualBox + Vagrant
▸ Pastebin (https://tinyurl.com/nyjyvxk):
$ vagrant status
Current machine states:
box01 running (virtualbox) (MASTER, SSL)
box02 running (virtualbox) (SLAVE, SSL)
box03 running (virtualbox) (SLAVE, SSL)
maxscale running (virtualbox) (SLAVE, SSL)
Vagrantfile: arquivo de configurado do projeto Vagrant (necessário box "centos7.0_x86_64")
MariaDB.repo: repositório YUM MariaDB 10.1 (CentOS 7)
setup_env.sh: script que vai instalar os pacotes, iniciar os serviços e replicação
setup_maxscale.sh: script que fará a instalação do maxscale com configuração básica
server-01.cnf: arquivo de configuração do MariaDB Server no box01
server-01.cnf: arquivo de configuração do MariaDB Server no box02
server-01.cnf: arquivo de configuração do MariaDB Server no box03
maxscale.cnf: arquivo de configurações básicas para o Maxscale
4
MEETUP SÃO PAULO, 2017
SOBRE O MAXSCALE
▸ Maxscale é um Database Proxy;
▸ Vários built-in routers e monitors;
▸ Fácil configuração e monitoramento dos bancos de dados;
▸ Onde possível, deve ser utilizado;
▸ Rápido particionamento de escritas e leituras;
▸ Possibilidades inúmeras;
5
MEETUP SÃO PAULO, 2017
INSTALANDO E INICIAND O MAXSCALE
▸ Faça o download do Maxscale 2.0:
▸ Inicie o Maxscale através do systemd:
▸ Ou se existir um script que você queira apontar:
$ sudo rpm -Uvih 
https://downloads.mariadb.com/MaxScale/2.0.3/rhel/7/x86_64/maxscale-2.0.3-1.rhel.7.x86_64.rpm
$ systemctl status maxscale.service
$ systemctl start maxscale.service
$ systemctl status maxscale.service
$ sudo maxscale —config=/root/maxscale_config/readwritesplit.cnf
MEETUP SÃO PAULO, 2017
INSTALANDO E INICIAND O MAXSCALE
▸ Verifique o arquivo de log:
[root@maxscale ~]# tail -f -n100 /var/log/maxscale/maxscale1.log
MariaDB Corporation MaxScale/var/log/maxscale/maxscale1.log Mon May 8 16:25:00 2017
-----------------------------------------------------------------------
2017-05-08 16:25:00 notice : Working directory: /var/log/maxscale
2017-05-08 16:25:00 notice : MariaDB MaxScale 2.0.3 started
2017-05-08 16:25:00 notice : MaxScale is running in process 4670
2017-05-08 16:25:00 notice : Configuration file: /etc/maxscale.cnf
2017-05-08 16:25:00 notice : Log directory: /var/log/maxscale
2017-05-08 16:25:00 notice : Data directory: /var/lib/maxscale
2017-05-08 16:25:00 notice : Module directory: /usr/lib64/maxscale
2017-05-08 16:25:00 notice : Service cache: /var/cache/maxscale
[…snip…]
2017-05-08 16:25:00 notice : Started MaxScale log flusher.
2017-05-08 16:25:00 notice : Server changed state: box01[192.168.50.11:3306]: new_master. [Running] -> [Master, Running]
2017-05-08 16:25:00 notice : Server changed state: box02[192.168.50.12:3306]: new_slave. [Running] -> [Slave, Running]
2017-05-08 16:25:00 notice : Server changed state: box03[192.168.50.13:3306]: new_slave. [Running] -> [Slave, Running]
2017-05-09 19:57:44.323 notice : A Master Server is now available: 192.168.50.11:3306
MEETUP SÃO PAULO, 2017
REQUISITOS MÍNIMOS MAXSCALE CONFIGS
▸ Os requisitos mínimos para iniciar o Maxscale (arquivo /etc/maxscale.cnf):
▸ Threads
▸ Service
▸ Listener
▸ MySQL Monitor
▸ Maxadmin Configuration
MEETUP SÃO PAULO, 2017
DEFININDO A [MAXSCALE] SECTION
▸ Globalmente, todo arquivo de configuração do Maxscale começa com uma
sessão [maxscale], como abaixo:
▸ threads: # de threads utilizadas pelo Maxscale * (1.4 | 2.0 | 2.1)
▸ auth_connect_timeout: timeout para conexão com backend;
▸ auth_read_timeout: tempo em segundos de timeout para leitura de dados;
▸ ms_timeout: habilita milissegundos nos logs;
[maxscale]
threads=auto
auth_connect_timeout=900000
auth_read_timeout=900000
ms_timestamp=1
MEETUP SÃO PAULO, 2017
MAXKEYS, SENHA DE ACESSO AO BANCO CRIPTOGRAFADA
▸ O client maxkeys é parte da instalação do Maxscale:
▸ Quando iniciar o Maxscale, os logs apontarão:
#: generate keys
[root@maxscale ~]# maxkeys
Generating .secrets file in /var/lib/maxscale.
#: generate the encrypted password to add to the maxscale config file
[root@maxscale ~]# maxpasswd /var/lib/maxscale/ <password do usuário no db>
DF5822F1038A154FEB68E667740B1160
notice : Using encrypted passwords. Encryption key: '/var/lib/maxscale/.secrets'
MEETUP SÃO PAULO, 2017
MAXSCALE CLIENT INTERFACE: MAXADMIN
▸ Configurações para o Maxadmin (arquivo /etc/maxscale.cnf):
[MaxAdmin]
type=service
router=cli
[MaxAdmin Unix Listener]
type=listener
service=MaxAdmin
protocol=maxscaled
socket=default
[MaxAdmin Inet Listener]
type=listener
service=MaxAdmin
protocol=maxscaled
address=localhost
port=6603
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (OVERVIEW)
Data Writes
Reads
Reads
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT
▸ O ReadWriteSplit é um módulo disponível no Maxscale;
▸ Projetado aumentar a escala de leitura, mantendo a consistência dos dados;
▸ Consultas de leitura são enviadas à todos e/ou somente slaves;
▸ Consultas de escrita são enviadas ao master;
▸ Vamos definir o arquivo ~/maxscale_configs/readwritesplit.conf nos próximos
slides;
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (SERVICE)
▸ Configurações para o serviço [readwritesplit_router]:
▸ Aqui temos:
▸ max_slave_lagging=30
▸ max_slave_connections=2
▸ router_options para detectar o slave mais adiantado (evitar ler stall data)
[readwritesplit_router]
type=service
router=readwritesplit
servers=box01,box02,box03
max_slave_replication_lag=30
max_slave_connections=2
router_options=slave_selection_criteria=LEAST_BEHIND_MASTER,master_accept_reads=false
user=maxuser
passwd=B264592E96D87B1175F315D5931A60D2
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (MYSQL MONITOR)
▸ Configurações para o MySQL Monitor [monitor]:
▸ Aqui temos:
▸ detect_replication_lag=true
▸ detect_stale_master=true
▸ events
▸ script
[monitor]
type=monitor
module=mysqlmon
servers=box01,box02,box03
monitor_interval=100
detect_replication_lag=true
detect_stale_master=true
script=/root/maxscale_configs/max_failover_check.wb
events=master_down,slave_down
user=maxmon
passwd=B264592E96D87B1175F315D5931A60D2
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (LISTENER)
▸ Configurações para o listener [readwritesplit_listener] - qual porta connectar?
▸ Aqui temos:
▸ A aplicação se conecta ao endereço -h address -P 53306
▸ A variável address não é mandatório e pode ser omitida (bind to all interfaces)
▸ Suporte nativo à SSL
[readwritesplit_listener]
type=listener
service=readwritesplit_router
protocol=MySQLClient
address=192.168.50.100
port=53306
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (RODANDO)
▸ Após iniciar o maxscale:
▸ Serviços ativos:
[root@maxscale maxscale_configs]# maxadmin list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
box01 | 192.168.50.11 | 3306 | 10 | Master, Running
box02 | 192.168.50.12 | 3306 | 122 | Slave, Running
box03 | 192.168.50.13 | 3306 | 98 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------
[root@maxscale maxscale_configs]# maxadmin list services
Services.
--------------------------+----------------------+--------+---------------
Service Name | Router Module | #Users | Total Sessions
--------------------------+----------------------+--------+---------------
readwritesplit_router | readwritesplit | 43 | 216
MaxAdmin | cli | 3 | 3
--------------------------+----------------------+--------+---------------
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (STATISTICS)
▸ Depois de alguns rounds de sysbench (oltp.lua):
MaxScale> show service "readwritesplit_router"
Service 0x109ba70
Service: readwritesplit_router
Router: readwritesplit (0x7fab5e36c2c0)
State: Started
Number of router sessions: 2822
Current no. of router sessions: 0
Number of queries forwarded: 5644
Number of queries forwarded to master:2815 (49.88%)
Number of queries forwarded to slave: 2829 (50.12%)
Number of queries forwarded to all: 0 (0.00%)
Started: Tue May 9 22:44:15 2017
Root user access: Disabled
Backend databases:
192.168.50.11:3306 Protocol: MySQLBackend
192.168.50.12:3306 Protocol: MySQLBackend
192.168.50.13:3306 Protocol: MySQLBackend
Users data: 0x10b0570
Total connections: 2823
Currently connected: 1657
MEETUP SÃO PAULO, 2017
MAXSCALE::SCHEMAROUTER
accounts_west
accounts_east
accounts_central
MEETUP SÃO PAULO, 2017
MAXSCALE::SCHEMAROUTER
▸ Seguindo o mesmo esquema de configurações, o log nos mostra que:
MariaDB Corporation MaxScale/var/log/maxscale/maxscale1.log Wed May 10 02:03:07 2017
-----------------------------------------------------------------------
2017-05-10 02:03:07 notice : Working directory: /var/log/maxscale
2017-05-10 02:03:07 notice : MariaDB MaxScale 2.0.3 started
2017-05-10 02:03:07 notice : MaxScale is running in process 4289
2017-05-10 02:03:07 notice : Configuration file: /root/maxscale_configs/schemarouter.cnf
2017-05-10 02:03:07 notice : Log directory: /var/log/maxscale
2017-05-10 02:03:07 notice : Data directory: /var/lib/maxscale
2017-05-10 02:03:07 notice : Module directory: /usr/lib64/maxscale
2017-05-10 02:03:07 notice : Service cache: /var/cache/maxscale
2017-05-10 02:03:07 notice : Initializing Schema Sharding Router.
2017-05-10 02:03:07 notice : Loaded module schemarouter: V1.0.0 from /usr/lib64/maxscale/libschemarouter.so
2017-05-10 02:03:07 notice : Initialise the MySQL Monitor module V1.4.0.
2017-05-10 02:03:07 notice : Loaded module mysqlmon: V1.4.0 from /usr/lib64/maxscale/libmysqlmon.so
2017-05-10 02:03:07 notice : No query classifier specified, using default 'qc_sqlite'.
2017-05-10 02:03:07 notice : Loaded module qc_sqlite: V1.0.0 from /usr/lib64/maxscale/libqc_sqlite.so
2017-05-10 02:03:07 notice : Schemarouter: Authentication data is fetched from all servers. To disable this add 'auth_all_servers=0' to the service.
2017-05-10 02:03:07 notice : Loaded 3 MySQL Users for service [Sharded Service].
2017-05-10 02:03:07 notice : Loaded module MySQLClient: V1.1.0 from /usr/lib64/maxscale/libMySQLClient.so
2017-05-10 02:03:07 notice : Listening connections at 0.0.0.0:4000 with protocol MySQL
2017-05-10 02:03:07 notice : MaxScale started with 1 server threads.
2017-05-10 02:03:07 notice : Started MaxScale log flusher.
MEETUP SÃO PAULO, 2017
MAXSCALE::SCHEMAROUTER
▸ Características desse serviço:
▸ Cada MariaDB envolvido precisa ter diferente bancos de dados de usuário;
▸ Caso haja um mesmo banco de dados em mais de um db, problema;
▸ O router determina quais são os bancos e seus hosts ao iniciar o Maxscale;
▸ As consultas são roteadas com base em uma tabela montado onStart;
[root@maxscale maxscale_configs]# maxadmin list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
accounts_east | 192.168.50.14 | 3306 | 16534 | Running
accounts_west | 192.168.50.15 | 3306 | 7590 | Running
-------------------+-----------------+-------+-------------+--------------------
MEETUP SÃO PAULO, 2017
MAXSCALE::BINLOGROUTER
Binary Log Download
Reading Binary Logs
MEETUP SÃO PAULO, 2017
CONCLUSÃO
▸ Database Proxy atualmente é parte básica da topologia de bancos de dados;
▸ É possível adicionar caches de consultas, filtros e muitos outros serviços;
▸ Combinar os módulos só depende da criatividade do administrador de sistemas;
▸ Persistent Connections para sistemas que trabalham com Connection Pooling;
▸ Além de módulos, possui filtros como:
▸ Database Firewall;
▸ Query Cache;
▸ Query Log;
▸ Named Server (regex based routing);
▸ Top Filter (query statistics);
▸ Tee Filter (query mirroring).
MEETUP SÃO PAULO, 2017
ANY … QUESTIONS?
Wagner Bianchi

Weitere ähnliche Inhalte

Was ist angesagt?

Análise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDBAnálise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDBSaveincloud
 
NAT - Windows Server 2003 (Instalação com placas de rede pré-configuradas)
NAT - Windows Server 2003 (Instalação com placas de rede pré-configuradas)NAT - Windows Server 2003 (Instalação com placas de rede pré-configuradas)
NAT - Windows Server 2003 (Instalação com placas de rede pré-configuradas)Ministério Público da Paraíba
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6MySQL Brasil
 
Seguranca em IPv6 com Mikrotik RouterOS
Seguranca em IPv6 com Mikrotik RouterOSSeguranca em IPv6 com Mikrotik RouterOS
Seguranca em IPv6 com Mikrotik RouterOSWardner Maia
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Claudio Miranda
 
Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)elliando dias
 
Usando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL ServerUsando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL Serverleorsilva
 
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2Invent IT Solutions
 
Infnet Infra Day II - Server Core na prática
Infnet Infra Day II - Server Core na práticaInfnet Infra Day II - Server Core na prática
Infnet Infra Day II - Server Core na práticaInvent IT Solutions
 
NGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação webNGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação webernaniaz
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDFrederico Madeira
 
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...Zabbix BR
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - AvançadoAdriano Schmidt
 
Arquiteturas para soluções microsoft na nuvem da aws
Arquiteturas para soluções microsoft na nuvem da awsArquiteturas para soluções microsoft na nuvem da aws
Arquiteturas para soluções microsoft na nuvem da awsAmazon Web Services LATAM
 
Guia exclusivo de referencia-mikrotik (2)
Guia exclusivo de referencia-mikrotik (2)Guia exclusivo de referencia-mikrotik (2)
Guia exclusivo de referencia-mikrotik (2)danieladod
 

Was ist angesagt? (20)

Curso básico de mikrotik
Curso básico de mikrotikCurso básico de mikrotik
Curso básico de mikrotik
 
Mysql Replication
Mysql ReplicationMysql Replication
Mysql Replication
 
Análise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDBAnálise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDB
 
NAT - Windows Server 2003 (Instalação com placas de rede pré-configuradas)
NAT - Windows Server 2003 (Instalação com placas de rede pré-configuradas)NAT - Windows Server 2003 (Instalação com placas de rede pré-configuradas)
NAT - Windows Server 2003 (Instalação com placas de rede pré-configuradas)
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6
 
Seguranca em IPv6 com Mikrotik RouterOS
Seguranca em IPv6 com Mikrotik RouterOSSeguranca em IPv6 com Mikrotik RouterOS
Seguranca em IPv6 com Mikrotik RouterOS
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
 
Guia passoapassodomikrotik
Guia passoapassodomikrotikGuia passoapassodomikrotik
Guia passoapassodomikrotik
 
Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)
 
Usando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL ServerUsando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL Server
 
Performance em Java
Performance em JavaPerformance em Java
Performance em Java
 
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2
 
Infnet Infra Day II - Server Core na prática
Infnet Infra Day II - Server Core na práticaInfnet Infra Day II - Server Core na prática
Infnet Infra Day II - Server Core na prática
 
NGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação webNGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação web
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBD
 
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...
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - Avançado
 
Arquiteturas para soluções microsoft na nuvem da aws
Arquiteturas para soluções microsoft na nuvem da awsArquiteturas para soluções microsoft na nuvem da aws
Arquiteturas para soluções microsoft na nuvem da aws
 
Guia exclusivo de referencia-mikrotik (2)
Guia exclusivo de referencia-mikrotik (2)Guia exclusivo de referencia-mikrotik (2)
Guia exclusivo de referencia-mikrotik (2)
 

Ähnlich wie Meetup São Paulo, Maxscale Implementação e Casos de Uso

Mysql cluster quick start webinar
Mysql cluster quick start webinarMysql cluster quick start webinar
Mysql cluster quick start webinarhenriquesidney
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Felipe Blini
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQLMySQL Brasil
 
Segurança em Plataforma Microsoft
Segurança em Plataforma MicrosoftSegurança em Plataforma Microsoft
Segurança em Plataforma MicrosoftUilson Souza
 
MySQL Profiling com Enterprise Monitor
MySQL Profiling com Enterprise Monitor MySQL Profiling com Enterprise Monitor
MySQL Profiling com Enterprise Monitor MySQL Brasil
 
MySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL Brasil
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppetElton Simões
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL Brasil
 
NetStor DRaaS for Oracle Public Cloud
NetStor DRaaS for Oracle Public CloudNetStor DRaaS for Oracle Public Cloud
NetStor DRaaS for Oracle Public CloudWeligton Pinto
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15MySQL Brasil
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosEduardo Legatti
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de MicroservicesDeep Tech Brasil
 
O que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaSO que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaSLucas A. Romão
 
Alta Disponibilidade
Alta DisponibilidadeAlta Disponibilidade
Alta Disponibilidadeelliando dias
 
SMIT 2012 - Novas Tecnologias - Windows Server 2012
SMIT 2012 -  Novas Tecnologias - Windows Server 2012SMIT 2012 -  Novas Tecnologias - Windows Server 2012
SMIT 2012 - Novas Tecnologias - Windows Server 2012Tharsis Barros
 

Ähnlich wie Meetup São Paulo, Maxscale Implementação e Casos de Uso (20)

Mysql cluster quick start webinar
Mysql cluster quick start webinarMysql cluster quick start webinar
Mysql cluster quick start webinar
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
 
Zabbix
ZabbixZabbix
Zabbix
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQL
 
Segurança em Plataforma Microsoft
Segurança em Plataforma MicrosoftSegurança em Plataforma Microsoft
Segurança em Plataforma Microsoft
 
MySQL Profiling com Enterprise Monitor
MySQL Profiling com Enterprise Monitor MySQL Profiling com Enterprise Monitor
MySQL Profiling com Enterprise Monitor
 
Aula 12 infraestrutura - 24032012
Aula 12   infraestrutura - 24032012Aula 12   infraestrutura - 24032012
Aula 12 infraestrutura - 24032012
 
MySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL em 10min - Alexandre Almeida HTI Tecnologia
MySQL em 10min - Alexandre Almeida HTI Tecnologia
 
Gerenciamento de configuração com puppet
Gerenciamento de configuração com puppetGerenciamento de configuração com puppet
Gerenciamento de configuração com puppet
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
 
Apresentação MySQL Enterprise
Apresentação MySQL EnterpriseApresentação MySQL Enterprise
Apresentação MySQL Enterprise
 
NetStor DRaaS for Oracle Public Cloud
NetStor DRaaS for Oracle Public CloudNetStor DRaaS for Oracle Public Cloud
NetStor DRaaS for Oracle Public Cloud
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15
 
Squid proxy
Squid proxySquid proxy
Squid proxy
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - Nagios
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
 
O que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaSO que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaS
 
Alta Disponibilidade
Alta DisponibilidadeAlta Disponibilidade
Alta Disponibilidade
 
SMIT 2012 - Novas Tecnologias - Windows Server 2012
SMIT 2012 -  Novas Tecnologias - Windows Server 2012SMIT 2012 -  Novas Tecnologias - Windows Server 2012
SMIT 2012 - Novas Tecnologias - Windows Server 2012
 

Mehr von Wagner Bianchi

Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Wagner Bianchi
 
Maxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinWagner Bianchi
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleWagner Bianchi
 
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
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016Wagner Bianchi
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6Wagner Bianchi
 
UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6Wagner Bianchi
 
UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6Wagner Bianchi
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6Wagner Bianchi
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6Wagner Bianchi
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6Wagner Bianchi
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6Wagner Bianchi
 
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)Wagner Bianchi
 
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi
 
Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Wagner Bianchi
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLWagner Bianchi
 
MySQL Cluster Product Overview
MySQL Cluster Product OverviewMySQL Cluster Product Overview
MySQL Cluster Product OverviewWagner Bianchi
 

Mehr von Wagner Bianchi (18)

Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18
 
Maxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoin
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
 
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
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6
 
UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6
 
UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
 
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
 
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
 
Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
 
MySQL Cluster Product Overview
MySQL Cluster Product OverviewMySQL Cluster Product Overview
MySQL Cluster Product Overview
 
MySQL Cluster Basics
MySQL Cluster BasicsMySQL Cluster Basics
MySQL Cluster Basics
 

Meetup São Paulo, Maxscale Implementação e Casos de Uso

  • 1. MAXSCALE 2.0 IMPLEMENTAÇÃO E CASOS DE USO By Wagner Bianchi, Principal Remote DBA @ MariaDB Corporation Email: wagner.bianchi@mariadb.com Twitter: @wagnerbianchijr
  • 2. MEETUP SÃO PAULO, 2017 WAGNER BIANCHI Wagner Bianchi ou somente Bianchi, é atualmente Principal Remote DBA na US/Finlandesa MariaDB Corporation, tendo trabalhado anteriormente em empresas como Percona, Pythian, IBM e Oracle, sempre com operações e entrega de serviços. Bianchi é focado em MariaDB/MySQL/Percona Server, atuando em projetos de alta-disponibilidade, escalabilidade e análise de performance. Além disso, como trabalha em ambiente de operações, tem experiência com soluções de provisionamento, orchestration e monitoramento. Formado em Gerenciamento de Bancos de Dados pela Faculdade Infórium de Tecnologia, com MBA em Administração pela Função Getúlio Vargas e MBA Oracle Database, Bianchi milita na área de sistemas, bancos de dados e operações há mais de 11 anos. Além disso, Bianchi é Oracle Certified Expert (OCE) e Oracle ACE Director desde 2014. Twitter: @wagnerbianchijr Email: wagner.bianchi@mariadb.com 2
  • 3. MEETUP SÃO PAULO, 2017 AGENDA ▸ Explorando o cenário de trabalho; ▸ Instalando Maxscale 2.0; ▸ Configurando o Maxscale 2.0 para: ▸ Maxscale::ReadWriteSplit; ▸ Maxscale::Schemarouter; ▸ Maxscale::Binlogrouter; 3
  • 4. MEETUP SÃO PAULO, 2017 EXPLORANDO O CENÁRIO DE TRABALHO ▸ VirtualBox + Vagrant ▸ Pastebin (https://tinyurl.com/nyjyvxk): $ vagrant status Current machine states: box01 running (virtualbox) (MASTER, SSL) box02 running (virtualbox) (SLAVE, SSL) box03 running (virtualbox) (SLAVE, SSL) maxscale running (virtualbox) (SLAVE, SSL) Vagrantfile: arquivo de configurado do projeto Vagrant (necessário box "centos7.0_x86_64") MariaDB.repo: repositório YUM MariaDB 10.1 (CentOS 7) setup_env.sh: script que vai instalar os pacotes, iniciar os serviços e replicação setup_maxscale.sh: script que fará a instalação do maxscale com configuração básica server-01.cnf: arquivo de configuração do MariaDB Server no box01 server-01.cnf: arquivo de configuração do MariaDB Server no box02 server-01.cnf: arquivo de configuração do MariaDB Server no box03 maxscale.cnf: arquivo de configurações básicas para o Maxscale 4
  • 5. MEETUP SÃO PAULO, 2017 SOBRE O MAXSCALE ▸ Maxscale é um Database Proxy; ▸ Vários built-in routers e monitors; ▸ Fácil configuração e monitoramento dos bancos de dados; ▸ Onde possível, deve ser utilizado; ▸ Rápido particionamento de escritas e leituras; ▸ Possibilidades inúmeras; 5
  • 6. MEETUP SÃO PAULO, 2017 INSTALANDO E INICIAND O MAXSCALE ▸ Faça o download do Maxscale 2.0: ▸ Inicie o Maxscale através do systemd: ▸ Ou se existir um script que você queira apontar: $ sudo rpm -Uvih https://downloads.mariadb.com/MaxScale/2.0.3/rhel/7/x86_64/maxscale-2.0.3-1.rhel.7.x86_64.rpm $ systemctl status maxscale.service $ systemctl start maxscale.service $ systemctl status maxscale.service $ sudo maxscale —config=/root/maxscale_config/readwritesplit.cnf
  • 7. MEETUP SÃO PAULO, 2017 INSTALANDO E INICIAND O MAXSCALE ▸ Verifique o arquivo de log: [root@maxscale ~]# tail -f -n100 /var/log/maxscale/maxscale1.log MariaDB Corporation MaxScale/var/log/maxscale/maxscale1.log Mon May 8 16:25:00 2017 ----------------------------------------------------------------------- 2017-05-08 16:25:00 notice : Working directory: /var/log/maxscale 2017-05-08 16:25:00 notice : MariaDB MaxScale 2.0.3 started 2017-05-08 16:25:00 notice : MaxScale is running in process 4670 2017-05-08 16:25:00 notice : Configuration file: /etc/maxscale.cnf 2017-05-08 16:25:00 notice : Log directory: /var/log/maxscale 2017-05-08 16:25:00 notice : Data directory: /var/lib/maxscale 2017-05-08 16:25:00 notice : Module directory: /usr/lib64/maxscale 2017-05-08 16:25:00 notice : Service cache: /var/cache/maxscale […snip…] 2017-05-08 16:25:00 notice : Started MaxScale log flusher. 2017-05-08 16:25:00 notice : Server changed state: box01[192.168.50.11:3306]: new_master. [Running] -> [Master, Running] 2017-05-08 16:25:00 notice : Server changed state: box02[192.168.50.12:3306]: new_slave. [Running] -> [Slave, Running] 2017-05-08 16:25:00 notice : Server changed state: box03[192.168.50.13:3306]: new_slave. [Running] -> [Slave, Running] 2017-05-09 19:57:44.323 notice : A Master Server is now available: 192.168.50.11:3306
  • 8. MEETUP SÃO PAULO, 2017 REQUISITOS MÍNIMOS MAXSCALE CONFIGS ▸ Os requisitos mínimos para iniciar o Maxscale (arquivo /etc/maxscale.cnf): ▸ Threads ▸ Service ▸ Listener ▸ MySQL Monitor ▸ Maxadmin Configuration
  • 9. MEETUP SÃO PAULO, 2017 DEFININDO A [MAXSCALE] SECTION ▸ Globalmente, todo arquivo de configuração do Maxscale começa com uma sessão [maxscale], como abaixo: ▸ threads: # de threads utilizadas pelo Maxscale * (1.4 | 2.0 | 2.1) ▸ auth_connect_timeout: timeout para conexão com backend; ▸ auth_read_timeout: tempo em segundos de timeout para leitura de dados; ▸ ms_timeout: habilita milissegundos nos logs; [maxscale] threads=auto auth_connect_timeout=900000 auth_read_timeout=900000 ms_timestamp=1
  • 10. MEETUP SÃO PAULO, 2017 MAXKEYS, SENHA DE ACESSO AO BANCO CRIPTOGRAFADA ▸ O client maxkeys é parte da instalação do Maxscale: ▸ Quando iniciar o Maxscale, os logs apontarão: #: generate keys [root@maxscale ~]# maxkeys Generating .secrets file in /var/lib/maxscale. #: generate the encrypted password to add to the maxscale config file [root@maxscale ~]# maxpasswd /var/lib/maxscale/ <password do usuário no db> DF5822F1038A154FEB68E667740B1160 notice : Using encrypted passwords. Encryption key: '/var/lib/maxscale/.secrets'
  • 11. MEETUP SÃO PAULO, 2017 MAXSCALE CLIENT INTERFACE: MAXADMIN ▸ Configurações para o Maxadmin (arquivo /etc/maxscale.cnf): [MaxAdmin] type=service router=cli [MaxAdmin Unix Listener] type=listener service=MaxAdmin protocol=maxscaled socket=default [MaxAdmin Inet Listener] type=listener service=MaxAdmin protocol=maxscaled address=localhost port=6603
  • 12. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (OVERVIEW) Data Writes Reads Reads
  • 13. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT ▸ O ReadWriteSplit é um módulo disponível no Maxscale; ▸ Projetado aumentar a escala de leitura, mantendo a consistência dos dados; ▸ Consultas de leitura são enviadas à todos e/ou somente slaves; ▸ Consultas de escrita são enviadas ao master; ▸ Vamos definir o arquivo ~/maxscale_configs/readwritesplit.conf nos próximos slides;
  • 14. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (SERVICE) ▸ Configurações para o serviço [readwritesplit_router]: ▸ Aqui temos: ▸ max_slave_lagging=30 ▸ max_slave_connections=2 ▸ router_options para detectar o slave mais adiantado (evitar ler stall data) [readwritesplit_router] type=service router=readwritesplit servers=box01,box02,box03 max_slave_replication_lag=30 max_slave_connections=2 router_options=slave_selection_criteria=LEAST_BEHIND_MASTER,master_accept_reads=false user=maxuser passwd=B264592E96D87B1175F315D5931A60D2
  • 15. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (MYSQL MONITOR) ▸ Configurações para o MySQL Monitor [monitor]: ▸ Aqui temos: ▸ detect_replication_lag=true ▸ detect_stale_master=true ▸ events ▸ script [monitor] type=monitor module=mysqlmon servers=box01,box02,box03 monitor_interval=100 detect_replication_lag=true detect_stale_master=true script=/root/maxscale_configs/max_failover_check.wb events=master_down,slave_down user=maxmon passwd=B264592E96D87B1175F315D5931A60D2
  • 16. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (LISTENER) ▸ Configurações para o listener [readwritesplit_listener] - qual porta connectar? ▸ Aqui temos: ▸ A aplicação se conecta ao endereço -h address -P 53306 ▸ A variável address não é mandatório e pode ser omitida (bind to all interfaces) ▸ Suporte nativo à SSL [readwritesplit_listener] type=listener service=readwritesplit_router protocol=MySQLClient address=192.168.50.100 port=53306
  • 17. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (RODANDO) ▸ Após iniciar o maxscale: ▸ Serviços ativos: [root@maxscale maxscale_configs]# maxadmin list servers Servers. -------------------+-----------------+-------+-------------+-------------------- Server | Address | Port | Connections | Status -------------------+-----------------+-------+-------------+-------------------- box01 | 192.168.50.11 | 3306 | 10 | Master, Running box02 | 192.168.50.12 | 3306 | 122 | Slave, Running box03 | 192.168.50.13 | 3306 | 98 | Slave, Running -------------------+-----------------+-------+-------------+-------------------- [root@maxscale maxscale_configs]# maxadmin list services Services. --------------------------+----------------------+--------+--------------- Service Name | Router Module | #Users | Total Sessions --------------------------+----------------------+--------+--------------- readwritesplit_router | readwritesplit | 43 | 216 MaxAdmin | cli | 3 | 3 --------------------------+----------------------+--------+---------------
  • 18. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (STATISTICS) ▸ Depois de alguns rounds de sysbench (oltp.lua): MaxScale> show service "readwritesplit_router" Service 0x109ba70 Service: readwritesplit_router Router: readwritesplit (0x7fab5e36c2c0) State: Started Number of router sessions: 2822 Current no. of router sessions: 0 Number of queries forwarded: 5644 Number of queries forwarded to master:2815 (49.88%) Number of queries forwarded to slave: 2829 (50.12%) Number of queries forwarded to all: 0 (0.00%) Started: Tue May 9 22:44:15 2017 Root user access: Disabled Backend databases: 192.168.50.11:3306 Protocol: MySQLBackend 192.168.50.12:3306 Protocol: MySQLBackend 192.168.50.13:3306 Protocol: MySQLBackend Users data: 0x10b0570 Total connections: 2823 Currently connected: 1657
  • 19. MEETUP SÃO PAULO, 2017 MAXSCALE::SCHEMAROUTER accounts_west accounts_east accounts_central
  • 20. MEETUP SÃO PAULO, 2017 MAXSCALE::SCHEMAROUTER ▸ Seguindo o mesmo esquema de configurações, o log nos mostra que: MariaDB Corporation MaxScale/var/log/maxscale/maxscale1.log Wed May 10 02:03:07 2017 ----------------------------------------------------------------------- 2017-05-10 02:03:07 notice : Working directory: /var/log/maxscale 2017-05-10 02:03:07 notice : MariaDB MaxScale 2.0.3 started 2017-05-10 02:03:07 notice : MaxScale is running in process 4289 2017-05-10 02:03:07 notice : Configuration file: /root/maxscale_configs/schemarouter.cnf 2017-05-10 02:03:07 notice : Log directory: /var/log/maxscale 2017-05-10 02:03:07 notice : Data directory: /var/lib/maxscale 2017-05-10 02:03:07 notice : Module directory: /usr/lib64/maxscale 2017-05-10 02:03:07 notice : Service cache: /var/cache/maxscale 2017-05-10 02:03:07 notice : Initializing Schema Sharding Router. 2017-05-10 02:03:07 notice : Loaded module schemarouter: V1.0.0 from /usr/lib64/maxscale/libschemarouter.so 2017-05-10 02:03:07 notice : Initialise the MySQL Monitor module V1.4.0. 2017-05-10 02:03:07 notice : Loaded module mysqlmon: V1.4.0 from /usr/lib64/maxscale/libmysqlmon.so 2017-05-10 02:03:07 notice : No query classifier specified, using default 'qc_sqlite'. 2017-05-10 02:03:07 notice : Loaded module qc_sqlite: V1.0.0 from /usr/lib64/maxscale/libqc_sqlite.so 2017-05-10 02:03:07 notice : Schemarouter: Authentication data is fetched from all servers. To disable this add 'auth_all_servers=0' to the service. 2017-05-10 02:03:07 notice : Loaded 3 MySQL Users for service [Sharded Service]. 2017-05-10 02:03:07 notice : Loaded module MySQLClient: V1.1.0 from /usr/lib64/maxscale/libMySQLClient.so 2017-05-10 02:03:07 notice : Listening connections at 0.0.0.0:4000 with protocol MySQL 2017-05-10 02:03:07 notice : MaxScale started with 1 server threads. 2017-05-10 02:03:07 notice : Started MaxScale log flusher.
  • 21. MEETUP SÃO PAULO, 2017 MAXSCALE::SCHEMAROUTER ▸ Características desse serviço: ▸ Cada MariaDB envolvido precisa ter diferente bancos de dados de usuário; ▸ Caso haja um mesmo banco de dados em mais de um db, problema; ▸ O router determina quais são os bancos e seus hosts ao iniciar o Maxscale; ▸ As consultas são roteadas com base em uma tabela montado onStart; [root@maxscale maxscale_configs]# maxadmin list servers Servers. -------------------+-----------------+-------+-------------+-------------------- Server | Address | Port | Connections | Status -------------------+-----------------+-------+-------------+-------------------- accounts_east | 192.168.50.14 | 3306 | 16534 | Running accounts_west | 192.168.50.15 | 3306 | 7590 | Running -------------------+-----------------+-------+-------------+--------------------
  • 22. MEETUP SÃO PAULO, 2017 MAXSCALE::BINLOGROUTER Binary Log Download Reading Binary Logs
  • 23. MEETUP SÃO PAULO, 2017 CONCLUSÃO ▸ Database Proxy atualmente é parte básica da topologia de bancos de dados; ▸ É possível adicionar caches de consultas, filtros e muitos outros serviços; ▸ Combinar os módulos só depende da criatividade do administrador de sistemas; ▸ Persistent Connections para sistemas que trabalham com Connection Pooling; ▸ Além de módulos, possui filtros como: ▸ Database Firewall; ▸ Query Cache; ▸ Query Log; ▸ Named Server (regex based routing); ▸ Top Filter (query statistics); ▸ Tee Filter (query mirroring).
  • 24. MEETUP SÃO PAULO, 2017 ANY … QUESTIONS? Wagner Bianchi