Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
30 de Julho de 2016 no Hotel Blue Tree Morumbi, São Paulo - SP
ALTA DISPONIBILIDADE NO MySQL 5.7
Airton Lastori
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
DBA Dev
Gerencial, Usuário
ou Professor
Quem?
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Não usa MySQL
Usa MySQL sem
HA
Usa MySQL com
HA
Quem?
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Agenda
1. Alta disponibilidade (HA) – conceitos básicos
2. Arquiteturas e topologias de HA para MySQL
3. Monitoramento e gerenciamento
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Agenda
1. Alta disponibilidade (HA) – conceitos básicos
2. Arquiteturas e topologias de HA para MySQL
3. Monitoramento e gerenciamento
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 7
O chefe
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 8
O Desenvolvedor
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 9
O DBA
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
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
“Vamos comprar um NoBreak para o
Servidor e está tudo certo!”
11
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
...
12
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
“Quanto % do tempo o sistema deve
ficar no ar?”
13
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
“100%, é claro!”
14
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
“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
processos+ferramentas para a operação”
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
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
“Na camada de banco não é tão simples
assim...”
17
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 18
Xiii... Lá vem esse
cara complicar...
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Standalone Clusterizado
19
Problemas diferentes
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
mysql.com/why-mysql/white-papers/mysql_wp_ha_strategy_guide.php
Escolhendo a melhor solução para sua necessidade
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 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)
6. Implantar procedimentos operacionais para contingência
21
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
22
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Agenda
1. Alta disponibilidade (HA) – conceitos básicos
2. Arquiteturas e topologias de HA para MySQL
3. Monitoramento e gerenciamento
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Sem alta disponibilidade
“Topologia” Stand-Alone
24
MySQL
Importante!
Backup
No-Break
Duplicidade disco
Duplicidade rede
Etc.
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Sem alta disponibilidade
“Topologia” Stand-Alone
Data Access (mysqld)
Data (Storage/HD/SDD)
App Servers
Database connection
25
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Sem alta disponibilidade no Banco de Dados
Topologia com redundância apenas na Aplicação
Data Access (mysqld)
Data (Storage/HD/SDD)
App Servers
Database connections
26
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
27
Ativo
Passivo
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
• Oracle Clusterware é o core do
Oracle RAC
– Para MySQL, funciona no modo
Ativo/Passivo
• Oracle Cluster 12c inclui o MySQL
Server 5.6 agent
• Paradas programadas ou failover
automático
– Transparente para a aplicação
30/07/2016
MySQL Enterprise Edition + Oracle Clusterware
28
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Alta disponibilidade com possibilidade do uso do Slave para outras atividades
Topologia com Replicação Simples (Master-Slave)
29
Master
Read-write
Slave
Read-only
Replicação nativa do
MySQL Escrita
Leitura
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Alta disponibilidade com possibilidade do uso do Slave para outras atividades
Topologia com redundância via Replicação Master-Slave
Slave read-only
(mysqld)
Data (Storage/HD/SDD)
App Servers
Database connections
30
Read-write
Read-only
Replicação
nativa
Master read-write
(mysqld)
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Replicação em 5 minutos
Monte seu lab e comece a brincar
• [blog post]
http://www.alastori.com.br/2015/02/tuto
rial-replicacao-mysql-em-5-minutos.html
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
32
Crie novos Slaves online
https://dev.mysql.com/doc/mysql-enterprise-backup/4.0/en/advanced.slave.html
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Replicação Semi-síncrona para evitar perda de dados
Topologias resilientes
33
Master Slave
ACK = Confirmação de
recebimento dos pacotes
Importante!
Há configurações
adicionais para
tornar a replicação
crash-safe
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 34
Analogia
34
Carta Simples
Carta AR
Intimação Judicial
Assíncrona
sem confirmação do recebimento
Semi-síncrona
confirmado recebimento, mas ainda não “processada”
Síncrona
confirmado recebimento e processamento (commit)
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
35
Master Slave 1 (local)
Primeira opção de failover
(sempre mais atualizado)
Slave 2 (remoto)
Segunda opção de failover
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Grandes usuários MySQL usam a replicação
36
Web, Cloud, Distribuído e Embarcado…
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
– Read-write split
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
– Read-write split
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Contingência em caso de falhas ou manutenção programada
Topologia Replicação Simples
Slave read-only
(mysqld)
Data (Storage/HD/SDD)
App Servers
Database connections
39
Read-write
Read-only
Master read-write
(mysqld)
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Contingência em caso de falhas do Master
Topologia Replicação Simples
Novo Master read-write
(mysqld)
Data (Storage/HD/SDD)
App Servers
Database connections
Failover
novas rotas para as
conexões com o MySQL
manual ou automático
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Contingência em caso de falhas ou manutenção programada
Topologia Replicação Simples
Slave read-only
(mysqld)
Data (Storage/HD/SDD)
App Servers
Database connections
41
Read-write
Read-only
Master read-write
(mysqld)
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Contingência em caso de manutenção programada do Master
Topologia Replicação Simples
Temporary Master read-write
(mysqld)
Data (Storage/HD/SDD)
App Servers
Database connections
42
Read-write
Inativo
Em Manutenção
replicação parada
Switchover
conexões roteadas para
outro servidor durante
manutenção programada
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Componentes para Roteamento de conexões
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
connector ou router
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Componentes para Roteamento de conexões
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
connector ou router
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Não recomendado uso como Master-Master: sem resolução de conflitos
Topologia de Replicação Cruzada + MySQL Router
45
Master “read-write”
(hot stand-by)
Data (Storage/HD/SDD)
App Servers
MySQL Router
Read-write
Read-only
Master read-write
(ativo)
Heartbeat
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
• 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
– use GTID, ROW BASED REPLICATION auto_increment_offset e
auto_increment_increment para evitar problemas
• É importante monitorar e se ambos servidores estão recebendo escritas,
deve-se agir rapidamente para diminuir chances de inconsistências.
46
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Componentes para Roteamento de conexões
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
connector ou router
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Failover automático ou manual e automatizado para o primeiro disponível
MySQL Utilities para HA – mysqlfailover ou MySQL Fabric
Slave read-only
(mysqld)
Data (Storage/HD/SDD)
App Servers
Database connections
48
Read-write
Read-only
Master read-write
(mysqld)
MySQL Utilities
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 [...]
49
mysqlfailover
dev.mysql.com/doc/mysql-utilities/1.6/en/mysqlfailover.html
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
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
50
mysqlfailover
dev.mysql.com/doc/mysql-utilities/1.6/en/mysqlfailover.html
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
– Read-write split
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Menor tempo em backups e restores, menos downtime
MySQL Enterprise Backup
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Backup no Slave
Topologia Replicação Simples
Slave parado
(mysqld)
Data (Storage/HD/SDD)
App Servers
Database connections
53
Read-write
Inativo
Master read-write
(mysqld)
Backup
STOP SLAVE
Cópia dos dados
START SLAVE
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Usada como solução de Backup
Topologia com Replicação Atrasada
54
Master Slave para
failover/switchover
Slave com Atraso
Caso típico = falha humana
Delay
CHANGE MASTER TO
MASTER_DELAY = N;
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Usada em conjunto com backup para Point-In-Time-Recovery
Live Backup com mysqlbinlog
55
Master Slave para
failover/switchover
mysqlbinlog
--read-from-remote-server --host=host_name –raw --stop-never
https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog-backup.html
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
– Read-write split
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Geo-redundância para Disaster Recovery
Topologias com múltiplos slaves
57
Site 1
Master
Site 2
Slave
Ativo Passivo
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
– Read-write split
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Dado mais próximo do cliente para Leituras
Topologias com múltiplos slaves
59
Master
read-write
Slave 1
read-only
Réplica do Master
Slave 2
read-only
Réplica do Master
Slave 3
read-only
Réplica do Slave 1
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Consolidação de Múltiplos Masters em um Slave
Replicação Multi-Source: mais flexibilidade nas topologias
60
Slave
Master 3
read-write
Master 2
read-write
Master 1
read-write
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Restrições e recomendações para Replicação
• 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 crash-
recovery e provisionamento via MEB
• Failover automático requer GTID e Row Format
• A replicação do NDB Cluster é diferente da replicação convencional e
ocorre na camada de dados
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 62
Group Replication: multi-master Ativo-Ativo
Router
App
Virtually Synchronous Replication
App App
labs.mysql.com
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Exemplos de uso da Replicação do NDB Cluster
• Redundância dos dados
– Ativo-Ativo
• Escalabilidade de Leituras
– Consistência forte, load balancing
• Escalabilidade de Escritas
– Auto-sharding
• Geo-replicação
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 64
MySQL Cluster: Escalabilidade de Escritas
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
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
Zero-Loss During Failure Config. Yes Config. Yes
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Agenda
1. Alta disponibilidade (HA) – conceitos básicos
2. Arquiteturas e topologias de HA para MySQL
3. Monitoramento e gerenciamento
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 67
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 68
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 69
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 70
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 71
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
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
Topology and Change Master Role
– 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?
– How To Fix Errant Transactions on the
Replication Topology?
73
dev.mysql.com/doc/mysql-utilities/1.6/en/mysql-utils-ha.html
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
MySQL Utilities – Exemplo switchover
shell> mysqlrpladmin --master=root@server2:3312 
--slaves=root@server2:3313,root@server4:3314,root@server5:3315 
--rpl-user=rpl:rpl --new-master=root@server1:3311 --demote-master
switchover
# Checking privileges.
# Performing switchover from master at server2:3312 to slave at server1:3311.
# Checking candidate slave prerequisites.
# Checking slaves configuration to master.
# Waiting for slaves to catch up to old master.
# Stopping slaves.
# Performing STOP on all slaves.
...
74
dev.mysql.com/doc/mysql-utilities/1.6/en/mysql-utils-ha.html
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
MySQL Utilities – Exemplo switchover
...
# Switchover complete.
# Replication Topology Health:
+----------+-------+---------+--------+------------+---------+
| host | port | role | state | gtid_mode | health |
+----------+-------+---------+--------+------------+---------+
| server1 | 3311 | MASTER | UP | ON | OK |
| server2 | 3312 | SLAVE | UP | ON | OK |
| server3 | 3313 | SLAVE | UP | ON | OK |
| server4 | 3314 | SLAVE | UP | ON | OK |
| server5 | 3315 | SLAVE | UP | ON | OK |
+----------+-------+---------+--------+------------+---------+
75
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
MySQL Enterprise Edition
Suporte + Base de Conhecimento + Hot Backup + Monitor + Oracle EM + Workbench + Plug-ins
Escalabilidade
Autenticação
Firewall
Auditoria
novo TDE
Criptografia
MySQL Enterprise Monitor
Oracle EM for MySQL
Plug-ins
Suporte
Hot
Backup
Monitor &
Workbench
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
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
e topologias, faça a melhor escolha!
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
@MySQLBR meetup.com/MySQL-BRfacebook.com/MySQLBR
pt.planet.mysql.com
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Obrigado!
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
facebook.com/mysqlbr

Alta disponibilidade no MySQL 5.7 GUOB 2016

  • 1.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 30 de Julho de 2016 no Hotel Blue Tree Morumbi, São Paulo - SP ALTA DISPONIBILIDADE NO MySQL 5.7 Airton Lastori
  • 2.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | DBA Dev Gerencial, Usuário ou Professor Quem?
  • 3.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Não usa MySQL Usa MySQL sem HA Usa MySQL com HA Quem?
  • 4.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Agenda 1. Alta disponibilidade (HA) – conceitos básicos 2. Arquiteturas e topologias de HA para MySQL 3. Monitoramento e gerenciamento
  • 5.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Agenda 1. Alta disponibilidade (HA) – conceitos básicos 2. Arquiteturas e topologias de HA para MySQL 3. Monitoramento e gerenciamento
  • 6.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 7 O chefe
  • 7.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 8 O Desenvolvedor
  • 8.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 9 O DBA
  • 9.
    Copyright © 2016Oracle 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
  • 10.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | “Vamos comprar um NoBreak para o Servidor e está tudo certo!” 11
  • 11.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | ... 12
  • 12.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | “Quanto % do tempo o sistema deve ficar no ar?” 13
  • 13.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | “100%, é claro!” 14
  • 14.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | “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 processos+ferramentas para a operação” 15
  • 15.
    Copyright © 2016Oracle 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
  • 16.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | “Na camada de banco não é tão simples assim...” 17
  • 17.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 18 Xiii... Lá vem esse cara complicar...
  • 18.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Standalone Clusterizado 19 Problemas diferentes
  • 19.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | mysql.com/why-mysql/white-papers/mysql_wp_ha_strategy_guide.php Escolhendo a melhor solução para sua necessidade
  • 20.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 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) 6. Implantar procedimentos operacionais para contingência 21
  • 21.
    Copyright © 2016Oracle 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 22
  • 22.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Agenda 1. Alta disponibilidade (HA) – conceitos básicos 2. Arquiteturas e topologias de HA para MySQL 3. Monitoramento e gerenciamento
  • 23.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Sem alta disponibilidade “Topologia” Stand-Alone 24 MySQL Importante! Backup No-Break Duplicidade disco Duplicidade rede Etc.
  • 24.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Sem alta disponibilidade “Topologia” Stand-Alone Data Access (mysqld) Data (Storage/HD/SDD) App Servers Database connection 25
  • 25.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Sem alta disponibilidade no Banco de Dados Topologia com redundância apenas na Aplicação Data Access (mysqld) Data (Storage/HD/SDD) App Servers Database connections 26
  • 26.
    Copyright © 2016Oracle 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 27 Ativo Passivo
  • 27.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | • Oracle Clusterware é o core do Oracle RAC – Para MySQL, funciona no modo Ativo/Passivo • Oracle Cluster 12c inclui o MySQL Server 5.6 agent • Paradas programadas ou failover automático – Transparente para a aplicação 30/07/2016 MySQL Enterprise Edition + Oracle Clusterware 28
  • 28.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Alta disponibilidade com possibilidade do uso do Slave para outras atividades Topologia com Replicação Simples (Master-Slave) 29 Master Read-write Slave Read-only Replicação nativa do MySQL Escrita Leitura
  • 29.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Alta disponibilidade com possibilidade do uso do Slave para outras atividades Topologia com redundância via Replicação Master-Slave Slave read-only (mysqld) Data (Storage/HD/SDD) App Servers Database connections 30 Read-write Read-only Replicação nativa Master read-write (mysqld)
  • 30.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Replicação em 5 minutos Monte seu lab e comece a brincar • [blog post] http://www.alastori.com.br/2015/02/tuto rial-replicacao-mysql-em-5-minutos.html
  • 31.
    Copyright © 2016Oracle 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 32 Crie novos Slaves online https://dev.mysql.com/doc/mysql-enterprise-backup/4.0/en/advanced.slave.html
  • 32.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Replicação Semi-síncrona para evitar perda de dados Topologias resilientes 33 Master Slave ACK = Confirmação de recebimento dos pacotes Importante! Há configurações adicionais para tornar a replicação crash-safe
  • 33.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 34 Analogia 34 Carta Simples Carta AR Intimação Judicial Assíncrona sem confirmação do recebimento Semi-síncrona confirmado recebimento, mas ainda não “processada” Síncrona confirmado recebimento e processamento (commit)
  • 34.
    Copyright © 2016Oracle 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 35 Master Slave 1 (local) Primeira opção de failover (sempre mais atualizado) Slave 2 (remoto) Segunda opção de failover
  • 35.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Grandes usuários MySQL usam a replicação 36 Web, Cloud, Distribuído e Embarcado…
  • 36.
    Copyright © 2016Oracle 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 – Read-write split
  • 37.
    Copyright © 2016Oracle 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 – Read-write split
  • 38.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Contingência em caso de falhas ou manutenção programada Topologia Replicação Simples Slave read-only (mysqld) Data (Storage/HD/SDD) App Servers Database connections 39 Read-write Read-only Master read-write (mysqld)
  • 39.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Contingência em caso de falhas do Master Topologia Replicação Simples Novo Master read-write (mysqld) Data (Storage/HD/SDD) App Servers Database connections Failover novas rotas para as conexões com o MySQL manual ou automático
  • 40.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Contingência em caso de falhas ou manutenção programada Topologia Replicação Simples Slave read-only (mysqld) Data (Storage/HD/SDD) App Servers Database connections 41 Read-write Read-only Master read-write (mysqld)
  • 41.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Contingência em caso de manutenção programada do Master Topologia Replicação Simples Temporary Master read-write (mysqld) Data (Storage/HD/SDD) App Servers Database connections 42 Read-write Inativo Em Manutenção replicação parada Switchover conexões roteadas para outro servidor durante manutenção programada
  • 42.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Componentes para Roteamento de conexões 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 connector ou router
  • 43.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Componentes para Roteamento de conexões 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 connector ou router
  • 44.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Não recomendado uso como Master-Master: sem resolução de conflitos Topologia de Replicação Cruzada + MySQL Router 45 Master “read-write” (hot stand-by) Data (Storage/HD/SDD) App Servers MySQL Router Read-write Read-only Master read-write (ativo) Heartbeat
  • 45.
    Copyright © 2016Oracle 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 • 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 – use GTID, ROW BASED REPLICATION auto_increment_offset e auto_increment_increment para evitar problemas • É importante monitorar e se ambos servidores estão recebendo escritas, deve-se agir rapidamente para diminuir chances de inconsistências. 46
  • 46.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Componentes para Roteamento de conexões 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 connector ou router
  • 47.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Failover automático ou manual e automatizado para o primeiro disponível MySQL Utilities para HA – mysqlfailover ou MySQL Fabric Slave read-only (mysqld) Data (Storage/HD/SDD) App Servers Database connections 48 Read-write Read-only Master read-write (mysqld) MySQL Utilities
  • 48.
    Copyright © 2016Oracle 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 [...] 49 mysqlfailover dev.mysql.com/doc/mysql-utilities/1.6/en/mysqlfailover.html
  • 49.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 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 50 mysqlfailover dev.mysql.com/doc/mysql-utilities/1.6/en/mysqlfailover.html
  • 50.
    Copyright © 2016Oracle 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 – Read-write split
  • 51.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Menor tempo em backups e restores, menos downtime MySQL Enterprise Backup
  • 52.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Backup no Slave Topologia Replicação Simples Slave parado (mysqld) Data (Storage/HD/SDD) App Servers Database connections 53 Read-write Inativo Master read-write (mysqld) Backup STOP SLAVE Cópia dos dados START SLAVE
  • 53.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Usada como solução de Backup Topologia com Replicação Atrasada 54 Master Slave para failover/switchover Slave com Atraso Caso típico = falha humana Delay CHANGE MASTER TO MASTER_DELAY = N;
  • 54.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Usada em conjunto com backup para Point-In-Time-Recovery Live Backup com mysqlbinlog 55 Master Slave para failover/switchover mysqlbinlog --read-from-remote-server --host=host_name –raw --stop-never https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog-backup.html
  • 55.
    Copyright © 2016Oracle 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 – Read-write split
  • 56.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Geo-redundância para Disaster Recovery Topologias com múltiplos slaves 57 Site 1 Master Site 2 Slave Ativo Passivo
  • 57.
    Copyright © 2016Oracle 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 – Read-write split
  • 58.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Dado mais próximo do cliente para Leituras Topologias com múltiplos slaves 59 Master read-write Slave 1 read-only Réplica do Master Slave 2 read-only Réplica do Master Slave 3 read-only Réplica do Slave 1
  • 59.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Consolidação de Múltiplos Masters em um Slave Replicação Multi-Source: mais flexibilidade nas topologias 60 Slave Master 3 read-write Master 2 read-write Master 1 read-write
  • 60.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Restrições e recomendações para Replicação • 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 crash- recovery e provisionamento via MEB • Failover automático requer GTID e Row Format • A replicação do NDB Cluster é diferente da replicação convencional e ocorre na camada de dados
  • 61.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 62 Group Replication: multi-master Ativo-Ativo Router App Virtually Synchronous Replication App App labs.mysql.com
  • 62.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Exemplos de uso da Replicação do NDB Cluster • Redundância dos dados – Ativo-Ativo • Escalabilidade de Leituras – Consistência forte, load balancing • Escalabilidade de Escritas – Auto-sharding • Geo-replicação
  • 63.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 64 MySQL Cluster: Escalabilidade de Escritas
  • 64.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 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 Zero-Loss During Failure Config. Yes Config. Yes
  • 65.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Agenda 1. Alta disponibilidade (HA) – conceitos básicos 2. Arquiteturas e topologias de HA para MySQL 3. Monitoramento e gerenciamento
  • 66.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 67
  • 67.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 68
  • 68.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 69
  • 69.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 70
  • 70.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 71
  • 71.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. |
  • 72.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 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 Topology and Change Master Role – 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? – How To Fix Errant Transactions on the Replication Topology? 73 dev.mysql.com/doc/mysql-utilities/1.6/en/mysql-utils-ha.html
  • 73.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | MySQL Utilities – Exemplo switchover shell> mysqlrpladmin --master=root@server2:3312 --slaves=root@server2:3313,root@server4:3314,root@server5:3315 --rpl-user=rpl:rpl --new-master=root@server1:3311 --demote-master switchover # Checking privileges. # Performing switchover from master at server2:3312 to slave at server1:3311. # Checking candidate slave prerequisites. # Checking slaves configuration to master. # Waiting for slaves to catch up to old master. # Stopping slaves. # Performing STOP on all slaves. ... 74 dev.mysql.com/doc/mysql-utilities/1.6/en/mysql-utils-ha.html
  • 74.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | MySQL Utilities – Exemplo switchover ... # Switchover complete. # Replication Topology Health: +----------+-------+---------+--------+------------+---------+ | host | port | role | state | gtid_mode | health | +----------+-------+---------+--------+------------+---------+ | server1 | 3311 | MASTER | UP | ON | OK | | server2 | 3312 | SLAVE | UP | ON | OK | | server3 | 3313 | SLAVE | UP | ON | OK | | server4 | 3314 | SLAVE | UP | ON | OK | | server5 | 3315 | SLAVE | UP | ON | OK | +----------+-------+---------+--------+------------+---------+ 75
  • 75.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | MySQL Enterprise Edition Suporte + Base de Conhecimento + Hot Backup + Monitor + Oracle EM + Workbench + Plug-ins Escalabilidade Autenticação Firewall Auditoria novo TDE Criptografia MySQL Enterprise Monitor Oracle EM for MySQL Plug-ins Suporte Hot Backup Monitor & Workbench
  • 76.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | 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 e topologias, faça a melhor escolha!
  • 77.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | @MySQLBR meetup.com/MySQL-BRfacebook.com/MySQLBR pt.planet.mysql.com
  • 78.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Obrigado!
  • 79.
    Copyright © 2016Oracle and/or its affiliates. All rights reserved. | Perguntas? Alta Disponibilidade no MySQL 5.7 Contato: airton.lastori@oracle.com twitter.com/mysqlbr facebook.com/mysqlbr