• Nenhum resultado encontrado

Alta Disponibilidade no MySQL 5.7 para aplicações em PHP. Airton Lastori Abril-2016

N/A
N/A
Protected

Academic year: 2021

Share "Alta Disponibilidade no MySQL 5.7 para aplicações em PHP. Airton Lastori Abril-2016"

Copied!
81
0
0

Texto

(1)
(2)

DBA

Dev

Gerencial, Usuário

ou Professor

(3)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Não usa MySQL

Usa MySQL sem

HA

Usa MySQL com

HA

(4)

Agenda

1.

Alta disponibilidade (HA) – conceitos básicos

2.

Arquiteturas e topologias de HA para MySQL

(5)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Alta disponibilidade

(6)
(7)
(8)
(9)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

“Precisamos garantir que a nossa

aplicação não pare nunca!

Nosso cliente não pode esperar.

Perderemos dinheiro e nossa marca

ficará prejudicada.”

(10)
(11)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

...

(12)
(13)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

“100%, é claro!”

(14)

“Desculpe desapontá-lo, mas disponibilidade

infinita não existe.

Pense em serviços como abastecimento de

água ou energia elétrica...

Há necessidade de ter redundância e

contingência dos equipamentos e

(15)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

“Chefe, na verdade precisamos de mais

1 servidor para aplicação. É só instalar

uma cópia da aplicação nele e estamos

bem. Teremos nosso Cluster!”

(16)
(17)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 17

(18)

Agenda

1.

Alta disponibilidade (HA) – conceitos básicos

2.

Arquiteturas e topologias de HA para MySQL

(19)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Alta disponibilidade

(20)

Standalone

Clusterizado

(21)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

mysql.com/why-mysql/white-papers/mysql_wp_ha_strategy_guide.php

(22)

Etapas típicas de um projeto de HA

1.

Definir qual o

tempo

máximo de indisponibilidade e

perdas

aceitáveis

2.

Revisar todos intens da infra-estrutura atual que terão

contingência

(mapear SPoF)

3.

Definir a melhor

arquitetura

e topologia de HA para este contexto

4.

Implantar a

redundância

dos componentes

5.

Implantar

monitoramento

(instrumentação)

(23)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Etapas típicas de um projeto de HA

1.

Definir qual o tempo máximo aceitável de uma indisponibilidade

2.

Revisar todos intens da infra-estrutura atual que terão contingência

(mapear SPoF)

3.

Definir a melhor

arquitetura

e topologia de HA para este contexto

4.

Implantar a redundância dos componentes

5.

Implantar

monitoramento

(instrumentação)

6.

Implantar

procedimentos

operacionais para contingência

(24)

Arquiteturas e topologias

(25)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Sem Alta disponibilidade

Topologia Simples

Data Access (mysqld)

Data (Storage/HD/SDD)

App Servers

Database connection

(26)

Sem Alta disponibilidade no Banco de Dados

Topologia com redundância apenas na Aplicação

Data Access (mysqld)

App Servers

(27)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Alta disponibilidade no modo Ativo-Passivo

Topologia com redundância via Shared Storage

Data Access (mysqld)

Data (Shared Storage/SAN)

App Servers

Database connections

28

(28)

Oracle Clusterware unifies servers

in a server farm to form a cluster

At the core of Oracle RAC

Oracle Cluster 12c includes MySQL

Server 5.6 agent

Planned migration and failover of

MySQL database

Hidden from the application

(29)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Alta disponibilidade no modo Master-Slave

Topologia com redundância via Replicação Simples

(30)

Replicação em 5 minutos

Monte seu lab e comece a brincar

[blog post]

(31)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Exemplo

depois de configurado server-id e log-bin na instância master e restaurado um backup no slave

master>

CREATE USER repl_user@%;

master>

GRANT REPLICATION SLAVE ON *.* TO repl_user@% IDENTIFIED BY

'repl_user_password';

master>

SHOW MASTER STATUS \G

*************************** 1. row ***************************

File: master-bin.000003

Position: 433

slave>

CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=3310,

MASTER_USER='repl_user', MASTER_PASSWORD='repl_user_password',

MASTER_LOG_FILE='master-bin.000003', MASTER_LOG_POS=433;

slave>

START SLAVE;

(32)

Grandes usuários MySQL usam a replicação

(33)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Exemplos de uso da Replicação

Redundância simples dos dados (Contingência)

Backup

Geo-redundância (DR)

Dado mais próximo do cliente

Escalabilidade de Leituras

Dividir cargas OLTP e OLAP

(34)

Exemplos de uso da Replicação

Redundância simples dos dados (Contingência)

Backup

Geo-redundância (DR)

Dado mais próximo do cliente

Escalabilidade de Leituras

Dividir cargas OLTP e OLAP

(35)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Contingência

em caso de falhas ou manutenção programada

Topologia Replicação Simples

(36)

Contingência

em caso de falhas do Master

Topologia Replicação Simples

Novo

Master

read-write

(mysqld)

App Servers

Database connections

(37)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Contingência

em caso de falhas ou manutenção programada

Topologia Replicação Simples

(38)

Contingência

em caso de manutenção programada do Master

Topologia Replicação Simples

Temporary Master

read-write

(mysqld)

App Servers

Database connections

Read-write

Em Manutenção

replicação parada

Switchover

conexões roteadas para

(39)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Componentes para Roteamento

MySQL Connectors

• Funcionalidades

nativas de Failover ou

Load Balancing

MySQL Router

(novo )

• Middleware leve

• Roteamento baseado

nas conexões

• Failover para o

primeiro disponível

ou Load Balancing

MySQL Utilities

• mysqlfailover –

monitora a

replicação, promove

novo master e

redireciona slaves

• MySQL Fabric – provê

mapeamento da

topologia para

(40)

Qual biblioteca connector você usa?

<?php phpinfo(); ?>

Biblioteca mysqlnd é atual e

recomendada, substituindo a

(41)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

PHP

PHP

Memor

y

PHP

Str

eams

Infrastructure

mysqlnd

MySQL Server

ext/mysql

mysqli

PDO_mysql

PHP Module (Extension) API

PECL/mysqlnd_ms

PECL/mysqlnd_memcache

(42)

Saiba mais sobre Replicação MySQL com PHP e

PECL/mysqlnd_ms

Apresentação no PHP Conference

[slides]

(43)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Failover automático

para o primeiro disponível

(44)

Failover automático

para o primeiro disponível

MySQL Router

Novo Master

read-write

(mysqld)

App Servers

Connections Routing

Read-write

Read-only

Antigo Master falhou

(45)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Cuidado com aquelas aspas “read-only”

Se configurado com

read-only=0

há risco de inconsistências.

Exemplo de erro:

Falha temporária na conexão entre MySQL Router de apenas uma instância e o

MySQL Master

Router vai fazer failover para o próximo disponível (slave)

Uma aplicação escreve no Master, enquanto que outra escreve no slave

Se configurado com

read-only=1

algum processo adicional vai

ter que verificar o erro e reconfigurar o servidor.

Talvez a própria aplicação ou um evento no próprio MySQL

(46)

Não recomendado uso como Master-Master:

sem resolução de conflitos

Topologia de Replicação Cruzada + MySQL Router

(47)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Cuidado com Replicação Cruzada ou bi-direcional

Este setup é bastante controverso, na maioria das vezes evitado

Porém, tem seus usos, como veremos mais adiante em “proximidade dos dados ao

cliente”

Nesse caso anterior, a replicação cruzada é usada por praticidade

permite simplificar o failover

facilita resincronização dos dados em casos de falsos positivos, como falhas

temporárias na rede

É importante

monitorar

e se ambos servidores estão recebendo escritas,

deve-se agir rapidamente para diminuir chances de

inconsistências

.

(48)

Visão geral:

mysqlfailover

ou

MySQL Fabric

MySQL Utilities para HA

(49)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

MySQL Utilities

shell> mysqlfailover master=root@localhost:3331 discover-slaves-login=root

--log=log.txt

MySQL Replication Monitor and Failover Utility

Failover Mode = auto Next Interval = Mon Mar 19 15:56:03 2012

...

Master Information

Binary Log File Position Binlog_Do_DB Binlog_Ignore_DB

mysql-bin.000001 571

GTID Executed Set

2A67DE00-2DA1-11E2-A711-00764F2BE90F:1-7 [...]

54

mysqlfailover

(50)

MySQL Utilities

Replication Health Status

+---+---+---+---+---+---+

| host | port | role | state | gtid_mode | health |

+---+---+---+---+---+---+

| localhost | 3331 | MASTER | UP | ON | OK |

| localhost | 3332 | SLAVE | UP | ON | OK |

| localhost | 3333 | SLAVE | UP | ON | OK |

| localhost | 3334 | SLAVE | UP | ON | OK |

+---+---+---+---+---+---+

Q-quit R-refresh H-health G-GTID Lists U-UUIDs L-log entries

(51)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Exemplos de uso da Replicação

Redundância simples dos dados (Contingência)

Backup

Geo-redundância (DR)

Dado mais próximo do cliente

Escalabilidade de Leituras

Dividir cargas OLTP e OLAP

(52)

Backup

no Slave

Topologia Replicação Simples

(53)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Backup

no Slave

Topologia com Replicação Atrasada

(54)

Menor tempo em backups e restores, menos downtime

(55)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

MySQL Enterprise Backup

1.

Sem parar o Master, faça um hot backup

2.

Restaure no Slave

3.

No Slave execute CHANGE MASTER TO ...

4.

Inicie o Slave

61

Crie novos Slaves

online

(56)

Exemplos de uso da Replicação

Redundância simples dos dados (Contingência)

Backup

Geo-redundância (DR)

Dado mais próximo do cliente

Escalabilidade de Leituras

Dividir cargas OLTP e OLAP

(57)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Geo-redundância

para Disaster Recovery

Topologias com múltiplos slaves

(58)

Cuidados com replicação via Internet

Segurança

Proteja o canal de replicação configurando o suporte nativo a criptografia da

replicação do master ao slave.

CHANGE MASTER TO ... MASTER_SSL_CAPATH* ...

Revise as configurações de timeouts e retries

Monitore

Com base no SLA para perdas de dados, defina limites para atrasos e dispare alertas

Evite usar replicação semi-síncrona

(59)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Exemplos de uso da Replicação

Redundância simples dos dados (Contingência)

Backup

Geo-redundância (DR)

Dado mais próximo do cliente

Escalabilidade de Leituras

Dividir cargas OLTP e OLAP

(60)

Dado mais próximo do cliente

Topologias com múltiplos slaves

(61)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Dado mais próximo do cliente

Topologias com múltiplos masters

(62)

Uso da replicação cruzada ou bi-direcional

Configure

auto_increment_offset

e

auto_increment_increment

.

Cuidado ao usar a replicação bidirecional, pois ela não inclui o conceito de

resolução de

conflitos

.

Se mais de 1 servidor puder atualizar o mesmo domínio de dados, você poderá ter conflitos que

podem ou não serem notados. Se você tiver sorte, a replicação irá parar quando houver conflito

(ex. DUPLICATE KEY), mas você não deve contar com isso (ex. UPDATE).

Se você pretende ter um sistema de alta disponibilidade, você deve garantir, ao nível da

aplicação ou permissões, que mais de um servidor não tente atualizar os mesmos dados.

Mesmo que os dados sejam naturalmente particionados, como por exemplo duas escolas

(63)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Replicação Semi-síncrona para

evitar perda de dados

Topologias resilientes

72

Master

Slave

(64)

Analogia

Carta Simples

Carta AR

Intimação Judicial

Assíncrona

sem confirmação do recebimento

Semi-síncrona

confirmado recebimento, mas ainda não “processada”

(65)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Sem perda de dados e failover facilitado com replicação

Semi-síncrona

Topologias resilientes com múltiplos slaves

74

Master

Slave 1

Primeira opção de failover

(sempre mais atualizado)

Slave 2

(66)

Restrições e recomendações

A replicação convencional ocorre na camada de acesso aos dados (SQL),

portanto funciona com qualquer storage engine, mas recomenda-se

InnoDB

InnoDB é recomendado por ser crash-safe, facilitando operações de

crach-recovery e provisionamento via MEB

Failover automático requer GTID e Row Format

(67)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 81

Group Replication

: multi-master Ativo-Ativo

Router

App

Virtually Synchronous Replication

App

App

(68)

Resumo das opções

Replication

Shared Disk

Virtualization

Group Replication

Cluster Carrier

Grade Edition

Failover Speed

Config.

Medium

High

High

Geo-Redundancy

High

None

Config.

High

Scaling

Read

None

Read

R/W

Ease of Migration From

Stand-alone InnoDB to HA

Medium

High

High

Low

Possibility of Transaction

(69)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Monitoramento e Gerenciamento

(70)
(71)
(72)
(73)
(74)
(75)
(76)

MySQL Utilities

Binary Log Operations

Database Operations

General Operations

Server Operations

Specialized Operations

High Availability Operations

How Can I Use Replication?

How Do I Add New Servers to My

Setup Automatic Failover

Restore the Previous Master After

Failover

How Can I Find All of the Slaves Attached

to My Master Server?

How To Check If Data Is Correctly

Replicated?

(77)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

MySQL Enterprise Edition

Suporte + Backup + Monitor + Workbench + Plug-ins

Escalabilidade

Autenticação

Firewall

Auditoria

(novo) TDE

Criptografia

(78)

Sumário

1.

HA não é simples nem de graça

2.

O MySQL possui diversas opções para HA

3.

Entenda os requisitos, compare as possíveis arquiteturas

(79)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

@MySQLBR

facebook.com/MySQLBR

meetup.com/MySQL-BR

(80)
(81)

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Perguntas?

Alta Disponibilidade no MySQL 5.7

Contato:

airton.lastori@oracle.com

twitter.com/mysqlbr

Referências

Documentos relacionados

Calúnia contra funcionário público no exercício da função em concurso formal Recurso defensivo buscando, preliminarmente, o reconhecimento da inépcia da

colocar valores DEFAULT nos atributos da chave estrangeira de cada linha de T2 que combina.. Comandos SQL

Alguns gêneros e diversas espécies novas de cianobactérias foram descritas para ambientes terrestres deste bioma (Sant‟Anna et al. Isto comprova que boa parte

mais me aprofundava, mais percebia o quanto o caso era difícil.. passou a ser ilustrativo dos efeitos que a aprendizagem tardia de uma língua tem para o desenvolvimento cognitivo

Ainda que o representante do MPRJ não faça uso de insinuações dire- tas sobre a homofobia do pai, fica comprovado que todo o seu argumento é construído com base na repulsa de

Lance algumas bolinhas na direção da criança, ela deve tentar através da percepção de tempo e reação tentar recolher a bolinha com o copo. Alternar o movimento em ambos

h) Concessão de bolsas de estudo. Este plano apresenta uma análise da situação dos alunos matriculados na ESMA, no ano letivo 2020/2021, no que diz respeito à candidatura

Os impetrantes sustentam que a informação de que a família do magistrado trabalha com bijuterias é pública e foi noticiada pela imprensa. Acrescentam que a