Alta Disponibilidade como Alternativa ao Uso de Servidores BDC em Ambientes Samba
Alta-disponibilidade com MySQL
-
Upload
mysql-brasil -
Category
Technology
-
view
614 -
download
0
description
Transcript of Alta-disponibilidade com MySQL
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 1
Airton Lastori [email protected]
Mai-2014
Alta-disponibilidade com MySQL
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 2
@MySQLBR
meetup.com/MySQL-BR
facebook.com/MySQLBR
MySQLBR
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 3
Agenda
Opções de Alta-disponibilidade
Práticas Operacionais
O que é o MySQL Cluster? Como funciona?
Como começar com MySQL Cluster
Perguntas?
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 4
Alta-Disponibilidade
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 6
Alta-Disponibilidade: soluções homologadas
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 8
Replicação MySQL
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 9
Aplicação
Master Slave
• Modelo assíncrono (padrão)
• Modelo semi-síncrono (a partir da versão 5.5)
Escritas & Leituras
Replicação MySQL
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 10
Aplicação
Master Slave
• Master down
• Slave promovido para Master
Escritas & Leituras
MySQL failover
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 11
Permite self-healing
Failover & recovery automatizado
- mysqlfailover (Utilitário)
Switchover & administração
- mysqlrpladmin (Utilitário)
Alta disponibilidade com MySQL core
- Elimina necessidade de soluções de
terceiros
- Fácil de estender
HA Utilities Monitoramento
Master
Falhou
Slaves
Slave
Promovido
para Master
Disponibilidade com Replicação no MySQL 5.6 Replication HA Utilities (Python)
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 12
Replicação MySQL: escalando LEITURAS
• Divisão de leituras e escritas (R/W Split)
• É possível adicionar mais slaves, dividir a carga
Leituras
Aplicação
Master Slave
Escritas & Leituras
…
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 13
Clustering e Virtualização
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 14
• Soluções homologadas e suportadas pela Oracle MySQL – Oracle VM Template
– Windows Failover Clustering
– Oracle Solaris Cluster
Clusterização baseada em Shared-Storage
VIP
Clie
nts
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 15
Oracle VM Servers
Oracle VM Server Pool
ocfs2
Oracle VM
Manager
SAN / iSCSI
Secure Live
Migration (SSL)
Oracle
VM
Automatic Fault
Detection &
Recovery
Oracle
VM
mysql.com/why-mysql/white-papers/mysql_wp_oracle-vm-template-for-mee.php
• Oracle Linux
• Oracle VM
• Oracle VM Template for MySQL EE
• Oracle Cluster File System 2
(OCFS2)
• MySQL Database 5.5 Enterprise
Edition
Pré-instalado & Configurado
Integrado & Testado
Suporte de um único fornecedor
Oracle VM Template for MySQL Enterprise
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 16
oracle.com/technetwork/server-storage/solaris-cluster/overview/index.html
• Heartbeat e monitoramento
baseado no Kernel
• SPARC e x86. Solaris
Virtualization-aware
• Agente MySQL incluíd o no
Oracle Solaris Cluster
Oracle Solaris Clustering
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 17
Opção nativa do Windows certificada para MySQL Enterprise
Para Falhas ou Manutenção Planejada
Cluster gerenciado pela interface snap-in MS Failover Cluster
Management*, não requer scripts customizados
Perda de serviço = alguns segundos + tempo de recovery do
InnoDB:
• Aplicação vê temporariamente uma perda de conexão e reconecta no
mesmo IP
• Slave na Replicação recupera-se automaticamente
Quorum (3o voto), dados (InnoDB + schema) & binários (opcional)
em armazenamento compartilhado
• teste com iSCSI & FCAL
*suporte técnico do componente MS Failover Cluster Management deve ser contratado da Microsoft
App
Virtual IP
Data Bin
Slave App App
Vote
Windows Server Failover Clustering
mysql.com/why-mysql/white-papers/mysql_wp_windows_failover_clustering.php
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 18
mysql.com/why-mysql/white-papers/mysql_wp_drbd.php
• Certificado e completamente suportado pela
Oracle
• DRBD integrado ao Oracle Linux Unbreakable
Enterprise Kernel R2
• Pacemaker e Corosync para clustering &
failover
• Updates na pilha via ULN channel
• Baseado em storage distribuído, não requer
SAN
• Replicação síncrona elimina o risco de perda
de dados
• Maduro & já utilizado em muitos casos
Oracle Linux + DRBD Stack
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 19
MySQL Cluster
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 20
Clients
Application Layer
Management
MySQL Cluster
Management
Data Layer
ndbd ndbd ndbd ndbd
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 21
Soluções certificadas MySQL HA: resumo
mysql.com/why-mysql/white-papers/mysql_wp_ha_strategy_guide.php
MySQL 5.6
Replication
Windows
Cluster
Solaris
Cluster
Oracle VM
Template DRBD
MySQL
Cluster
Nível de disponibilidade 99.9% 99.95% 99.99% 99.99% 99.99% 99.999%
Auto-Failover ✔ ✔ ✔ ✔ ✔ ✔
Sem perda de dados durante
failover ✔
Semi-Sync ✔ ✔ ✔ ✔ ✔
Plataformas suportadas All Windows Solaris Linux Linux All
Modo de clusterização Master +
Slaves
Active /
Passive
Active /
Passive
Active /
Passive
Active /
Passive
Multi-
Master
Dispensa Shared Storage ✔ ✖ ✖ ✖ ✔ ✔
Ponto único de suporte ✔ ✖ ✔ ✔ ✔ ✔
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 22
Mais sobre Opções de Alta-Disponibilidade
Whitepaper:
MySQL Guide to High Availability Solutions
August 2013
mysql.com/why-mysql/white-papers/mysql-
guide-to-high-availability-solutions
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 23
Em breve…
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 24
MySQL Fabric 1.4 RC (MySQL Utilities 1.4.2)
Alta disponibilidade:
– Monitoramento do Server com failover
automático e transparente para aplicação
Conectores devem ser “Fabric-aware”:
– Java, PHP, Python
Sem Proxy, sem latencia extra e SPoF
Escalabilidade de escrita com sharding:
– Aplicação define a shard key (Range ou
Hash)
– Ferramentas para re-sharding
– Tabelas globais & global updates
Alta-disponibilidade + escalabilidade de escrita com sharding
MySQL Fabric
Connector
Application
Read-slaves
SQL
Master group
Read-slaves
Master group
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 25
Soluções de HA homologadas pela Oracle
MySQL
Replication
MySQL
Fabric
Oracle VM
Template
Solaris
Cluster
Windows
Cluster DRBD
MySQL
Cluster
Clustering Mode Master +
Slaves
Master +
Slaves
Active/Pass
ive
Active/Pass
ive
Active/Passi
ve
Active/Pa
ssive
Multi-
Master
App Auto-Failover ✖ ✔ ✔ ✔ ✔ ✔ ✔
Data Layer Auto-Failover ✖ ✔ ✔ ✔ ✔ ✔ ✔
Zero Data Loss MySQL 5.7 ✔ ✔ ✔ ✔ ✔ ✔
Failover Time N/A Secs Secs + Secs + Secs + Secs + < 1 Sec
Scale-out Reads ✔ ✖ ✖ ✖ ✖ ✔
Cross-shard operations N/A ✖ N/A N/A N/A N/A ✔
Transparent routing ✖ For HA ✔ ✔ ✔ ✔ ✔
Shared Nothing ✔ ✔ ✖ ✖ ✖ ✔ ✔
Storage Engine InnoDB InnoDB InnoDB InnoDB InnoDB InnoDB NDB
Single Vendor Support ✔ ✔ ✔ ✔ ✖ ✔ ✔
Platform Support All All Linux Solaris Windows Linux All
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 26
http://www.oracle.com/technetwork/database/database-
technologies/clusterware/downloads/index.html
MySQL Grid Control Agent for Clusterware
Oracle Clusterware
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 27
Práticas Operacionais
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 28
Pessoas 40%
Processos 40%
Produtos 20%
Por que há indisponibilidade não planejada?
gartner.com/DisplayDocument?id=334197
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 29
Pessoas 40%
Processos 40%
Produtos 20%
Reduzindo indisponibilidade
soluções
certificadas
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 30
Pessoas 40%
Processos 40%
Produtos 20%
Reduzindo indisponibilidade
+automação
+conhecimento
+automação
+ferramentas
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 31
Acesso direto 24 x 7 x 365
Número ilimitado de incidentes
Base de conhecimento
Suporte Consultivo
Tradução para o Português
Hot Fixes para Bugs
Releases de manutenção do MySQL
Maior time de especialistas MySQL no mundo
Suportados pelos próprios Desenvolvedores do MySQL
"The rep that assisted me was simply
outstanding. He immediately
recognized the cause of my problem
and provided the resolution.”
mysql.com/support/quotes
Oracle Premier Support para MySQL Engenheiros MySQL como parte do seu time
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 32
MySQL Enterprise Monitor 3.0
Monitoramento em tempo real da performance e disponibilidade
Encontre e corrija problemas visualmente
Monitore discos e faça capacity planning
Comece a monitorar em 10 minutos
Arquitetura que não exige agentes
Agente remoto monitora SO
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 33
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 34
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 35
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 36
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 37
Explain Query
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 38
QRTi Query Response Time Index
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 39
Eventos
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 40
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 41
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 42
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 43
Advisors
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 44
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 45
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 46
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 47
Capacity Planning
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 48
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 49
MySQL Enterprise Backup
Backup online para InnoDB
Backups completos, incrementais, parciais (automatizados via script)
Compressão
Opções de Recovery: Point in Time, Completo, Parcial
Metadados de status, progresso e histórico
Tamanho ilimitado do BD
Multi-Plataforma
Windows, Linux, Unix
Certificado para Oracle Secure Backup, compatível SBT
MEB Backup
Files
MySQL Database
Files
mysqlbackup
Backup e Recovery mais rápidos e online.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 50
MySQL Enterprise Backup Menor tempo em backups e restores, menos downtime
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 51
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 52
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 53
MySQL Enterprise Edition Subscrição com renovação anual: ferramentas + serviços
Plug-ins
Suporte
Backup
Monitor & Workbench
Escalabilidade
Segurança
Auditoria
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 54
O que é o MySQL Cluster?
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 55
MySQL Cluster
• Escalabilidade linear de Escritas e Leituras
• Elasticidade, crescimento incremental, distrib. simétrica Escalabilidade
• 99,999% de disponibilidade, 5min / ano
• Self-healing, failover menor que 1s, geo-replicação Alta Disponibilidade
• Performance em tempo real, in-memory e em disco
• Latência baixa e preditiva, acessos paralelos Alta Performance
• Modelo relacional ACID, SQL e Foreign Keys
• APIs NoSQL (C++, Java, Memcached, Node.js) Flexibilidade
• Open Source, suporte e ferramentas comerciais opcionais
• Hardware commodity Baixo TCO
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 56
Monty, David e Allan:
UNIREG,MyISAM e mSQL.
Interface SQL com
Arquitetura Plugável.
Surge a MySQL AB.
Mais performance,
drivers, engines.
GPL, LAMP Stack.
Cresce o ecossistema.
Versão 3.
Logo e website.
InnoDB para
transações ACID.
Vale do Silício.
Versão 4.
MySQL Cluster é adquirido da Alzato-Ericsson
pela MySQL AB.
Versão 5.
InnoBase OY é adquirida pela
Oracle.
MySQL AB é adquirida pela
Sun.
Ferramentas Enterprise.
Sun Microsystems é adquirida pela
Oracle.
Versões 5.5, 5.6 e Cluster
7.1, 7.2 e 7.3.
’85…
…’94
’95…
…’96 ’97…
…’00
’01…
…’02
’03…
…’04
’05…
…’09
’10…
…’13
Histórico do MySQL
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 58
Enterprise Management
Services and Utilities
Backup & Recovery
Monitor
Workbench
Utilities
Connection Pool, SQL Interface, Parser, Optimizer, Caches
Clients & Connectors Native C API, JDBC, ODBC, .Net, PHP, Ruby, Python, VB, Perl mysqld
Clients and Apps
Arquitetura MySQL Server
Storage Engines
InnoDB, MyISAM, Memory, Archive, Cluster (NDB API), etc…
Filesystems, Files & Logs
Data, Index, Logs…
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 59
Cluster Data Nodes
NDB NDB
Connection Pool, SQL Interface, Parser, Optimizer, Caches
Enterprise Management
Services and Utilities
Backup & Recovery
Monitor
Workbench
Utilities
Clients & Connectors Native C API, JDBC, ODBC, .Net, PHP, Ruby, Python, VB, Perl
Arquitetura MySQL Cluster
Storage Engines
InnoDB, MyISAM, Memory, Archive, Cluster (NDB API), etc…
Filesystems, Files & Logs
Data, Index, Logs…
mysqld
Clients and Apps
ndbd
mgm_ndbd
Management
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 60
Storage Engines
MyISAM InnoDB NDB Cluster
Transações ✖ ✔ ✔
Nível de Lock Tabela Linha Linha
Replicação Assíncrona ou
Semi-síncrona
Assíncrona ou
Semi-síncrona, crash-safe
Síncrona, Multi-master,
crash-safe sem SPOF
Foreign Keys ✖ ✔ ✔
Full-text indexes ✔ ✔ ✖
Compressão de dados somente Leitura ✔ ✖
Caches somente Índices Dados e Índices Dados e Índices
Suporte Geoespacial Tipos de Dados e Índices somente Tipos de Dados somente Tipos de Dados
Limite de armazenamento 256TB 64TB 384EB (~3TB em RAM)
dev.mysql.com/doc/refman/5.5/en/storage-engines.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 61
Clients
Application Layer
Management
Arquitetura do MySQL Cluster
Management
Data Layer
ndbd ndbd ndbd ndbd
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 62
O que NÃO é o MySQL Cluster
1. SGBD de uso geral, “bala de prata”
• Tabelas NDB ainda não são recomendadas para todos tipos de aplicações / workloads
• NDB ainda não é 100% compatível com InnoDB, mas podem ser usados em conjunto
• MySQL Cluster requer relativamente mais memória RAM
2. Cluster do tipo Shared-All que requer Shared Storage
• Como, por exemplo, Oracle RAC
• Cada Data Node tem sua unidade de armazenamento independente
3. Replicação tradicional do MySQL Server
• MySQL Cluster possui seu próprio mecanismo interno de replicação síncrona
• Também pode ser usado opcionalmente em conjunto com replicação externa tradicional do MySQL
4. “Apenas” o MySQL Server (mysqld)
• MySQL Cluster possui outros componentes: ndbd, ndb_mgmd
5. Produto de código fechado
• Possui edição community (GPL) e carrier-grade edition (suporte e ferramentas comerciais)
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 63
Tabelas InnoDB vs NDB Cluster
dev.mysql.com/doc/refman/5.6/en/mysql-cluster-compared.html
Preferível InnoDB
• Datasets ou linhas muito grandes, muitos BLOBs, tabelas histórico, fulltext search
• Memória RAM mais limitada
• Transações muito longas ou com isolamento diferente de READ COMMITTED
• Foreign keys sob uso intensivo
• Muitos full table scans, queries analíticas
Preferível NDB Cluster
• Escalabilidade de escrita, multi-master, auto-sharding
• 99,999% uptime com operações online: adição de nós, upgrade, manutenção do esquema
• Baixa latência para transações mais curtas, performance tempo-real, paralelismo
• APIs NoSQL schemaless: Java, node.js, REST, C++, memcached
• Uso limitado de colunas BLOB
• Foreign keys são suportadas, porém podem causar impacto na performance em condições extremas
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 64
NDB + InnoDB
Replicação
Síncrona
Replicação
Assíncrona
NDB API
NDB Cluster Data Nodes
MySQL Cluster
InnoDB
local
InnoDB
externo
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 65
Replicação
síncrona
Replicação
assíncrona
InnoDB + NDB Cluster Opções com Geo-Replicação
Replicação síncrona entre os grupos de nós para HA
Geo-Replicação assíncrona ou síncrona entre
nós remotos NDB para
redundância geográfica
Replicação assíncrona entre Storage Engines
diferentes para aplicações
especializadas como geração
de relatórios
Cluster 1
InnoDB InnoDB InnoDB
Cluster 2
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 66
Alguns Clientes MySQL Cluster
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 67
sistema de recomendações de games casuais que identifica o visitante e exibe conteúdo direcionado ao seu perfil
já nos testes, com 2 data nodes, capacidade de 87k INSERTs por segundo e 3k SELECTs por segundo
latência extremamente baixa (sub-milisegundos) e alta-disponibilidade
NoSQL ClusterJ API (Java)
Caso de Sucesso
MySQL Cluster
“As a strategic project, we couldn’t afford to take
any chances. MySQL Cluster provided us with a
proven and trusted solution to meet the
demands of both our business and our users.”
Sean Chighizola
Database Director, Big Fish
mysql.com/why-mysql/case-studies/mysql-cs-bigfish.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 68
sistema global de detecção de fraudes que monitora transações financeiras, sessões dos usuários e histórico em tempo real
Trabalha com mais de 100TB e 100m de usuários, transações ACID, R/W <1 segundo em qualquer parte do mundo com geo-replicação
Escalabilidade linear com 99,999% de disponibilidade, na nuvem AWS
Caso de Sucesso
ACID em tempo real
“Technologies such as MySQL Cluster enables
users to get the best of both world’s: the agility of
NoSQL systems with the trust, maturity and
reliability of the SQL model.”
Daniel Austin
Chief Architect, Paypal
mysql.com/customers/view/?id=1223
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 69
Social game para Facebook
2 milhões usuários, com +30k
novos usuários por dia
10K usuários concorrentes,
~10K TPS
99.999% uptime
Caso de Sucesso
Online Games
“The MySQL support service has been essential
in helping us for troubleshooting and giving
recommendations for the production cluster.”
Carlos Morales
DBA, playfulplay.com
blogs.oracle.com/MySQL/entry/mysql_cluster_powers_el_chavo
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 70
MySQL Cluster
Customers
mysql.com/customers/cluster
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 71
Mais sobre como começar com MySQL Cluster
Whitepaper:
MySQL Cluster Evaluation Guide
June 2013
mysql.com/why-mysql/white-papers/mysql-
cluster-evaluation-guide
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 72
Como começar a usar
o MySQL Cluster?
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 73
MySQL Cluster Auto-Install
downloads.mysql.com/tutorials/cluster/mysql_wp_cluster_quickstart.pdf
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 74
1. Download MCM/Cluster edelivery.oracle.com:
2. Unzip e execute o comando com usuário diferente de root:
MySQL Cluster Manager Para testes em uma única máquina
C:\MySQL\mcm\bin> mcmd --bootstrap
MySQL Cluster Manager 1.1.2 started
Connect to MySQL Cluster Manager by running “C:\MySQL\mcm\bin\mcm" -a NOVA:1862
Configuring default cluster 'mycluster'...
Starting default cluster 'mycluster'...
Cluster 'mycluster' started successfully
ndb_mgmd NOVA:1186
ndbd NOVA
ndbd NOVA
mysqld NOVA:3306
mysqld NOVA:3307
ndbapi *
Connect to the database by running “C:\MySQL\mcm\cluster\bin\mysql" -h NOVA -P 3306 -u root
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 75
Teste via MySQL Workbench
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 76
Teste via MySQL Workbench 2/2
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 77
Not Only SQL!
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 78
Flexibilidade na interação com os dados
• Escalabilidade linear de Escritas e Leituras
• Elasticidade, crescimento incremental, distrib. simétrica Escalabilidade
• 99.999% de disponibilidade, 5min / ano
• Self-healing, failover menor que 1s, geo-replicação Alta Disponibilidade
• Performance em tempo real, in-memory e em disco
• Latência baixa e preditiva, acessos paralelos Alta Performance
• Modelo relacional ACID, SQL e Foreign Keys
• APIs NoSQL (C++, Java, Memcached, Node.js) Flexibilidade
• Open Source, suporte e ferramentas comerciais opcionais
• Hardware commodity Baixo TCO
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 79
Clients
Application Layer
Management
APIs NoSQL
Management
Data Layer
ndbd ndbd ndbd ndbd
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 80
Os mesmos dados
acessados
simultaneamente
através de interfaces
SQL e NoSQL
APIs de Acesso aos Dados
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 81
Qual API devo usar?
SQL
• Padrão da indústria
• Joins e Queries complexas
• Modelo relacional
ClusterJ / OpenJPA
• ORM Java
• Simplicidade
• Acesso nativo e rápido ao Cluster
• Ex: Web e Telco
memcached
• chave/valor
• Simples de usar
• Driver para diversas linguagens
• Ex: PHP Proxy
node.js
• Javascript
• Mesma tecnologia do browser no lado do servidor
• Ex: Mobile Apps
mod_ndb
• REST/JSON
• HTML
• Uso do Apache httpd
C++
• Performance extrema
• Tempo real
• Desenvolvedor experiente
• Mais baixo nível
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 82
<estado:SP,Campinas>
prefix key value
<estado:SP,Campinas>
key value
Prefix Table Key-col Val-col policy
estado: mapa.cidades sigla_estado cidade cluster
Config tables
sigla_estado ... cidade ...
SP ... Campinas ...
Tabela cidades do DB mapa
visão da Aplicação
visão MySQL Cluster
Cluster & Memcached Schema configurável
SELECT * FROM mapa.cidades
WHERE cidade LIKE ’C%’;
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 83
Exemplos Memcached API
Blog:
Scalable, persistent, HA NoSQL Memcache storage using MySQL
Cluster
15 February 2012
clusterdb.com/mysql-cluster/scalabale-persistent-ha-nosql-memcache-
storage-using-mysql-cluster
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 84
var nosql = require('mysql-js');
var annotations = new
nosql.TableMapping('cidade').apply
ToClass(Cidade);
var dbProperties =
nosql.ConnectionProperties('ndb');
nosql.openSession(dbProperties,
Cidade, annotations, onSession);
Connector modular para
vários back-ends:
• direta com NDB
• via MySQL Server
Novo: Node.js connector 1/4
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 85
var onSession = function(err, session) {
if (err) {console.log(err);
process.exit(0);} else {
var data = new Cidade('Guarulhos',
'SP');
session.persist(data, onInsert, data,
session);
}
};
Novo: Node.js connector 2/4
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 86
var onInsert = function(err, object, session) {
if (err) {console.log(err);} else {
console.log('Inserido: ' +
JSON.stringify(object));
session.find(Cidade,'Guarulhos',
onFind);
}
};
Novo: Node.js connector 3/4
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 87
var onFind = function(err, result) {
if (err) {console.log(err);} else {
console.log('Encontrado: ' +
JSON.stringify(result));
}
process.exit(0);
};
Novo: Node.js connector 4/4
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 88
Exemplos JavaScript / Node.js API
Blog:
MySQL Cluster Tutorial: NoSQL JavaScript Connector for Node.js
17 April 2013
blogs.oracle.com/MySQL/entry/mysql_cluster_tutorial_nosql_api
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 89
Como o MySQL Cluster funciona?
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 90
Data Layer
Application Layer
Management
mgm_ndbd
MySQL Cluster: arquitetura simplificada
mysqld
Clients
MySQL Cluster Data Nodes
ndbd ndbd ndbd ndbd
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 91
Como escalar leituras e escritas?
• Escalabilidade linear de Escritas e Leituras
• Elasticidade, crescimento incremental, distrib. simétrica Escalabilidade
• 99.999% de disponibilidade, 5min / ano
• Self-healing, failover menor que 1s, geo-replicação Alta Disponibilidade
• Performance em tempo real, in-memory e em disco
• Latência baixa e preditiva, acessos paralelos Alta Performance
• Modelo relacional ACID, SQL e Foreign Keys
• APIs NoSQL (C++, Java, Memcached, Node.js) Flexibilidade
• Open Source, suporte e ferramentas comerciais opcionais
• Hardware commodity Baixo TCO
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 92
Data Node 1
Data Node 2
Data Node 3
Data Node 4
Table T1
P2
P3
P4
P1
Data Sharding: escalando ESCRITAS
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 93
Data Node 1
Data Node 2
F1
Data Node 3
Data Node 4
Table T1
P2
P3
P4
P1
Data Sharding: escalando ESCRITAS
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 94
Data Node 1
Data Node 2
F1
F3
Data Node 3
Data Node 4
Table T1
P2
P3
P4
P1
Data Sharding: escalando ESCRITAS
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 95
Data Node 1
Data Node 2
F1
F3
Data Node 3
Data Node 4
F2
Table T1
P2
P3
P4
P1
Data Sharding: escalando ESCRITAS
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 96
Data Node 1
Data Node 2
F1
F3
Data Node 3
Data Node 4
F2
F4
Table T1
P2
P3
P4
P1
Data Sharding: escalando ESCRITAS
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 97
Data Layer
Application Layer
MySQL Cluster: auto-sharding
Table T1
P2
P3
P4
P1 F1
F3
F2
F4
ndbd ndbd ndbd ndbd
Clients
mysqld
Table T1
visão da Aplicação
visão MySQL Cluster
SQL
NDB API
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 98
In-Memory, parallel, AQL, Pushdown Joins
1. Memória RAM mais barata e redes mais rápidas
• Escrever em memória RAM remota é mais rápido que em disco local
2. Múltiplas threads trabalhando em paralelo em diversas máquinas
• Uso de arquiteturas multi-core
3. Adaptative Query Localization
• Queries mais complexas, envolvendo apenas Data Nodes necessários
4. Pushdown Joins
• JOINs resolvidos nos Data Nodes, em paralelo
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 99
NoSQL C++ API, flexaSynch benchmark
30 x Intel E5-2600 Intel Servers, 2 socket, 64GB
ACID Transactions, Synchronous Replication
0
5
10
15
20
25
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
Mil
lio
ns
of
UP
DA
TE
s p
er
Se
co
nd
MySQL Cluster Data Nodes
20 Milhões de UPDATEs / seg
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 100
MySQL Cluster 7.4
Ganho de Performance sobre v7.3
– 47% (Read-Only)
– 38% (Read-Write)
Melhor performance e simplicidade operacional
labs.mysql.com
Restarts mais rápidos dos nós
– Recovering nodes rejoin the cluster
faster
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 101
Como garantir a alta-disponibilidade?
• Escalabilidade linear de Escritas e Leituras
• Elasticidade, crescimento incremental, distrib. simétrica Escalabilidade
• 99.999% de disponibilidade, 5min / ano
• Self-healing, failover menor que 1s, geo-replicação Alta Disponibilidade
• Performance em tempo real, in-memory e em disco
• Latência baixa e preditiva, acessos paralelos Alta Performance
• Modelo relacional ACID, SQL e Foreign Keys
• APIs NoSQL (C++, Java, Memcached, Node.js) Flexibilidade
• Open Source, suporte e ferramentas comerciais opcionais
• Hardware commodity Baixo TCO
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 102
Data Node 1
Data Node 2
F1
F1
Data Node 3
Data Node 4
Table T1
P2
P3
P4
P1
Data Sharding + Replicação
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 103
Data Node 1
Data Node 2
F1 F3
F1
Data Node 3
Data Node 4
Table T1
P2
P3
P4
P1 F3
Data Sharding + Replicação
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 104
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Data Node 4
F2
F2
Table T1
P2
P3
P4
P1
Data Sharding + Replicação
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 105
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Data Node 4
F2 F4
F4 F2
Table T1
P2
P3
P4
P1
Data Sharding + Replicação
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 106
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Data Node 4
F2 F4
F4 F2
Gro
up
1
Table T1
P2
P3
P4
P1
Data Sharding + Replicação
Gro
up
2
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 107
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Data Node 4
F2 F4
F4 F2
Gro
up
1
Table T1
P2
P3
P4
P1
Data Sharding + Replicação
Gro
up
2
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 108
visão da Aplicação
MySQL Cluster Data Nodes
Data Layer
Application Layer
Management
mgm_ndbd
MySQL Cluster: alta-disponibilidade Table T1
F1
F3
F3
F1 F2
F4
F4
F2
Management
mgm_ndbd
mysqld mysqld
ndbd ndbd ndbd ndbd
Clients
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 109
Qual o custo?
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 110
Como manter TCO baixo?
• Escalabilidade linear de Escritas e Leituras
• Elasticidade, crescimento incremental, distrib. simétrica Escalabilidade
• 99.999% de disponibilidade, 5min / ano
• Self-healing, failover menor que 1s, geo-replicação Alta Disponibilidade
• Performance em tempo real, in-memory e em disco
• Latência baixa e preditiva, acessos paralelos Alta Performance
• Modelo relacional ACID, SQL e Foreign Keys
• APIs NoSQL (C++, Java, Memcached, Node.js) Flexibilidade
• Open Source, suporte e ferramentas comerciais opcionais
• Hardware commodity Baixo TCO
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 111
Principais componentes do TCO
1. Custo de aquisição
• Licenciamento do Software (desenvolvimento e produção)
• Hardware necessário
• Conhecimento da equipe
• Produtividade do time de desenvolvimento
2. Custo de manutenção e evolução
• Hospedagem e manutenção do hardware
• Conhecimento da equipe
• Estabilidade e maturidade do software
• Suporte do fabricante
• Produtividade: Ferramentas de gerenciamento, monitoramento e backup
• Produtividade do time de evolução do produto
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 112
MySQL Cluster Carrier-Grade Edition Subscrição com renovação anual: ferramentas + serviços
Escalabilidade
Segurança
Auditoria Cluster
Plug-ins
Suporte
Backup
Monitor & Workbench
Cluster Manager
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 113
Aprenda mais…
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 114
Mais sobre como começar com MySQL Cluster
Whitepaper:
MySQL Cluster Evaluation Guide
June 2013
mysql.com/why-mysql/white-papers/mysql-
cluster-evaluation-guide
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 115
Próximo passo: documentação
Reference Manual
Cap. 17.1, MySQL Cluster Overview
1. MySQL Cluster Core Concepts
2. MySQL Cluster Nodes, Node Groups, Replicas, and Partitions
3. MySQL Cluster Hardware, Software, and Networking
Requirements
4. MySQL Cluster Development History
5. MySQL Server Using InnoDB Compared with MySQL Cluster
6. Known Limitations of MySQL Cluster
dev.mysql.com/doc/refman/5.6/en/mysql-cluster.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 116
Mais sobre como MySQL Cluster para Web
Whitepaper:
Guide to Scaling Web Databases with
MySQL Cluster
June 2013
mysql.com/why-mysql/white-papers/guide-to-
scaling-web-databases-with-mysql-cluster
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 117
MySQL for
Beginners Ed 3
MySQL for Database
Administrators Ed 2
MySQL Performance
Tuning
MySQL High Availability
MySQL Cluster
MySQL DBA
Introduction to
MySQL 5.5
MySQL Developers
Techniques
MySQL for
Beginners Ed 3
MySQL and PHP
Developing Dynamic
Web Applications
MySQL for Developers
Ed 2
MySQL Advanced Stored
Procedures
MySQLDeveloper
education.oracle.com/mysql
Opcional
Necessário
Treinamentos e certificações
Oracle Certified
Associate, MySQL 5
Oracle Certified
Professional, MySQL 5.6
DBA
Oracle Certified Expert,
MySQL Cluster DBA
Certificações
Oracle Certified
Professional, MySQL 5
Developer
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 118
Sumário
Há várias opções certificadas de alta-disponibilidade para MySQL, escolha
aquela que faz sentido para sua aplicação.
O MySQL Cluster é um produto derivado do popular MySQL Server. Trata-se
de um banco de dados distribuído com arquitetura shared-nothing e que
pode oferecer 99,999% de disponibilidade, performance superior a 1 bilhão
de escritas por minuto, escalabilidade linear, conformidade com o modelo
ACID, flexibilidade das interfaces NoSQL e geo-replicação multi-master.
Boas práticas operacionais são muito importantes para uma real alta-
disponibilidade. Conte com a Oracle para implantá-las!
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 119
@MySQLBR facebook.com/MySQLBR Obrigado!
Slides disponíves em…
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 120
Perguntas?
Alta-disponibilidade com MySQL