DBA
Dev
Gerencial, Usuário
ou Professor
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Não usa MySQL
Usa MySQL sem
HA
Usa MySQL com
HA
Agenda
1.
Alta disponibilidade (HA) – conceitos básicos
2.
Arquiteturas e topologias de HA para MySQL
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Alta disponibilidade
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.”
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
...
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
“100%, é claro!”
“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
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!”
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 17
Agenda
1.
Alta disponibilidade (HA) – conceitos básicos
2.
Arquiteturas e topologias de HA para MySQL
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Alta disponibilidade
Standalone
Clusterizado
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
mysql.com/why-mysql/white-papers/mysql_wp_ha_strategy_guide.php
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)
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
Arquiteturas e topologias
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
Sem Alta disponibilidade no Banco de Dados
Topologia com redundância apenas na Aplicação
Data Access (mysqld)
App Servers
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
•
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
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Alta disponibilidade no modo Master-Slave
Topologia com redundância via Replicação Simples
Replicação em 5 minutos
Monte seu lab e comece a brincar
•
[blog post]
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;
Grandes usuários MySQL usam a replicação
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
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
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Contingência
em caso de falhas ou manutenção programada
Topologia Replicação Simples
Contingência
em caso de falhas do Master
Topologia Replicação Simples
Novo
Master
read-write
(mysqld)
App Servers
Database connections
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Contingência
em caso de falhas ou manutenção programada
Topologia Replicação Simples
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
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
Qual biblioteca connector você usa?
<?php phpinfo(); ?>
Biblioteca mysqlnd é atual e
recomendada, substituindo a
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
…
Saiba mais sobre Replicação MySQL com PHP e
PECL/mysqlnd_ms
Apresentação no PHP Conference
•
[slides]
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Failover automático
para o primeiro disponível
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
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
Não recomendado uso como Master-Master:
sem resolução de conflitos
Topologia de Replicação Cruzada + MySQL Router
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
.
Visão geral:
mysqlfailover
ou
MySQL Fabric
MySQL Utilities para HA
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
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
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
Backup
no Slave
Topologia Replicação Simples
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Backup
no Slave
Topologia com Replicação Atrasada
Menor tempo em backups e restores, menos downtime
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
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
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Geo-redundância
para Disaster Recovery
Topologias com múltiplos slaves
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
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
Dado mais próximo do cliente
Topologias com múltiplos slaves
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Dado mais próximo do cliente
Topologias com múltiplos masters
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
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
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”
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
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
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 81
Group Replication
: multi-master Ativo-Ativo
Router
App
Virtually Synchronous Replication
App
App
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
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Monitoramento e Gerenciamento
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?
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
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
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
@MySQLBR
facebook.com/MySQLBR
meetup.com/MySQL-BR
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |