alta-disponibilidade com mysql

117
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 1 Airton Lastori [email protected] Mai-2014 Alta-disponibilidade com MySQL

Upload: mysql-brasil

Post on 08-May-2015

614 views

Category:

Technology


0 download

DESCRIPTION

Apresentando as opções de Alta-disponibilidade para MySQL certificadas pela Oracle, considerações sobre práticas operacionais e MySQL Cluster: como funciona e como começar.

TRANSCRIPT

Page 1: 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

Page 2: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 2

@MySQLBR

meetup.com/MySQL-BR

facebook.com/MySQLBR

MySQLBR

Page 3: Alta-disponibilidade com MySQL

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?

Page 4: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 4

Alta-Disponibilidade

Page 5: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 6

Alta-Disponibilidade: soluções homologadas

Page 6: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 8

Replicação MySQL

Page 7: Alta-disponibilidade com 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

Page 8: Alta-disponibilidade com 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

Page 9: Alta-disponibilidade com MySQL

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)

Page 10: Alta-disponibilidade com MySQL

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

Page 11: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 13

Clustering e Virtualização

Page 12: Alta-disponibilidade com MySQL

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

Page 13: Alta-disponibilidade com MySQL

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

Page 15: Alta-disponibilidade com MySQL

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

Page 16: Alta-disponibilidade com MySQL

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

Page 17: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 19

MySQL Cluster

Page 18: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 20

Clients

Application Layer

Management

MySQL Cluster

Management

Data Layer

ndbd ndbd ndbd ndbd

Page 19: Alta-disponibilidade com MySQL

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 ✔ ✖ ✔ ✔ ✔ ✔

Page 20: Alta-disponibilidade com MySQL

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

Page 21: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 23

Em breve…

Page 22: Alta-disponibilidade com MySQL

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

Page 23: Alta-disponibilidade com MySQL

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

Page 24: Alta-disponibilidade com MySQL

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

Page 25: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 27

Práticas Operacionais

Page 26: Alta-disponibilidade com MySQL

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

Page 27: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 29

Pessoas 40%

Processos 40%

Produtos 20%

Reduzindo indisponibilidade

soluções

certificadas

Page 28: Alta-disponibilidade com MySQL

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

Page 29: Alta-disponibilidade com MySQL

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

Page 30: Alta-disponibilidade com MySQL

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

Page 31: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 33

Page 32: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 34

Page 33: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 35

Page 34: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 36

Page 35: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 37

Explain Query

Page 36: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 38

QRTi Query Response Time Index

Page 37: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 39

Eventos

Page 38: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 40

Page 39: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 41

Page 40: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 42

Page 41: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 43

Advisors

Page 42: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 44

Page 43: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 45

Page 44: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 46

Page 45: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 47

Capacity Planning

Page 46: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 48

Page 47: Alta-disponibilidade com MySQL

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.

Page 48: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 50

MySQL Enterprise Backup Menor tempo em backups e restores, menos downtime

Page 49: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 51

Page 50: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 52

Page 51: Alta-disponibilidade com MySQL

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

Page 52: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 54

O que é o MySQL Cluster?

Page 53: Alta-disponibilidade com MySQL

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

Page 54: Alta-disponibilidade com MySQL

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

Page 55: Alta-disponibilidade com 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…

Page 56: Alta-disponibilidade com MySQL

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

Page 57: Alta-disponibilidade com MySQL

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

Page 58: Alta-disponibilidade com MySQL

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

Page 59: Alta-disponibilidade com MySQL

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)

Page 60: Alta-disponibilidade com MySQL

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

Page 61: Alta-disponibilidade com MySQL

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

Page 62: Alta-disponibilidade com MySQL

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

Page 63: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 66

Alguns Clientes MySQL Cluster

Page 64: Alta-disponibilidade com MySQL

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

Page 65: Alta-disponibilidade com MySQL

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

Page 66: Alta-disponibilidade com MySQL

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

Page 67: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 70

MySQL Cluster

Customers

mysql.com/customers/cluster

Page 69: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 72

Como começar a usar

o MySQL Cluster?

Page 70: Alta-disponibilidade com MySQL

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

Page 71: Alta-disponibilidade com MySQL

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

Page 72: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 75

Teste via MySQL Workbench

Page 73: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 76

Teste via MySQL Workbench 2/2

Page 74: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 77

Not Only SQL!

Page 75: Alta-disponibilidade com MySQL

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

Page 76: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 79

Clients

Application Layer

Management

APIs NoSQL

Management

Data Layer

ndbd ndbd ndbd ndbd

Page 77: Alta-disponibilidade com MySQL

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

Page 78: Alta-disponibilidade com MySQL

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

Page 79: Alta-disponibilidade com MySQL

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%’;

Page 80: Alta-disponibilidade com MySQL

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

Page 81: Alta-disponibilidade com MySQL

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

Page 82: Alta-disponibilidade com MySQL

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

Page 83: Alta-disponibilidade com MySQL

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

Page 84: Alta-disponibilidade com MySQL

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

Page 85: Alta-disponibilidade com MySQL

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

Page 86: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 89

Como o MySQL Cluster funciona?

Page 87: Alta-disponibilidade com MySQL

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

Page 88: Alta-disponibilidade com MySQL

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

Page 89: Alta-disponibilidade com MySQL

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

Page 90: Alta-disponibilidade com MySQL

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

Page 91: Alta-disponibilidade com MySQL

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

Page 92: Alta-disponibilidade com MySQL

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

Page 93: Alta-disponibilidade com MySQL

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

Page 94: Alta-disponibilidade com MySQL

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

Page 95: Alta-disponibilidade com MySQL

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

Page 96: Alta-disponibilidade com MySQL

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

Page 97: Alta-disponibilidade com MySQL

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

Page 98: Alta-disponibilidade com MySQL

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

Page 99: Alta-disponibilidade com MySQL

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

Page 100: Alta-disponibilidade com MySQL

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

Page 101: Alta-disponibilidade com MySQL

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

Page 102: Alta-disponibilidade com MySQL

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

Page 103: Alta-disponibilidade com MySQL

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

Page 104: Alta-disponibilidade com MySQL

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

Page 105: Alta-disponibilidade com MySQL

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

Page 106: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 109

Qual o custo?

Page 107: Alta-disponibilidade com MySQL

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

Page 108: Alta-disponibilidade com MySQL

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

Page 109: Alta-disponibilidade com MySQL

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

Page 110: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 113

Aprenda mais…

Page 112: Alta-disponibilidade com MySQL

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

Page 113: Alta-disponibilidade com MySQL

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

Page 114: Alta-disponibilidade com MySQL

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

Page 115: Alta-disponibilidade com MySQL

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!

Page 116: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 119

@MySQLBR facebook.com/MySQLBR Obrigado!

Slides disponíves em…

Page 117: Alta-disponibilidade com MySQL

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 120

Perguntas?

[email protected]

Alta-disponibilidade com MySQL