alta disponibilidade com mysql enterprise
TRANSCRIPT
Alta Disponibilidade com MySQL Enterprise
Airton Lastori [email protected] Maio-2017
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. |
mysql.com/why-mysql/white-papers/mysql-guide-to-high-availability-solutions
Escolhendo a melhor solução para sua necessidade
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Master-Slave
Replicação Simples no MySQL
7
Master Read-write
Slave Read-only
Replicação nativa do MySQL Escrita
Leitura
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Grandes usuários MySQL usam a replicação
8
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. |
Replicação em 5 minutos Monte seu lab e comece a brincar
• [blog post] http://www.alastori.com.br/2015/02/tutorial-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
11
Crie novos Slaves online
https://dev.mysql.com/doc/mysql-enterprise-backup/4.1/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
12
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. | 13
Analogia
13
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
14
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. |
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
15
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
16
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
18
MySQL
Importante! Backup Monitoramento No-Break Duplicidade disco Duplicidade rede Etc.
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. |
Sem alta disponibilidade
“Topologia” Stand-Alone
Data Access (mysqld)
Data (Storage/HD/SDD)
App Servers
Database connection
20
App
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
21
App App
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Arquitetura: replication + router + mysqlfailover
Router
App
VIP
mysqlfailover
Read-write
Read-only
mysqlfailover --master=root@localhost:3331
--discover-slaves-login=root
Failover starting...
# Candidate slave localhost:3332 will become the
new master.
# Preparing candidate for failover.
# Creating replication user if it does not exist.
# Stopping slaves.
# Performing STOP on all slaves.
# Switching slaves to new master.
# Starting slaves.
# Performing START on all slaves.
# Checking slaves for errors.
# Failover complete.
# Discovering slaves for master at localhost:3332
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
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Geo-redundância para Disaster Recovery
Topologias com múltiplos slaves
24
Site 1 Master
Site 2 Slave
Ativo Passivo
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
DC 1 - ativo
Arquitetura: replication + router + mysqlfailover (multi-site)
Router
App
VIP
mysqlfailover
Read-write
Read-only
DC 2 - standby
Router
App
VIP
mysqlfailover
semisync semisync async
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Dado mais próximo do cliente para Leituras
Topologias com múltiplos slaves
26
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
27
Slave
Master 3 read-write
Master 2 read-write
Master 1 read-write
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
MySQL InnoDB Cluster (Novo)
Group Replication
Router Router
App App • Banco de dados replicado altamente
disponível e tolerante a falhas
• Permite topologias Ativo-ativo
• Arquitetura cloud-friendly, shared-nothing, sem storage compartilhado
• Retira a necessidade de gerenciar o failover
• Automatiza reconfiguração e reconexão após falhas
MySQL Shell
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Master-Slave Replication
Replication vs. Group Replication
Group Replication
Router Router Router
App App App
VIP
mysqlfailover
Read-write
Read-only
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
MySQL InnoDB Cluster
1. MySQL Server 5.7.17 ou superior
2. MySQL Shell 1.0.9 ou superior
3. MySQL Router 2.1.3 ou superior
30
Instalação
https://dev.mysql.com/doc/refman/5.7/en/mysql-innodb-cluster-installing.html
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
MySQL InnoDB Cluster
$ mysqlsh
mysql-js> dba.deploySandboxInstance(3310)
mysql-js> dba.deploySandboxInstance(3320)
mysql-js> dba.deploySandboxInstance(3330)
mysql-js> var cluster = dba.createCluster('testCluster')
mysql-js> cluster.addInstance('root@localhost:3320')
mysql-js> cluster.addInstance('root@localhost:3330')
mysql-js> cluster.status()
31
Teste Sandbox
https://dev.mysql.com/doc/refman/5.7/en/mysql-innodb-cluster-getting-started.html
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
MySQL InnoDB Cluster
$ sudo mysqlrouter --bootstrap root@localhost:3310 --user=mysql
...
- Read/Write Connections: localhost:6446
- Read/Only Connections: localhost:6447
...
$ sudo -u mysql mysqlrouter --user=mysql &
32
Teste Sandbox
https://dev.mysql.com/doc/refman/5.7/en/mysql-innodb-cluster-getting-started.html
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
MySQL InnoDB Cluster
$ mysqlsh --uri root@localhost:6446
mysql-js> dba.killSandboxInstance(3310)
mysql-js> \sql
mysql-sql> SELECT @@port;
+--------+
| @@port |
+--------+
| 3330 |
+--------+
1 row in set (0.00 sec)
33
Teste Sandbox
https://dev.mysql.com/doc/refman/5.7/en/mysql-innodb-cluster-getting-started.html
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 34
MySQL Cluster: Escalabilidade de Escritas
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. |
Resumo das opções
Replication Group Replication Cluster Carrier Grade
Edition
Velocidade de failover Média Alta Alta
Consistência de Leitura Fraca Fraca Forte
Escalabilidade Leitura Leitura Leitura+Escrita
Sem perda de dados durante falha
Config. Sim Sim
Facilidade de migração a partir de InnoDB stand-alone
Média Fácil Média
Limite de armazenamento 64TB+ 64TB+ ~3TB
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. | 38
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 39
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 40
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 41
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
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?
44
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 + 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 de arquitetura para HA
3. Entenda os requisitos, compare as possíveis arquiteturas e topologias e faça a melhor escolha
4. Não se esqueça que HA não é só a escolha da arquitetura, procedimentos operacionais são igualmente importantes
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Obrigado!
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Perguntas?
Alta Disponibilidade com MySQL Enterprise Contato: [email protected] twitter.com/mysqlbr facebook.com/mysqlbr