31
<Insert Picture Here> MySQL High Availability and Scale-Out Wagner Bianchi – [email protected]

Replicação e alta disponibilidade by wagner bianchi -

Embed Size (px)

DESCRIPTION

Fórum da Comunidade MySQL

Citation preview

Page 1: Replicação e alta disponibilidade by wagner bianchi -

<Insert Picture Here>

MySQLHigh Availability and Scale-Out

Wagner Bianchi – [email protected]

Page 2: Replicação e alta disponibilidade by wagner bianchi -

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,

2

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.

Page 3: Replicação e alta disponibilidade by wagner bianchi -

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

3

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.

Page 4: Replicação e alta disponibilidade by wagner bianchi -

Agenda

• MySQL Scale-Up x MySQL Scale-Out

• MySQL High-Availability

• Replicação Assíncrona e Semi-síncrona;

• DRBD / Linux Heartbeat;

4

• MySQL Cluster;

• MySQL Enterprise Monitor (NEW – Monitor Version 2.3)

• MySQL Cluster Grade Carrier

Page 5: Replicação e alta disponibilidade by wagner bianchi -

MySQL BRASIL

5

Page 6: Replicação e alta disponibilidade by wagner bianchi -

Soluções MySQL High-Availability

6

Page 7: Replicação e alta disponibilidade by wagner bianchi -

MySQL Scale-Up x MySQL Scale-Out

Scalability Strategy

7

Vertical

Horizontal

Page 8: Replicação e alta disponibilidade by wagner bianchi -

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

8

dados locais, em uma LAN ou em WAN, conectando geograficamente

vários sites - escalabilidade horizontal;

Page 9: Replicação e alta disponibilidade by wagner bianchi -

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;

9

• 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;

Page 10: Replicação e alta disponibilidade by wagner bianchi -

MySQL Scale-Out

10

Page 11: Replicação e alta disponibilidade by wagner bianchi -

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

11

• 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;

Page 12: Replicação e alta disponibilidade by wagner bianchi -

Replicação Assíncrona

12

Page 13: Replicação e alta disponibilidade by wagner bianchi -

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

Page 14: Replicação e alta disponibilidade by wagner bianchi -

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

14

• 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;

Page 15: Replicação e alta disponibilidade by wagner bianchi -

Replicação Semi-Síncrona

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';

• Instalando o plugin:

• Habilitando a replicação semi-síncrona no MASTER e no SLAVE;

15

• 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;

Page 16: Replicação e alta disponibilidade by wagner bianchi -

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;

16

• 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);

Page 17: Replicação e alta disponibilidade by wagner bianchi -

Replicação Semi-Síncrona

• Comandos para os SLAVEs;

• Antes de setar o valor da variável acima, o valor de

mysql> STOP SLAVE;mysql> CHANGE MASTER TO master_heartbeat_period = <milliseconds_value>;mysql> START SLAVE;

17

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;

Page 18: Replicação e alta disponibilidade by wagner bianchi -

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

Page 19: Replicação e alta disponibilidade by wagner bianchi -

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

19

• 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?

Page 20: Replicação e alta disponibilidade by wagner bianchi -

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);

20

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

Page 21: Replicação e alta disponibilidade by wagner bianchi -

MySQL High-Availability Options

• As opções de alta disponibilidade com o MySQL que

discutiremos são:

• Linux Heartbeat / DRBD;

21

• MySQL Cluster;

Page 22: Replicação e alta disponibilidade by wagner bianchi -

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

22

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;

Page 23: Replicação e alta disponibilidade by wagner bianchi -

Linux Heartbeat – IP Address Takeover

23

Page 24: Replicação e alta disponibilidade by wagner bianchi -

Linux Heartbeat – IP Address Takeover

24

Page 25: Replicação e alta disponibilidade by wagner bianchi -

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

25

• É 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;

Page 26: Replicação e alta disponibilidade by wagner bianchi -

DRBD

26

Page 27: Replicação e alta disponibilidade by wagner bianchi -

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;

27

• 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;

Page 28: Replicação e alta disponibilidade by wagner bianchi -

MySQL Cluster Architecture

28

Page 29: Replicação e alta disponibilidade by wagner bianchi -

MySQL Enterpise Monitor

29

Page 30: Replicação e alta disponibilidade by wagner bianchi -

Questions & Answers

30

Page 31: Replicação e alta disponibilidade by wagner bianchi -

Thanks...

31