<Insert Picture Here>




                        MySQL
    High Availability and Scale-Out

   Wagner Bianchi – wagner.bianchi@oracle.com
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
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
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
MySQL BRASIL




               5
Soluções MySQL High-Availability




                                   6
MySQL Scale-Up x MySQL Scale-Out



                 Scalability Strategy




 Vertical
                            Horizontal




                                         7
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
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
MySQL Scale-Out




                  10
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
Replicação Assíncrona




                        12
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
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
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
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
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
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
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
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
MySQL High-Availability Options

• As opções de alta disponibilidade com o MySQL que
 discutiremos são:


  • Linux Heartbeat / DRBD;

  • MySQL Cluster;




                                                  21
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
Linux Heartbeat – IP Address Takeover




                                        23
Linux Heartbeat – IP Address Takeover




                                        24
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
DRBD




       26
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
MySQL Cluster Architecture




                             28
MySQL Enterpise Monitor




                          29
Questions & Answers




                      30
Thanks...




            31

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 isintended 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-Upx 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.
  • 6.
  • 7.
    MySQL Scale-Up xMySQL Scale-Out Scalability Strategy Vertical Horizontal 7
  • 8.
    MySQL Scale-Out • OMySQL é 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 • Asprincipais 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.
  • 11.
    Replicação Assíncrona • Recursodisponí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.
  • 13.
    Time to getbusy! • 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 • Disponibilizadano 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 • Estemodelo 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 getbusy! • Alterando a replicação assíncrona para uma replicação semi- síncrona com Heartbeat e exibindo o seu monitoramento; 18
  • 19.
    High Availability • Muitossã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çãosimples: 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 • Possibilitaque 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.
    Linux Heartbeat –IP Address Takeover 23
  • 24.
    Linux Heartbeat –IP Address Takeover 24
  • 25.
    DRBD • Constantemente utilizadoem 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.
  • 27.
    MySQL Cluster • OMySQL 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.
  • 29.
  • 30.
  • 31.