Replicação e alta disponibilidade by wagner bianchi -

3.076 visualizações

Publicada em

Fórum da Comunidade MySQL

0 comentários
5 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.076
No SlideShare
0
A partir de incorporações
0
Número de incorporações
27
Ações
Compartilhamentos
0
Downloads
105
Comentários
0
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Replicação e alta disponibilidade by wagner bianchi -

  1. 1. <Insert Picture Here> MySQL High Availability and Scale-Out Wagner Bianchi – wagner.bianchi@oracle.com
  2. 2. The preceding is intended to outline our general productdirection. It is intended for information purposes only, and maynot be incorporated into any contract. It is not a commitment todeliver any material, code, or functionality, and should not berelied upon in making purchasing decisions. The development,release, and timing of any features or functionality described forOracle’s products remains at the sole discretion of Oracle. 2
  3. 3. Apresentação Wagner Bianchi é especialista em MySQL, com foco nas áreasde performance tuning, Scale-Out e High Availability. Com 7 anos deexperiência com o produto, Bianchi prestou serviços de consultoria emvárias empresas no Brasil e na América Latina, participando de grandesprojetos de migração, performance tuning e de garantia dedisponibilidade de dados, utilizando produtos como MySQL 3.23++,MySQL Cluster, DRBD e Heartbeat. Certificado SCMA, SCMDEV eSCMDBA. Atualmente, Bianchi é Senior Principal Consultant no MySQLProfessional Services para a América Latina na Oracle Corporation. 3
  4. 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
  5. 5. MySQL BRASIL 5
  6. 6. Soluções MySQL High-Availability 6
  7. 7. MySQL Scale-Up x MySQL Scale-Out Scalability Strategy Vertical Horizontal 7
  8. 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. 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
  10. 10. MySQL Scale-Out 10
  11. 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
  12. 12. Replicação Assíncrona 12
  13. 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. 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. 15. Replicação Semi-Síncrona • Instalando o plugin:mysql> -- módulo do MASTERmysql> INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so;mysql> -- módulo do SLAVEmysql> 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 MASTERmysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1000;mysql> -- executar nos servidores SLAVEmysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;mysql> STOP SLAVE IO_THREAD;mysql> START SLAVE IO_THREAD; 15
  16. 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. 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. 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. 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. 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. 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. 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
  23. 23. Linux Heartbeat – IP Address Takeover 23
  24. 24. Linux Heartbeat – IP Address Takeover 24
  25. 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
  26. 26. DRBD 26
  27. 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
  28. 28. MySQL Cluster Architecture 28
  29. 29. MySQL Enterpise Monitor 29
  30. 30. Questions & Answers 30
  31. 31. Thanks... 31

×