Replicação e alta disponibilidade by wagner bianchi -
1. <Insert Picture Here>
MySQL
High Availability and Scale-Out
Wagner Bianchi – wagner.bianchi@oracle.com
2. The preceding is intended to outline our general product
direction. It is intended for information purposes only, and may
not be incorporated into any contract. It is not a commitment to
deliver any material, code, or functionality, and should not be
relied upon in making purchasing decisions. The development,
release, and timing of any features or functionality described for
Oracle’s products remains at the sole discretion of Oracle.
2
3. Apresentação
Wagner Bianchi é especialista em MySQL, com foco nas áreas
de performance tuning, Scale-Out e High Availability. Com 7 anos de
experiência com o produto, Bianchi prestou serviços de consultoria em
várias empresas no Brasil e na América Latina, participando de grandes
projetos de migração, performance tuning e de garantia de
disponibilidade de dados, utilizando produtos como MySQL 3.23++,
MySQL Cluster, DRBD e Heartbeat. Certificado SCMA, SCMDEV e
SCMDBA. Atualmente, Bianchi é Senior Principal Consultant no MySQL
Professional Services para a América Latina na Oracle Corporation.
3
4. Agenda
• MySQL Scale-Up x MySQL Scale-Out
• MySQL High-Availability
• Replicação Assíncrona e Semi-síncrona;
• DRBD / Linux Heartbeat;
• MySQL Cluster;
• MySQL Enterprise Monitor (NEW – Monitor Version 2.3)
• MySQL Cluster Grade Carrier
4
7. MySQL Scale-Up x MySQL Scale-Out
Scalability Strategy
Vertical
Horizontal
7
8. MySQL Scale-Out
• O MySQL é um servidor de bancos de dados que foi concebido para ser
utilizado em ambientes de qualquer tamanho, seja este pequeno, médio
ou gigante;
• Como estratégia principal, o MySQL suporta o recurso de replicação de
dados locais, em uma LAN ou em WAN, conectando geograficamente
vários sites - escalabilidade horizontal;
8
9. MySQL Scale-Out
• As principais razões para iniciar projetos de Scale-Out com o
MySQL são:
• Grande quantidade de transações e aumento do workload;
• Necessidade de atender mais aplicativos internos e externos;
• Necessidade de maior velocidade no acesso à informações para
tomada de decisão (relatórios e agregações de dados);
• Necessidade de backup online com possibilidade de failover;
9
11. Replicação Assíncrona
• Recurso disponível no servidor de bancos de dados MySQL
desde a versão 3.23, focada na replicação de dados com a
utilização de “commodity hardware”;
• Trabalha com os conceitos de servidor MASTER e SLAVE, com
duas threads no SLAVE e uma que se comunica com a única
thread do MASTER;
• Dependente do log binário;
11
13. Time to get busy!
• Criação de replicação entre duas instâncias do servidor de
bancos de dados MySQL, em duas máquinas separadas;
13
14. Replicação Semi-Síncrona
• Disponibilizada no formato plugin, assim como o partition engine
e outros Storage Engines a partir da versão 5.1* do servidor de
bancos de dados MySQL;
• Após instalado o plugin, uma módulo para o MASTER e outro
para os SLAVEs, o recurso poderá ser configurado no runtime do
MySQL;
• Um dos principais motivos para um novo modelo de replicação:
problemas com delay na entrega de dados entre o MASTER e os
SLAVEs;
14
15. Replicação Semi-Síncrona
• Instalando o plugin:
mysql> -- módulo do MASTER
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> -- módulo do SLAVE
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
• Habilitando a replicação semi-síncrona no MASTER e no SLAVE;
mysql> -- executar no servidor MASTER
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1000;
mysql> -- executar nos servidores SLAVE
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
mysql> STOP SLAVE IO_THREAD;
mysql> START SLAVE IO_THREAD;
15
16. Replicação Semi-Síncrona
• Este modelo de replicação possui o seu “Heartbeat”, possibilita
que verifiquemos através de variáveis de status problemas de
conexão entre os SLAVEs e o MASTER;
• Para a utilização, será necessário uma parada na replicação
entre os servidores, FLUSH TABLES WITH READ LOCK no
MASTER e CHANGE MASTER TO nos SLAVEs (pode-se utilizar
arquivos e o comando source);
16
17. Replicação Semi-Síncrona
• Comandos para os SLAVEs;
mysql> STOP SLAVE;
mysql> CHANGE MASTER TO master_heartbeat_period = <milliseconds_value>;
mysql> START SLAVE;
• Antes de setar o valor da variável acima, o valor de
master_heartbeat_period deve ser menor ao igual ao valor
de slave_net_timeout;
• Os problemas registrados pelo Heartbeat da replicação semi-
síncrona poderá ser visto através das variáveis de status;
17
18. Time to get busy!
• Alterando a replicação assíncrona para uma replicação semi-
síncrona com Heartbeat e exibindo o seu monitoramento;
18
19. High Availability
• Muitos são os ambientes que têm a necessidade de operar 24x7,
operadoras de telefonia, centrais de televisão, empresas que
fornecem serviços em geral e outras;
• A alta-disponibilidade possibilita que estas empresas tenham
seus sistemas acessíveis o mais tempo possível, atendendo
melhor e a mais clientes;
• Quanto tempo sua aplicação precisa ficar online/uptime?
• Quanto tempo sua aplicação pode ter de downtime?
19
20. High Availability
• Equação simples:
Availability = uptime / (uptime + downtime)
• A forma acima nos dará um valor percentual do quanto uma
aplicação está online (variáveis de status ou log da aplicação);
Availability Nines Downtime Allowed
90% 1 36.5 days/year
99% 2 36.5 days/year
99,9% 3 8.76 hours/year
99,99% 4 52 minutes/year
99,999% 5 5 minutes/year
20
21. MySQL High-Availability Options
• As opções de alta disponibilidade com o MySQL que
discutiremos são:
• Linux Heartbeat / DRBD;
• MySQL Cluster;
21
22. Linux Heartbeat
• Possibilita que todos os servidores de bancos de dados MySQL
sejam acessados através de um mesmo IP Virtual;
• Utiliza o seu próprio protocolo chamado de heartbeat-protocol
para checar se os servidores de bancos de dados estão
acessíveis e respondendo;
• Roda diretamente em todos os nodos de um esquema de Cluster
ou Replicação e rapidamente inicia o processo de takeover caso
o nodo primary apresenta algum problema para ser acessado;
22
25. DRBD
• Constantemente utilizado em conjunto com o Heartbeat como
uma solução de failover baseado na montagem de um device
que contém blocos replicados;
• É mais uma solução de alta-disponibilidade em nível de sistema
operacional que propriamente do MySQL – funciona como um
RAID 1, com failover;
• O Heartbeat não recebe sinais de vida de um dos nodos e inicia
o montagem de um device “/dev/drbd0” e realiza o failover;
25
27. MySQL Cluster
• O MySQL Cluster é de longe solução mais interessante para
ambientes que necessitam de alta-disponibilidade de
informação, primeiro por sua arquitetura e pela facilidade de
implementação;
• Uma vez configurado, o MySQL Cluster por si oferecerá ao
ambiente failover, redundância e replicação síncrona da
informação entre os data nodes;
• Um implementação básica do MySQL Cluster requer no mínimo
5 máquinas com hardware similar;
27