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

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

  • 1.
    MAXSCALE 2.0 IMPLEMENTAÇÃO ECASOS 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