Escalando o ambiente com MariaDB Cluster (Portuguese Edition)

Wagner Bianchi
Wagner BianchiPrincipal RDBA, DBOps, Project, Process & Services Addicted, Oracle ACE Diretor at MariaDB Corporation
Escalando o Ambiente com
MariaDB Cluster
By Wagner Bianchi - Principal RDBA
wagner.bianchi@mariadb.com
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Apresentação Pessoal
Wagner Bianchi ou somente Bianchi, como gosta de ser chamado é 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
Blog: wagnerbianchi.com
Agenda
• Escalabilidade em bancos de dados relacionais:
• Escalabilidade Vertical x Escalabilidade Horizontal;
• Failover e Business Continuity;
• Soluções de Clusterização de Bancos de Dados MariaDB/MySQL:
• Replicação Assíncrona, Semi-Síncrona, Virtualmente Síncrona e Síncrona;
• MariaDB Cluster, o que é, write-sets e transações;
• Escalando o ambiente com MariaDB Cluster e Inteligente Load Balancers:
• MariaDB Cluster + MaxScale;
• Demo Time
O que fará com que o seu cluster
não tenha a escala esperada?
Scalability
Sharding
Capacity
Performance
Throughput
Response Time
Escalabilidade em bancos de dados relacionais
Escalabilidade em Bancos de Dados
• Escalabilidade por ser vista de várias formas, vários ângulos:
• e.g. bancos de dados relacionais:
• crescimento no número de transações suportado;
• crescimento no espaço disponível para acomodar dados;
• melhor infraestrutura para acessar os servidores de bancos de dados;
• e.g. empresas de ecommerce:
• Campanhas sazonais;
• Crescimento vertiginoso enquanto mudanças ocorrem;
• Oportunidade de negócio/mais negócios/expansão;
Scalability is the capability of a system, network, or process to handle a growing amount of work,
or its potential to be enlarged to accommodate that growth.
Wikipedia, https://en.wikipedia.org/wiki/Scalability
Escalabilidade Vertical
• Geralmente a escalabilidade vertical aparece:
• Onde se necessita cada vez mais hardware para execução de soluções;
• Servidores de armazenamento de dados que tem forte dependência de hardware;
• Adicionar um sistema melhor de discos baseados em tecnologia flash ou RAID;
• mais hardware para se processar mais;
• Segundo a IBM:
Vertical scaling can essentially resize your server with no change to your code. It is the ability
to increase the capacity of existing hardware or software by adding resources. Vertical scaling
is limited by the fact that you can only get as big as the size of the server.
IBM, https://www.ibm.com/blogs/cloud-computing/2014/04/explain-vertical-horizontal-scaling-cloud/
Escalabilidade Horizontal
• Crescer um banco de dados horizontalmente significa:
• contar com servidores de pequeno porte e baratos, tidos como commodity hardware;
• agrupar tais servidores para se dividir o workload e diminuir o footprint (e.g. leituras e escritas);
• cluster, sharding, particionamento, e etc;
• Uma definição interessante:
Horizontal scaling affords the ability to scale wider to deal with traffic. It is the ability to connect
multiple hardware or software entities, such as servers, so that they work as a single logical unit.
IBM, https://www.ibm.com/blogs/cloud-computing/2014/04/explain-vertical-horizontal-scaling-cloud/
Failover e Business Continuity
• Em tecnologia de replicação/clusterização:
• Um processo rápido e prático de failover precisa estar presente;
• Tal processo pode ser automaticamente disparado ou manualmente invocado;
• Se invocado manualmente, a consistência dos dados precisa ser verificada;
• Se automaticamente, o sistema deverá não operar de maneira inconsistente (Galera Cluster);
• Boas práticas:
• Utilize um load balancer capaz de fazer a divisão lógica entre leituras e escritas;
• No caso de necessidade de failover, o load balancer precisa realizar esse processo;
• MaxScale + Galera Monitor
• HAProxy
Soluções de Clusterização de Bancos de Dados
MariaDB/MySQL
Clusterização de Bancos de Dados
• Existem várias soluções, com implementações de diferentes protocolos:
• Replicação Assíncrona;
• Replicação Semi-síncrona;
• Replicação Síncrona;
• Replicação Virtualmente Síncrona;
• Replicação em Nível de Bloco de Disco;
• Muitas das vezes a replicação é implementada com os conceitos de:
• MASTER e SLAVE;
• PRIMÁRIO e SECUNDÁRIO;
• Resources;
São muitas as soluções,
você precisa escolher aquela que melhor se
adequa ao seu projeto!
MHA
PRM
MRM
Galera Cluster
MySQL Cluster
DRBD
MariaDB Cluster
MariaDB Cluster
• O MariaDB Cluster é:
• Uma solução multi-master de replicação virtualmente síncrona;
• Disponível somente em plataforma Linux;
• Tamanho mínimo de um cluster, 3 máquinas;
• Todas as tabelas dos bancos de dados de usuário devem ser InnoDB/XtraDB;
• e todas com PRIMARY KEY explicitamente definidas;
• Tem suporte a leituras e escritas em todos os nós, embora não seja recomendado;
• escreva em um nó por vez e leia de todos;
• Cada transação é tida como um Write-Set
• Cada Write-Set tem um COMMIT local e outro nos demais nós do cluster (processo de certificação)
• Em WAN, trabalha com segmentos, onde cada nós ou conjunto de nós podem estar em locais diferentes;
MariaDB Cluster, processo de certificação
:: Certification based-replication
Uma transação é iniciada;
A transação recebe um OK e COMMIT;
A transação é enviada aos demais nós;
O processo de certificação inicia;
Se OK, COMMIT
Senão, discard (certification failure)
:: Premissas
O primeiro foco da solução é manter
os nós em um estado consistente;
A re-sincronia é automática, daí o
falarmos que o cluster é a prova de
Partitions;
MariaDB Cluster, flow control
• O Flow Control é ativado sempre que o cluster recebe mais transações do que suporta;
• Geralmente, algum dos jobs abaixo são executados:
• pt-online-schema-change é executado para alteração de uma tabela grande;
• pt-table-checksum/table-sync devem ser executados com muito cuidado;
• LOAD DATA INFILE;
• FLUSH TABLES WITH READ LOCK, geralmente utilizado por backups;
• Existem configurações do Galera API Provider:
• gcs.fc_limit: nomero de transações recebidos por um nó antes de iniciar o Flow Control
• gcs.fc_master_slave: interessate YES para clusters que tem um no de escrita e vários de leitura
• gcs.fc_factor: número fractional que é a base de cálculo para ativação do Flow Control
MariaDB Cluster, DDL/Schame Upgrade
• Built-in Métodos configurados na variável wsrep_OSU_method:
• TOI, quando alterações são realizadas com pt-online-schema-change;
MariaDB Cluster, DDL/Schame Upgrade
• Built-in Métodos configurados na variável wsrep_OSU_method:
• RSU, quando alterações são feitas com ALTER TABLE;
• Configurar um nó do cluster com SET GLOBAL wsrep_OSU_method=‘RSU’ é o mesmo que:
• set global wsrep_desync=on;
• set global wsrep_on=off;
Escalando o ambiente com
MariaDB Cluster e MaxScale
MaxScale
MaxScale 2.0, routers
• O MaxScale é um Database Proxy, com inteligência em forma de routers;
• Tais módulos ou routers estão disponíveis após a sua instalação;
• ReadConnRoute: esse router é um simples load balancer que roteia transações para os servidores;
• ReadWriteSplit: router que faz a divisão de leituras e escritas entre MASTER e SLAVEs;
• BinlogRouter: faz o papel de um MASTER intermediário, servidor de log binário;
• SchemaRouter: faz o roteamento das transações de acordo com os bancos de dados (sharding);
• AvroRouter: consome logs binários e exporta os dados para Avro files (JSON);
• Ao ser iniciado, MaxScale precisa de um arquivo de configuração:
• por padrão localizado em /etc/maxscale.cnf ou -f file.ext;
• requisito mínimo para iniciar o serviço: service, listener, monitor e configs de cliente (maxadmin)
MaxScale 2.0, monitors
• O MaxScale tem ainda vários monitores que trabalham juntamente com os routers;
• Tais módulos estão disponíveis após a sua instalação;
• MySQL Monitor:
• Multi-Master Monitor:
• NDB Cluster Monitor:
• Galera Monitor: monitora o status atual de cada um dos nós do cluster, simula MASTER/SLAVE;
[Galera Monitor]
type=monitor
module=galeramon
servers=server1,server2,server3
user=myuser
passwd=236B2854ECA2CDF9C4EF929F8CC48369
MaxScale, Maxadmin (client)
• Listando os servidores/nós do cluster:
• Listando os monitores ativos:
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------------
wbwsrep01 | 192.168.50.11 | 3306 | 0 | Master, Synced, Running
wbwsrep02 | 192.168.50.12 | 3306 | 0 | Slave, Synced, Running
wbwsrep03 | 192.168.50.13 | 3306 | 0 | Slave, Synced, Running
-------------------+-----------------+-------+-------------+--------------------------
MaxScale> list monitors
---------------------+---------------------
Monitor | Status
---------------------+---------------------
Galera Monitor | Running
---------------------+---------------------
MaxScale 2.0, Galera Monitor
• Galera Monitor features:
• marcar um antigo master após um crash, disable_master_failback=true;
• cada servidor pode ter uma prioridade, use_priority=true
• no caso de wsrep_sst_method=mariabackup/xtrabackup-v2, available_when_donor=true
mantém o status do nó como Synced, invés de DONOR/DESYNCED;
• É bom lembrar:
• SST, ou Snapshot State Transfer é realizado quando um nó é adicionado ao cluster e precisa do todo
o state de dados;
• IST, ou Incremental State Transfer é realizado quando o nó tem pequenas paradas no serviço do
MariaDB e quando volta, todas as transações ainda não executadas são encontradas no Cache do
Donor;
[root@maxscale ~]# maxadmin -e "list servers"
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
wbwsrep01 | 192.168.50.11 | 3306 | 654 | Master, Synced, Running
wbwsrep02 | 192.168.50.12 | 3306 | 76 | Slave, Synced, Running
wbwsrep03 | 192.168.50.13 | 3306 | 89 | Slave, Synced, Running
-------------------+-----------------+-------+-------------+--------------------
[root@maxscale ~]# vim /etc/maxscale.cnf # edited priorities
[root@maxscale ~]# systemctl restart maxscale
[root@maxscale ~]# maxadmin -e "list servers"
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
wbwsrep01 | 192.168.50.11 | 3306 | 78 | Slave, Synced, Running
wbwsrep02 | 192.168.50.12 | 3306 | 3 | Slave, Synced, Running
wbwsrep03 | 192.168.50.13 | 3306 | 12 | Master, Synced, Running
-------------------+-----------------+-------+-------------+--------------------
MaxScale 2.0, Galera Monitor
MaxScale 2.0, Galera Monitor
• Adicionando novos nós no cluster e reloading MaxScale:
• Provisione o novo nó com as configurações necessárias;
• Inicie o novo nó e tenha certeza de que esteja como PRIMARY Component e em Synced status;
• No arquivo de configuração do MaxScale 2.0:
• Adicione o novo servidor à seção correta [servername]
• Assegure que o servidor tenha sido adicionado à seção do Galera Monitor
• Utilize o maxadmin para fazer o reload das configurações:
#: tailing the log file after configurations and restart
Server changed state: wbwsrep01[192.168.50.11:3306]: new_slave. [Running] -> [Slave, Synced, Running]
Server changed state: wbwsrep02[192.168.50.12:3306]: new_slave. [Running] -> [Slave, Synced, Running]
Server changed state: wbwsrep03[192.168.50.13:3306]: new_master. [Running] -> [Master, Synced, Running]
Server changed state: wbwsrep04[192.168.50.14:3306]: new_slave. [Running] -> [Slave, Synced, Running]
DEMO TIME!
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
1 of 30

Recommended

Meetup São Paulo, Maxscale Implementação e Casos de Uso by
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoWagner Bianchi
662 views24 slides
Replicação e alta disponibilidade by wagner bianchi - by
Replicação e alta disponibilidade by wagner bianchi -Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -MySQL Brasil
1.3K views31 slides
MySQL 5.7 Multi-Source Replication by
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationWagner Bianchi
1.2K views31 slides
UNIFAL - MySQL 5.6 - Replicação by
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoWagner Bianchi
1.2K views20 slides
GDB e Análise de Bugs by
GDB e Análise de BugsGDB e Análise de Bugs
GDB e Análise de BugsMarcelo Altmann
154 views22 slides
Servidor Próprio - Configuração do CWP Panel by
Servidor Próprio - Configuração do CWP PanelServidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP PanelSaveincloud
288 views33 slides

More Related Content

What's hot

Backup para MySQL by
Backup para MySQLBackup para MySQL
Backup para MySQLMarcelo Altmann
142 views38 slides
Manual Kikrotik Completo by
Manual Kikrotik CompletoManual Kikrotik Completo
Manual Kikrotik CompletoPortal GSTI
70.2K views113 slides
Curso básico de mikrotik by
Curso básico de mikrotikCurso básico de mikrotik
Curso básico de mikrotikVideo Aulas Linux e Mikrotik
1.7K views4 slides
Performance em Java by
Performance em JavaPerformance em Java
Performance em JavaClaudio Miranda
3.9K views83 slides
Mysql Replication by
Mysql ReplicationMysql Replication
Mysql ReplicationAndré Herculano
551 views13 slides
NAT - Windows Server 2003 (Instalação com placas de rede pré-configuradas) by
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
5.2K views23 slides

What's hot(20)

Manual Kikrotik Completo by Portal GSTI
Manual Kikrotik CompletoManual Kikrotik Completo
Manual Kikrotik Completo
Portal GSTI70.2K views
Mais performance com o MySQL 5.6 by MySQL Brasil
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6
MySQL Brasil5.9K views
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par... by Zabbix BR
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 BR3.1K views
Seguranca em IPv6 com Mikrotik RouterOS by Wardner Maia
Seguranca em IPv6 com Mikrotik RouterOSSeguranca em IPv6 com Mikrotik RouterOS
Seguranca em IPv6 com Mikrotik RouterOS
Wardner Maia2.4K views
Usando Hyper-v 2012 para virtualização do SQL Server by leorsilva
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
leorsilva1.4K views
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior by Zabbix BR
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorDeploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Zabbix BR3.9K views
Ciclo de Palestras Infnet 2014 - Migrando o dc para Windows Server 2012 R2 by Invent IT Solutions
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
Invent IT Solutions3.1K views
Performance e disponibilidade ‐ Um estudo de caso: website dos Correios by Alex Hübner
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosPerformance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos Correios
Alex Hübner707 views
Infnet Infra Day II - Server Core na prática by Invent IT Solutions
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
Invent IT Solutions2.5K views
Linux Servidor Proxy(squid) by elliando dias
Linux Servidor Proxy(squid)Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)
elliando dias5.4K views
Alta Disponibilidade utilizando Pacemaker e DRBD by Frederico Madeira
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBD
Frederico Madeira3.2K views

Similar to Escalando o ambiente com MariaDB Cluster (Portuguese Edition)

Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0 by
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
292 views43 slides
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0 by
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
799 views43 slides
Aws sao paulo summit 2015 elasti cache avancado by
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancadoAmazon Web Services LATAM
1K views56 slides
Otimizacao de websites em PHP by
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
2.3K views80 slides
19-Sistemas Distribuidos.pptx by
19-Sistemas Distribuidos.pptx19-Sistemas Distribuidos.pptx
19-Sistemas Distribuidos.pptxRoberto Aragy
8 views18 slides
Mysql for IBMers by
Mysql for IBMersMysql for IBMers
Mysql for IBMersWagner Bianchi
3.6K views157 slides

Similar to Escalando o ambiente com MariaDB Cluster (Portuguese Edition)(20)

Otimizacao de websites em PHP by Felipe Ribeiro
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
Felipe Ribeiro2.3K views
Há quanto tempo você não revisa seu ambiente de virtualização de servidores V... by Bravo Tecnologia
Há quanto tempo você não revisa seu ambiente de virtualização de servidores V...Há quanto tempo você não revisa seu ambiente de virtualização de servidores V...
Há quanto tempo você não revisa seu ambiente de virtualização de servidores V...
Bravo Tecnologia552 views
Desenvolvendo serviços escaláveis e de alta performance com MySQL by MySQL Brasil
Desenvolvendo serviços escaláveis e de alta performance com MySQLDesenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQL
MySQL Brasil1.1K views
Novidades do Universo MySQL Agosto 2014 by MySQL Brasil
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
MySQL Brasil1.1K views
Zabbix FLISOL Campinas 28-04-2012 by André Déo
Zabbix FLISOL Campinas 28-04-2012Zabbix FLISOL Campinas 28-04-2012
Zabbix FLISOL Campinas 28-04-2012
André Déo21.3K views
Azure SQL DataWarehouse by Vitor Fava
Azure SQL DataWarehouseAzure SQL DataWarehouse
Azure SQL DataWarehouse
Vitor Fava1.3K views
Scale out database apps através de galera cluster e maria db by Francisco Gonçalves
Scale out database apps através de galera cluster e maria dbScale out database apps através de galera cluster e maria db
Scale out database apps através de galera cluster e maria db
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure by Fabrício Lopes Sanchez
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
Web Seminário sobre Varnish+Nginx+Apache by Dell Technologies
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
Dell Technologies2.1K views
Alta-disponibilidade com MySQL by MySQL Brasil
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQL
MySQL Brasil1.6K views

More from Wagner Bianchi

Migrations from PLSQL and Transact-SQL - m18 by
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Wagner Bianchi
479 views36 slides
Maxscale switchover, failover, and auto rejoin by
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinWagner Bianchi
1.6K views21 slides
NY Meetup: Scaling MariaDB with Maxscale by
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleWagner Bianchi
1.3K views36 slides
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication by
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
806 views30 slides
MySQL Multi-Source Replication for PL2016 by
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016Wagner Bianchi
1.4K views43 slides
UNIFAL - MySQL Logs - 5.0/5.6 by
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6Wagner Bianchi
1.3K views15 slides

More from Wagner Bianchi(18)

Migrations from PLSQL and Transact-SQL - m18 by Wagner Bianchi
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18
Wagner Bianchi479 views
Maxscale switchover, failover, and auto rejoin by Wagner Bianchi
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoin
Wagner Bianchi1.6K views
NY Meetup: Scaling MariaDB with Maxscale by Wagner Bianchi
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
Wagner Bianchi1.3K views
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication by Wagner Bianchi
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
Wagner Bianchi806 views
MySQL Multi-Source Replication for PL2016 by Wagner Bianchi
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
Wagner Bianchi1.4K views
UNIFAL - MySQL Logs - 5.0/5.6 by Wagner Bianchi
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6
Wagner Bianchi1.3K views
UNIFAL - MySQL Transações - 5.0/5.6 by Wagner Bianchi
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6
Wagner Bianchi3.3K views
UNIFAL - MySQL Storage Engine - 5.0/5.6 by Wagner Bianchi
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6
Wagner Bianchi3.4K views
UNIFAL - MySQL Views - 5.0/5.6 by Wagner Bianchi
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6
Wagner Bianchi446 views
UNIFAL - MySQL Triggers - 5.0/5.6 by Wagner Bianchi
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
Wagner Bianchi768 views
UNIFAL - MySQL Stored Routines - 5.0/5.6 by Wagner Bianchi
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
Wagner Bianchi759 views
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6 by Wagner Bianchi
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
Wagner Bianchi1K views
UNIFAL - MySQL & Vagrant (iniciando os trabalhos) by Wagner Bianchi
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
Wagner Bianchi486 views
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3 by Wagner Bianchi
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi1.4K views
Introdução ao MySQL 5.6 by Wagner Bianchi
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6
Wagner Bianchi3.8K views
InnoDB Plugin - II Fórum da Comunidade MySQL by Wagner Bianchi
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
Wagner Bianchi1.4K views
MySQL Cluster Product Overview by Wagner Bianchi
MySQL Cluster Product OverviewMySQL Cluster Product Overview
MySQL Cluster Product Overview
Wagner Bianchi1.4K views

Escalando o ambiente com MariaDB Cluster (Portuguese Edition)

  • 1. Escalando o Ambiente com MariaDB Cluster By Wagner Bianchi - Principal RDBA wagner.bianchi@mariadb.com
  • 3. Apresentação Pessoal Wagner Bianchi ou somente Bianchi, como gosta de ser chamado é 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 Blog: wagnerbianchi.com
  • 4. Agenda • Escalabilidade em bancos de dados relacionais: • Escalabilidade Vertical x Escalabilidade Horizontal; • Failover e Business Continuity; • Soluções de Clusterização de Bancos de Dados MariaDB/MySQL: • Replicação Assíncrona, Semi-Síncrona, Virtualmente Síncrona e Síncrona; • MariaDB Cluster, o que é, write-sets e transações; • Escalando o ambiente com MariaDB Cluster e Inteligente Load Balancers: • MariaDB Cluster + MaxScale; • Demo Time
  • 5. O que fará com que o seu cluster não tenha a escala esperada? Scalability Sharding Capacity Performance Throughput Response Time
  • 6. Escalabilidade em bancos de dados relacionais
  • 7. Escalabilidade em Bancos de Dados • Escalabilidade por ser vista de várias formas, vários ângulos: • e.g. bancos de dados relacionais: • crescimento no número de transações suportado; • crescimento no espaço disponível para acomodar dados; • melhor infraestrutura para acessar os servidores de bancos de dados; • e.g. empresas de ecommerce: • Campanhas sazonais; • Crescimento vertiginoso enquanto mudanças ocorrem; • Oportunidade de negócio/mais negócios/expansão; Scalability is the capability of a system, network, or process to handle a growing amount of work, or its potential to be enlarged to accommodate that growth. Wikipedia, https://en.wikipedia.org/wiki/Scalability
  • 8. Escalabilidade Vertical • Geralmente a escalabilidade vertical aparece: • Onde se necessita cada vez mais hardware para execução de soluções; • Servidores de armazenamento de dados que tem forte dependência de hardware; • Adicionar um sistema melhor de discos baseados em tecnologia flash ou RAID; • mais hardware para se processar mais; • Segundo a IBM: Vertical scaling can essentially resize your server with no change to your code. It is the ability to increase the capacity of existing hardware or software by adding resources. Vertical scaling is limited by the fact that you can only get as big as the size of the server. IBM, https://www.ibm.com/blogs/cloud-computing/2014/04/explain-vertical-horizontal-scaling-cloud/
  • 9. Escalabilidade Horizontal • Crescer um banco de dados horizontalmente significa: • contar com servidores de pequeno porte e baratos, tidos como commodity hardware; • agrupar tais servidores para se dividir o workload e diminuir o footprint (e.g. leituras e escritas); • cluster, sharding, particionamento, e etc; • Uma definição interessante: Horizontal scaling affords the ability to scale wider to deal with traffic. It is the ability to connect multiple hardware or software entities, such as servers, so that they work as a single logical unit. IBM, https://www.ibm.com/blogs/cloud-computing/2014/04/explain-vertical-horizontal-scaling-cloud/
  • 10. Failover e Business Continuity • Em tecnologia de replicação/clusterização: • Um processo rápido e prático de failover precisa estar presente; • Tal processo pode ser automaticamente disparado ou manualmente invocado; • Se invocado manualmente, a consistência dos dados precisa ser verificada; • Se automaticamente, o sistema deverá não operar de maneira inconsistente (Galera Cluster); • Boas práticas: • Utilize um load balancer capaz de fazer a divisão lógica entre leituras e escritas; • No caso de necessidade de failover, o load balancer precisa realizar esse processo; • MaxScale + Galera Monitor • HAProxy
  • 11. Soluções de Clusterização de Bancos de Dados MariaDB/MySQL
  • 12. Clusterização de Bancos de Dados • Existem várias soluções, com implementações de diferentes protocolos: • Replicação Assíncrona; • Replicação Semi-síncrona; • Replicação Síncrona; • Replicação Virtualmente Síncrona; • Replicação em Nível de Bloco de Disco; • Muitas das vezes a replicação é implementada com os conceitos de: • MASTER e SLAVE; • PRIMÁRIO e SECUNDÁRIO; • Resources;
  • 13. São muitas as soluções, você precisa escolher aquela que melhor se adequa ao seu projeto! MHA PRM MRM Galera Cluster MySQL Cluster DRBD
  • 15. MariaDB Cluster • O MariaDB Cluster é: • Uma solução multi-master de replicação virtualmente síncrona; • Disponível somente em plataforma Linux; • Tamanho mínimo de um cluster, 3 máquinas; • Todas as tabelas dos bancos de dados de usuário devem ser InnoDB/XtraDB; • e todas com PRIMARY KEY explicitamente definidas; • Tem suporte a leituras e escritas em todos os nós, embora não seja recomendado; • escreva em um nó por vez e leia de todos; • Cada transação é tida como um Write-Set • Cada Write-Set tem um COMMIT local e outro nos demais nós do cluster (processo de certificação) • Em WAN, trabalha com segmentos, onde cada nós ou conjunto de nós podem estar em locais diferentes;
  • 16. MariaDB Cluster, processo de certificação :: Certification based-replication Uma transação é iniciada; A transação recebe um OK e COMMIT; A transação é enviada aos demais nós; O processo de certificação inicia; Se OK, COMMIT Senão, discard (certification failure) :: Premissas O primeiro foco da solução é manter os nós em um estado consistente; A re-sincronia é automática, daí o falarmos que o cluster é a prova de Partitions;
  • 17. MariaDB Cluster, flow control • O Flow Control é ativado sempre que o cluster recebe mais transações do que suporta; • Geralmente, algum dos jobs abaixo são executados: • pt-online-schema-change é executado para alteração de uma tabela grande; • pt-table-checksum/table-sync devem ser executados com muito cuidado; • LOAD DATA INFILE; • FLUSH TABLES WITH READ LOCK, geralmente utilizado por backups; • Existem configurações do Galera API Provider: • gcs.fc_limit: nomero de transações recebidos por um nó antes de iniciar o Flow Control • gcs.fc_master_slave: interessate YES para clusters que tem um no de escrita e vários de leitura • gcs.fc_factor: número fractional que é a base de cálculo para ativação do Flow Control
  • 18. MariaDB Cluster, DDL/Schame Upgrade • Built-in Métodos configurados na variável wsrep_OSU_method: • TOI, quando alterações são realizadas com pt-online-schema-change;
  • 19. MariaDB Cluster, DDL/Schame Upgrade • Built-in Métodos configurados na variável wsrep_OSU_method: • RSU, quando alterações são feitas com ALTER TABLE; • Configurar um nó do cluster com SET GLOBAL wsrep_OSU_method=‘RSU’ é o mesmo que: • set global wsrep_desync=on; • set global wsrep_on=off;
  • 20. Escalando o ambiente com MariaDB Cluster e MaxScale
  • 22. MaxScale 2.0, routers • O MaxScale é um Database Proxy, com inteligência em forma de routers; • Tais módulos ou routers estão disponíveis após a sua instalação; • ReadConnRoute: esse router é um simples load balancer que roteia transações para os servidores; • ReadWriteSplit: router que faz a divisão de leituras e escritas entre MASTER e SLAVEs; • BinlogRouter: faz o papel de um MASTER intermediário, servidor de log binário; • SchemaRouter: faz o roteamento das transações de acordo com os bancos de dados (sharding); • AvroRouter: consome logs binários e exporta os dados para Avro files (JSON); • Ao ser iniciado, MaxScale precisa de um arquivo de configuração: • por padrão localizado em /etc/maxscale.cnf ou -f file.ext; • requisito mínimo para iniciar o serviço: service, listener, monitor e configs de cliente (maxadmin)
  • 23. MaxScale 2.0, monitors • O MaxScale tem ainda vários monitores que trabalham juntamente com os routers; • Tais módulos estão disponíveis após a sua instalação; • MySQL Monitor: • Multi-Master Monitor: • NDB Cluster Monitor: • Galera Monitor: monitora o status atual de cada um dos nós do cluster, simula MASTER/SLAVE; [Galera Monitor] type=monitor module=galeramon servers=server1,server2,server3 user=myuser passwd=236B2854ECA2CDF9C4EF929F8CC48369
  • 24. MaxScale, Maxadmin (client) • Listando os servidores/nós do cluster: • Listando os monitores ativos: MaxScale> list servers Servers. -------------------+-----------------+-------+-------------+-------------------------- Server | Address | Port | Connections | Status -------------------+-----------------+-------+-------------+-------------------------- wbwsrep01 | 192.168.50.11 | 3306 | 0 | Master, Synced, Running wbwsrep02 | 192.168.50.12 | 3306 | 0 | Slave, Synced, Running wbwsrep03 | 192.168.50.13 | 3306 | 0 | Slave, Synced, Running -------------------+-----------------+-------+-------------+-------------------------- MaxScale> list monitors ---------------------+--------------------- Monitor | Status ---------------------+--------------------- Galera Monitor | Running ---------------------+---------------------
  • 25. MaxScale 2.0, Galera Monitor • Galera Monitor features: • marcar um antigo master após um crash, disable_master_failback=true; • cada servidor pode ter uma prioridade, use_priority=true • no caso de wsrep_sst_method=mariabackup/xtrabackup-v2, available_when_donor=true mantém o status do nó como Synced, invés de DONOR/DESYNCED; • É bom lembrar: • SST, ou Snapshot State Transfer é realizado quando um nó é adicionado ao cluster e precisa do todo o state de dados; • IST, ou Incremental State Transfer é realizado quando o nó tem pequenas paradas no serviço do MariaDB e quando volta, todas as transações ainda não executadas são encontradas no Cache do Donor;
  • 26. [root@maxscale ~]# maxadmin -e "list servers" Servers. -------------------+-----------------+-------+-------------+-------------------- Server | Address | Port | Connections | Status -------------------+-----------------+-------+-------------+-------------------- wbwsrep01 | 192.168.50.11 | 3306 | 654 | Master, Synced, Running wbwsrep02 | 192.168.50.12 | 3306 | 76 | Slave, Synced, Running wbwsrep03 | 192.168.50.13 | 3306 | 89 | Slave, Synced, Running -------------------+-----------------+-------+-------------+-------------------- [root@maxscale ~]# vim /etc/maxscale.cnf # edited priorities [root@maxscale ~]# systemctl restart maxscale [root@maxscale ~]# maxadmin -e "list servers" Servers. -------------------+-----------------+-------+-------------+-------------------- Server | Address | Port | Connections | Status -------------------+-----------------+-------+-------------+-------------------- wbwsrep01 | 192.168.50.11 | 3306 | 78 | Slave, Synced, Running wbwsrep02 | 192.168.50.12 | 3306 | 3 | Slave, Synced, Running wbwsrep03 | 192.168.50.13 | 3306 | 12 | Master, Synced, Running -------------------+-----------------+-------+-------------+-------------------- MaxScale 2.0, Galera Monitor
  • 27. MaxScale 2.0, Galera Monitor • Adicionando novos nós no cluster e reloading MaxScale: • Provisione o novo nó com as configurações necessárias; • Inicie o novo nó e tenha certeza de que esteja como PRIMARY Component e em Synced status; • No arquivo de configuração do MaxScale 2.0: • Adicione o novo servidor à seção correta [servername] • Assegure que o servidor tenha sido adicionado à seção do Galera Monitor • Utilize o maxadmin para fazer o reload das configurações: #: tailing the log file after configurations and restart Server changed state: wbwsrep01[192.168.50.11:3306]: new_slave. [Running] -> [Slave, Synced, Running] Server changed state: wbwsrep02[192.168.50.12:3306]: new_slave. [Running] -> [Slave, Synced, Running] Server changed state: wbwsrep03[192.168.50.13:3306]: new_master. [Running] -> [Master, Synced, Running] Server changed state: wbwsrep04[192.168.50.14:3306]: new_slave. [Running] -> [Slave, Synced, Running]