SlideShare a Scribd company logo
1 of 81
Download to read offline
Alta Disponibilidade
no MySQL 5.7 para
aplicações em PHP
Airton Lastori
airton.lastori@oracle.com
Abril-2016
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. |
Alta disponibilidade
Conceitos básicos
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 6
O chefe
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 7
O Desenvolvedor
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 8
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.”
9
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
“Vamos comprar um NoBreak para o
Servidor e está tudo certo!”
10
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
...
11
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
“Quanto % do tempo o sistema deve
ficar no ar?”
12
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
“100%, é claro!”
13
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”
14
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!”
15
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
“Na camada de banco não é tão simples
assim...”
16
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 17
Xiii... Lá vem esse
cara complicar...
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. |
Alta disponibilidade
Conceitos básicos
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Standalone Clusterizado
20
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
22
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
23
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Arquiteturas e topologias
opções de HA para MySQL 5.7
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
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
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
Ativo
Passivo
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
• 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
01/05/2016
MySQL Enterprise Edition + Oracle Clusterware
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
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. |
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
www.alastori.com.br/2015/02/tutorial-replicacao-mysql-em-5-minutos.html
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Grandes usuários MySQL usam a replicação
33
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
36
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
38
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
39
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
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. |
Qual biblioteca connector você usa?
Oracle Confidential –
42
<?php phpinfo(); ?>
Biblioteca mysqlnd é atual e
recomendada, substituindo a
antiga libmysql.
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
PHP
PHPMemory
PHPStreams
Infrastructure
mysqlnd
MySQL Server
ext/mysql mysqli PDO_mysql
…
PHP Module (Extension) API
PECL/mysqlnd_ms …PECL/mysqlnd_memcache
mysqlnd: Native Driver PHP para MySQL
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Saiba mais sobre Replicação MySQL com PHP e
PECL/mysqlnd_ms
Apresentação no PHP Conference
• [slides]
slideshare.net/MySQLBR/replicao-mysql-e-php
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Failover automático para o primeiro disponível
MySQL Router
Slave “read-only”
(mysqld)
Data (Storage/HD/SDD)
App Servers
MySQL Router
48
Read-write
Read-only
Master read-write
(mysqld)
Heartbeat
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Failover automático para o primeiro disponível
MySQL Router
Novo Master read-write
(mysqld)
Data (Storage/HD/SDD)
App Servers
Connections Routing
49
Read-write
Read-only
Antigo Master falhou
(mysqld)
Inativo
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
50
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
51
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, 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.
52
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Visão geral: mysqlfailover ou MySQL Fabric
MySQL Utilities para HA
Slave read-only
(mysqld)
Data (Storage/HD/SDD)
App Servers
Database connections
53
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 [...]
54
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
55
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. |
Backup no Slave
Topologia Replicação Simples
Slave parado
(mysqld)
Data (Storage/HD/SDD)
App Servers
Database connections
58
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. |
Backup no Slave
Topologia com Replicação Atrasada
Slave parado
(mysqld)
Data (Storage/HD/SDD)
App Servers
Database connections
Master read-write
(mysqld)
59
Read-write
Read-only
Inativo
dev.mysql.com/doc/refman/5.7/en/replication-delayed.html
Delay
CHANGE MASTER TO
MASTER_DELAY = N;
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. |
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
https://dev.mysql.com/doc/mysql-enterprise-backup/4.0/en/advanced.slave.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
63
Site 1
Master
Site 2
Slave
Ativo Passivo
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
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
– Se perdas de dados são inaceitáveis, considere um canal de comunicação eficiente
64
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
Topologias com múltiplos slaves
66
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. |
Dado mais próximo do cliente
Topologias com múltiplos masters
67
Master 1
read-write
Master 3
read-write
Master 2
read-write
Master 4
read-write
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
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
diferentes, é fundamental para colocar restrições locais para garantir que os dados não sejam
acidentalmente atualizados no servidor errado.
– Exemplo: quando necessário atualizar dados de outra unidade, a aplicação tem que se conectar ao MySQL “dono
do dado” e atualizar as informações lá, e não apenas atualizar as informações localmente e esperar o melhor.
68
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
ACK = Confirmação de
recebimento dos pacotes
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 73
Analogia
73
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
74
Master Slave 1
Primeira opção de failover
(sempre mais atualizado)
Slave 2
Segunda opção de failover
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
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
• 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. | 81
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. |
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
Loss During Failure
Config. Low Config. Low
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Monitoramento e Gerenciamento
ambientes de HA bem administrados
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 85
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 86
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 87
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 88
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 89
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?
91
dev.mysql.com/doc/mysql-utilities/1.6/en/mysql-utils-ha.html
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
Oracle Enterprise Manager
for MySQL
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

More Related Content

What's hot

Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseMySQL Brasil
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQLMySQL Brasil
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014MySQL Brasil
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014MySQL Brasil
 
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...MySQL Brasil
 
Oracle Premier Support para MySQL
Oracle Premier Support para MySQLOracle Premier Support para MySQL
Oracle Premier Support para MySQLMySQL Brasil
 
Guia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoGuia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoMySQL Brasil
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQLMySQL Brasil
 
Desenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLDesenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLMySQL Brasil
 
MySQL é de graça?
MySQL é de graça?MySQL é de graça?
MySQL é de graça?MySQL Brasil
 
MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Brasil
 
My sql enterprise vs community
My sql enterprise vs communityMy sql enterprise vs community
My sql enterprise vs communityMySQL Brasil
 
Oracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoOracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoRodrigo Almeida
 
IBTA - Oracle Database Security
IBTA - Oracle Database SecurityIBTA - Oracle Database Security
IBTA - Oracle Database SecurityRodrigo Almeida
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Brasil
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15MySQL Brasil
 
Oracle Exadata
Oracle ExadataOracle Exadata
Oracle ExadataiMasters
 
Desvendando Oracle Exadata X2-2
Desvendando Oracle Exadata X2-2Desvendando Oracle Exadata X2-2
Desvendando Oracle Exadata X2-2Rodrigo Almeida
 

What's hot (20)

Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL Enterprise
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQL
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
 
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
 
Oracle Premier Support para MySQL
Oracle Premier Support para MySQLOracle Premier Support para MySQL
Oracle Premier Support para MySQL
 
Guia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoGuia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produto
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQL
 
Desenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLDesenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQL
 
MySQL é de graça?
MySQL é de graça?MySQL é de graça?
MySQL é de graça?
 
MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta Disponibilidade
 
My sql enterprise vs community
My sql enterprise vs communityMy sql enterprise vs community
My sql enterprise vs community
 
Apresentação MySQL Enterprise
Apresentação MySQL EnterpriseApresentação MySQL Enterprise
Apresentação MySQL Enterprise
 
IDC Summit 2015 - DBaaS
IDC Summit 2015 - DBaaSIDC Summit 2015 - DBaaS
IDC Summit 2015 - DBaaS
 
Oracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoOracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & Migração
 
IBTA - Oracle Database Security
IBTA - Oracle Database SecurityIBTA - Oracle Database Security
IBTA - Oracle Database Security
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15
 
Oracle Exadata
Oracle ExadataOracle Exadata
Oracle Exadata
 
Desvendando Oracle Exadata X2-2
Desvendando Oracle Exadata X2-2Desvendando Oracle Exadata X2-2
Desvendando Oracle Exadata X2-2
 

Similar to Alta Disponibilidade no MySQL 5.7 para aplicações em PHP

Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6MySQL Brasil
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...MySQL Brasil
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014MySQL Brasil
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Ricardo Ferreira
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL Brasil
 
People soft on rac sig.en.pt
People soft on rac sig.en.ptPeople soft on rac sig.en.pt
People soft on rac sig.en.ptsaulfreitas
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Brasil
 
Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -MySQL Brasil
 
2019 - Natura MeetUp - Journey to Cloud and Relational Databases
2019 - Natura MeetUp - Journey to Cloud and Relational Databases2019 - Natura MeetUp - Journey to Cloud and Relational Databases
2019 - Natura MeetUp - Journey to Cloud and Relational DatabasesMarcus Vinicius Miguel Pedro
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasLeonardo Pedroso Costa
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL Brasil
 
SQL Day 2016 - SQL Server x Oracle
SQL Day 2016 - SQL Server x OracleSQL Day 2016 - SQL Server x Oracle
SQL Day 2016 - SQL Server x OracleFlávio Farias
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Project HA
Project HAProject HA
Project HAKarpv
 
Apresentação Apache Tajo
Apresentação Apache TajoApresentação Apache Tajo
Apresentação Apache TajoMichel Michel
 
Sessão Avançada: Amazon Aurora - DAT302 - Sao Paulo Summit
Sessão Avançada: Amazon Aurora -  DAT302 - Sao Paulo SummitSessão Avançada: Amazon Aurora -  DAT302 - Sao Paulo Summit
Sessão Avançada: Amazon Aurora - DAT302 - Sao Paulo SummitAmazon Web Services
 

Similar to Alta Disponibilidade no MySQL 5.7 para aplicações em PHP (20)

Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
 
People soft on rac sig.en.pt
People soft on rac sig.en.ptPeople soft on rac sig.en.pt
People soft on rac sig.en.pt
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -
 
WebSeminario Oracle
WebSeminario OracleWebSeminario Oracle
WebSeminario Oracle
 
2019 - Natura MeetUp - Journey to Cloud and Relational Databases
2019 - Natura MeetUp - Journey to Cloud and Relational Databases2019 - Natura MeetUp - Journey to Cloud and Relational Databases
2019 - Natura MeetUp - Journey to Cloud and Relational Databases
 
Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferenças
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel Contreras
 
SQL Day 2016 - SQL Server x Oracle
SQL Day 2016 - SQL Server x OracleSQL Day 2016 - SQL Server x Oracle
SQL Day 2016 - SQL Server x Oracle
 
Treinamento Data Guard
Treinamento Data GuardTreinamento Data Guard
Treinamento Data Guard
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Project HA
Project HAProject HA
Project HA
 
Paa s evento
Paa s eventoPaa s evento
Paa s evento
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
Apresentação Apache Tajo
Apresentação Apache TajoApresentação Apache Tajo
Apresentação Apache Tajo
 
Sessão Avançada: Amazon Aurora - DAT302 - Sao Paulo Summit
Sessão Avançada: Amazon Aurora -  DAT302 - Sao Paulo SummitSessão Avançada: Amazon Aurora -  DAT302 - Sao Paulo Summit
Sessão Avançada: Amazon Aurora - DAT302 - Sao Paulo Summit
 

More from MySQL Brasil

MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL Brasil
 
MySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL Brasil
 
MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Brasil
 
5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQLMySQL Brasil
 
MySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL Brasil
 
Enabling digital transformation with MySQL
Enabling digital transformation with MySQLEnabling digital transformation with MySQL
Enabling digital transformation with MySQLMySQL Brasil
 
Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7MySQL Brasil
 
NoSQL no MySQL 5.7
NoSQL no MySQL 5.7NoSQL no MySQL 5.7
NoSQL no MySQL 5.7MySQL Brasil
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em StartupsMySQL Brasil
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL Brasil
 
MySQL Enterprise Edition Portfolio
MySQL Enterprise Edition PortfolioMySQL Enterprise Edition Portfolio
MySQL Enterprise Edition PortfolioMySQL Brasil
 
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...MySQL Brasil
 

More from MySQL Brasil (14)

MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017
 
MySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e Uber
 
MySQL 8.0.1 DMR
MySQL 8.0.1 DMRMySQL 8.0.1 DMR
MySQL 8.0.1 DMR
 
MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17
 
5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL
 
MySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL 5.7 como Document Store
MySQL 5.7 como Document Store
 
Enabling digital transformation with MySQL
Enabling digital transformation with MySQLEnabling digital transformation with MySQL
Enabling digital transformation with MySQL
 
Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7
 
NoSQL no MySQL 5.7
NoSQL no MySQL 5.7NoSQL no MySQL 5.7
NoSQL no MySQL 5.7
 
OpenStack & MySQL
OpenStack & MySQLOpenStack & MySQL
OpenStack & MySQL
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15
 
MySQL Enterprise Edition Portfolio
MySQL Enterprise Edition PortfolioMySQL Enterprise Edition Portfolio
MySQL Enterprise Edition Portfolio
 
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
 

Alta Disponibilidade no MySQL 5.7 para aplicações em PHP

  • 1. Alta Disponibilidade no MySQL 5.7 para aplicações em PHP Airton Lastori airton.lastori@oracle.com Abril-2016
  • 2. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | DBA Dev Gerencial, Usuário ou Professor Quem?
  • 3. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Não usa MySQL Usa MySQL sem HA Usa MySQL com HA Quem?
  • 4. 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
  • 5. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Alta disponibilidade Conceitos básicos
  • 6. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 6 O chefe
  • 7. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 7 O Desenvolvedor
  • 8. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 8 O DBA
  • 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.” 9
  • 10. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | “Vamos comprar um NoBreak para o Servidor e está tudo certo!” 10
  • 11. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | ... 11
  • 12. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | “Quanto % do tempo o sistema deve ficar no ar?” 12
  • 13. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | “100%, é claro!” 13
  • 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” 14
  • 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!” 15
  • 16. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | “Na camada de banco não é tão simples assim...” 16
  • 17. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 17 Xiii... Lá vem esse cara complicar...
  • 18. 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
  • 19. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Alta disponibilidade Conceitos básicos
  • 20. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Standalone Clusterizado 20 Problemas diferentes
  • 21. 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
  • 22. 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 22
  • 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 23
  • 24. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Arquiteturas e topologias opções de HA para MySQL 5.7
  • 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 25
  • 26. 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 27
  • 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 Ativo Passivo
  • 28. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | • 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 01/05/2016 MySQL Enterprise Edition + Oracle Clusterware 29
  • 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 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 © 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
  • 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 www.alastori.com.br/2015/02/tutorial-replicacao-mysql-em-5-minutos.html
  • 32. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Grandes usuários MySQL usam a replicação 33 Web, Cloud, Distribuído e Embarcado…
  • 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 – Read-write split
  • 34. 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
  • 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 Slave read-only (mysqld) Data (Storage/HD/SDD) App Servers Database connections 36 Read-write Read-only Master read-write (mysqld)
  • 36. 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
  • 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 Slave read-only (mysqld) Data (Storage/HD/SDD) App Servers Database connections 38 Read-write Read-only Master read-write (mysqld)
  • 38. 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 39 Read-write Inativo Em Manutenção replicação parada Switchover conexões roteadas para outro servidor durante manutenção programada
  • 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 connector ou router
  • 40. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Qual biblioteca connector você usa? Oracle Confidential – 42 <?php phpinfo(); ?> Biblioteca mysqlnd é atual e recomendada, substituindo a antiga libmysql.
  • 41. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | PHP PHPMemory PHPStreams Infrastructure mysqlnd MySQL Server ext/mysql mysqli PDO_mysql … PHP Module (Extension) API PECL/mysqlnd_ms …PECL/mysqlnd_memcache mysqlnd: Native Driver PHP para MySQL
  • 42. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Saiba mais sobre Replicação MySQL com PHP e PECL/mysqlnd_ms Apresentação no PHP Conference • [slides] slideshare.net/MySQLBR/replicao-mysql-e-php
  • 43. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Failover automático para o primeiro disponível MySQL Router Slave “read-only” (mysqld) Data (Storage/HD/SDD) App Servers MySQL Router 48 Read-write Read-only Master read-write (mysqld) Heartbeat
  • 44. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Failover automático para o primeiro disponível MySQL Router Novo Master read-write (mysqld) Data (Storage/HD/SDD) App Servers Connections Routing 49 Read-write Read-only Antigo Master falhou (mysqld) Inativo
  • 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 50
  • 46. 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 51 Master read-write (hot stand-by) Data (Storage/HD/SDD) App Servers MySQL Router Read-write Read-only Master read-write (ativo) Heartbeat
  • 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. 52
  • 48. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Visão geral: mysqlfailover ou MySQL Fabric MySQL Utilities para HA Slave read-only (mysqld) Data (Storage/HD/SDD) App Servers Database connections 53 Read-write Read-only Master read-write (mysqld) MySQL Utilities
  • 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 dev.mysql.com/doc/mysql-utilities/1.6/en/mysqlfailover.html
  • 50. 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 55 mysqlfailover dev.mysql.com/doc/mysql-utilities/1.6/en/mysqlfailover.html
  • 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 – Read-write split
  • 52. 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 58 Read-write Inativo Master read-write (mysqld) Backup STOP SLAVE Cópia dos dados START SLAVE
  • 53. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Backup no Slave Topologia com Replicação Atrasada Slave parado (mysqld) Data (Storage/HD/SDD) App Servers Database connections Master read-write (mysqld) 59 Read-write Read-only Inativo dev.mysql.com/doc/refman/5.7/en/replication-delayed.html Delay CHANGE MASTER TO MASTER_DELAY = N;
  • 54. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Menor tempo em backups e restores, menos downtime MySQL Enterprise Backup
  • 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 https://dev.mysql.com/doc/mysql-enterprise-backup/4.0/en/advanced.slave.html
  • 56. 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
  • 57. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Geo-redundância para Disaster Recovery Topologias com múltiplos slaves 63 Site 1 Master Site 2 Slave Ativo Passivo
  • 58. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 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 – Se perdas de dados são inaceitáveis, considere um canal de comunicação eficiente 64
  • 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 – Read-write split
  • 60. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Dado mais próximo do cliente Topologias com múltiplos slaves 66 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
  • 61. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Dado mais próximo do cliente Topologias com múltiplos masters 67 Master 1 read-write Master 3 read-write Master 2 read-write Master 4 read-write
  • 62. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 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 diferentes, é fundamental para colocar restrições locais para garantir que os dados não sejam acidentalmente atualizados no servidor errado. – Exemplo: quando necessário atualizar dados de outra unidade, a aplicação tem que se conectar ao MySQL “dono do dado” e atualizar as informações lá, e não apenas atualizar as informações localmente e esperar o melhor. 68
  • 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 ACK = Confirmação de recebimento dos pacotes
  • 64. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 73 Analogia 73 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)
  • 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 Segunda opção de failover
  • 66. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 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 • A replicação do NDB Cluster é diferente da replicação convencional e ocorre na camada de dados
  • 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 labs.mysql.com
  • 68. 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 Possibility of Transaction Loss During Failure Config. Low Config. Low
  • 69. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Monitoramento e Gerenciamento ambientes de HA bem administrados
  • 70. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 85
  • 71. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 86
  • 72. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 87
  • 73. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 88
  • 74. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 89
  • 75. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
  • 76. 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? 91 dev.mysql.com/doc/mysql-utilities/1.6/en/mysql-utils-ha.html
  • 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 Oracle Enterprise Manager for MySQL
  • 78. 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!
  • 79. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | @MySQLBR meetup.com/MySQL-BRfacebook.com/MySQLBR pt.planet.mysql.com
  • 80. Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | Obrigado!
  • 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 facebook.com/mysqlbr