mysql para desenvolvedores de produto
DESCRIPTION
Dentro do ciclo de desenvolvimento de um produto há várias atividades que vão desde a seleção da melhor tecnologia até boas práticas de manutenção em ambiente produtivo. Nesta apresentação mostramos algumas novidades do MySQL que ajudarão nestas tarefas associadas ao desenvolvimento de um excelente produto.TRANSCRIPT
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 2
Objetivos
Entender como o MySQL pode ajudá-lo com seu produto
Conhecer as novidades do universo MySQL que podem
ajudar na construção ou migração de um
produto/aplicação
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 3
Ciclo evolutivo do produto/aplicação
Identificação do Mercado e
Modelo de Negócios 1
Análise e Especificação
de Requisitos 2
Arquitetura e
Prototipagem 3
Implementação e Testes 4
Empacotamento e
Distribuição 5
Manutenção Correções e atualizações/migrações 6
n iterações
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 4
Ciclo evolutivo do produto/aplicação
Identificação do Mercado e
Modelo de Negócios 1
Análise e Especificação
de Requisitos 2
Arquitetura e
Prototipagem 3
Implementação e Testes 4
Empacotamento e
Distribuição 5
Manutenção Correções e atualizações/migrações 6
n iterações
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 5
Por que MySQL?
MySQL como parte integral do seu produto
Oracle como Parceira
Investimento Oracle no MySQL
Casos de sucesso
Devo migrar para MySQL?
Visão de Negócios
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 9
Oracle MySQL para ISV e OEM MySQL Community Edition
– Distribuído ao cliente final empacotado
com código aberto de seu produto
– Uso Interno, SaaS, Cloud
MySQL Enterprise Edition
– Uso Interno, SaaS, Cloud
MySQL Comercial (OEM)
– Distribuído ao cliente final empacotado
com código proprietário
Sem suporte e ferramentas Enterprise
Licença perpétua +
19% de suporte anual Suporte Oracle via Parceiro
Subscrição Anual Suporte direto da Oracle
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 10
Tomas Ulin
[video] youtube.com/watch?v=8stNlpJm_nA
[slides] mysql.com/why-
mysql/presentations/raising-the-
mysql-bar
VP de Engenharia do MySQL na Oracle
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 11 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 11
COMPONENTES da pilha
MySQL: Aplicações Web da próxima geração On-Premises, na Nuvem, Aplicações Distribuídas
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 12
Elevando o nível Novamente, um melhor MySQL para vocês
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 13
s
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 15
Compromisso Oracle com MySQL
https://blogs.oracle.com/MySQL/entry/mysql_connect_keynotes_and_news
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 16
Bem-vindo, WebScaleSQL!
Branch do MySQL 5.6, com patches para uso em Escala Web
Investimentos de gigantes da Web para melhorar o MySQL
Ótima notícia para a comunidade e novos desenvolvedores
Ainda mais fácil a cooperação entre Oracle e as gigantes da Web
Facebook, Google, LinkedIn & Twitter!
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 17
Alguns clientes MySQL
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 18
Motivos para migração
otimizar custos e reduzir riscos
– licenciamento, suporte
aumentar faturamento
– expandir base, mudar modelo de negócios / distribuição
outras soluções já não atendem mais tecnicamente (ex. flat file)
portabilidade
facilidade de uso e flexibilidade
escalabilidade e alta-disponibilidade
Quando custos+riscos da migração são compensados pelos ganhos?
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 19
Ciclo evolutivo do produto/aplicação
Identificação do Mercado e
Modelo de Negócios 1
Análise e Especificação
de Requisitos 2
Arquitetura e
Prototipagem 3
Implementação e Testes 4
Empacotamento e
Distribuição 5
Manutenção Correções e atualizações/migrações 6
n iterações
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 20
Qual Banco de Dados devo usar?
Quais as principais características técnicas?
Quem, por que e onde está usando?
Onde posso usar no meu contexto?
Qual o futuro da tecnologia?
Continua em desenvolvimento?
Escolher a tecnologia correta de acordo com requisitos
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 21 Fonte: http://db-engines.com/en/ranking_trend (maio/14)
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 22
Características técnicas do MySQL Lista mais abrangente no site, aqui abordaremos apenas algumas
mysql.com/products/enterprise/techspec.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 23
Onde o MySQL geralmente se encaixa • Novas aplicações e aplicações customizadas Ad-hoc
• principalmente arquitetura Web (ex. LAMP stack)
• arquiteturas inovadoras, NoSQL (versão 5.6 e Cluster 7.2)
• Aplicações híbridas
• expansão de sistemas legados
• MySQL como front-end e Oracle DB como back-end
• Online, SaaS e Mobile
• E-commerce/OLTP e pagamentos digitais
• Gerenciamento de Conteúdo (CMS)
• Redes Sociais, mensagens e colaboração
• Games Sociais e MMO
• SMS, e-marketing
• Datamarts e Relatórios Departamentais
• Embarcadas, Infra Telecom, Infra TI
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 24
Call Detail Records (CDR) para suportar Billing, gestão de dispositivos, troubleshooting de
redes, provisionamento e telemetria.
Transaction Detail Records que é uma variante do CDRs com foco em troubleshooting.
Recomendações Online – Cross-promotion. Coleta várias informações sobre as preferências do
cliente toda vez que ele é “tocado” pela operadora.
Traditional E-Commerce – Carrinho de compra, etc.
D2C (Demand-to-Close) – Essencialmente um workflow que rastreia um “lead” no ciclo de vida
até que ele vire um negócio (cliente).
Call Center Queueing – Normalmente uma aplicação em cima do software do call center da
empresa para gerir o tempo de espera dos seus clientes (McDonalds, Apple, etc)
Customer Care Intranet - O caso da Verizon
Outros usos em Telco
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 25
Desafio Fornecer uma plataforma para os funcionários onde eles poderiam trabalhar em redes sociais, visualizar e hostear microsites,
live streaming de vídeos, blog e divulgar as últimas notícias.
TI decidiu usar o LAMP stack para suportar seu portal 24x7 de missão crítica (Vzweb, Vzwiki e Vztube), com o Drupal como
front-end e MySQL no Linux como o backend, e alguns outros sites internos também em MySQL.
Acessível aos 78.000 funcionários
SLA 99,985%
https://blogs.oracle.com/MySQL/entry/verizon_wireless_supports_its_mission
Solução MySQL 5.5 in 2011
InnoDB store engine
MySQL Enteprise Thread Pooling
Resultado "MySQL é um componente chave em nosso portal, disse Shivinder Singh, DBA sênior da Verizon Wireless. “Alcançamos uma
melhoria de desempenho de 1400% ao passar do store engine de MyISAM para InnoDB, atualizando para a última versão GA
MySQL 5.5, e usando o MySQL Thread Pool para suportar um alto número de conexões simultâneas. MySQL tornou-se parte
de nossa infra-estrutura de TI"
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 26
Desafio Como em qualquer sistema de processamento de pagamentos financeiros, a construção de um sistema altamente confiável
com disponibilidade 24x7 é a primeira prioridade. A Paggo não pode dar ao luxo de perda de dados. Perda de dados resulta em
perda de negócios. A Paggo teve de construir um sistema que poderia crescer e performar conforme novos comerciantes e
compradores cresciam, aumentando as transações. Em cima disso, Paggo é uma startup com um orçamento limitado, então
tivemos que começar pequeno, com a capacidade de escalar a infra-estrutura incrementalmente, sem custos iniciais enormes.
40.000 comerciantes, 1.2 milhões de assinantes e 750.000 transações financeiras/mês
99,999% uptime
Solução MySQL Cluster
Resultado "Paggo não teria sido possível sem o MySQL Cluster. Nenhum outro produto poderia nos dar a capacidade de começar
pequeno, escalar rapidamente e fornecer para o nosso sistema de pagamento financeiro 24x7 disponibilidade."
Cícero Torteli
Fundador, Paggo
http://www.mysql.com/why-mysql/case-studies/paggo-mysql-cluster-java-financial-transactions-over-telecom/
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 27
MySQL Enterprise Monitor 2.2
MySQL Cluster 7.1
MySQL Cluster Manager 1.0
MySQL Workbench 5.2
MySQL Database 5.5
MySQL Enterprise Backup 3.5
MySQL Enterprise Monitor 2.3
MySQL Cluster Manager 1.1
MySQL Enterprise Backup 3.7
All GA!
Oracle VM Template for MySQL
Oracle Products Certifications
MySQL Windows Installer
MySQL Enterprise Security
MySQL Enterprise Scalability
MySQL Cluster 7.2
MySQL Cluster Manager 1.3
MySQL Utilities 1.0.6
MySQL Workbench 6.0
All GA!
MySQL Enterprise Backup 3.10
MySQL Enterprise Audit
MySQL Windows Tools
MySQL Database 5.6
MySQL Cluster 7.3
MySQL Workbench 6.1
MySQL Fabric 1.4 RC
MySQL Database 5.7 DMR
*Development Milestone Release
All GA!
Available Now!
Breve histórico: 2010 - 2014
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 28
5.7 DMR 1 Abril 2013
DMR 2 Set 2013
DMR 3 Dez 2013
DMR 4
Novas funcionalidades
labs.mysql.com Disponível Agora!
...
5.6 GA Fev 2013
Anunciado o MySQL 5.7 DMR 4
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 31
MySQL 5.7: DMR 4
InnoDB: melhor throughput transacional, disponibilidade, IO
Replication: melhor escalabilidade e disponibilidade
Utilities: facilidades para automação e DevOps
Performance Schema: melhores métricas e diagnósticos
Optimizer: melhores tempos nas queries, EXPLAINs, buffering
e particionamento
Connections: taxas mais altas, sessões mais eficientes
O MySQL 5.7 é o MySQL 5.6 + melhorias!
Saiba mais: slideshare.net/MySQLBR/novidades-do-universo-mysql-maioi-2014
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 32
Ciclo evolutivo do produto/aplicação
Identificação do Mercado e
Modelo de Negócios 1
Análise e Especificação
de Requisitos 2
Arquitetura e
Prototipagem 3
Implementação e Testes 4
Empacotamento e
Distribuição 5
Manutenção Correções e atualizações/migrações 6
n iterações
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 33
MySQL é adequado para o meu produto?
Quais conceitos fundamentais para uso correto do MySQL?
Quais plataformas e linguagens posso utilizar?
Quais os limites da tecnologia?
Quais recursos de alta-disponibilidade (HA) e escalabilidade?
Quais recursos de segurança?
Dúvidas técnicas, requisitos não funcionais
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 34
Aplicação + Connector JDBC, ODBC, .Net, PHP, Python, Perl, Ruby, Native C API…
MySQL Database mysqld
Cliente-Servidor
Gerenciamento mysql / monitor / backup
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 35
Aplicação
+
MySQL Database libmysqld
libmysqld
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 36
Client-server vs libmysqld
client-server (embedded, SaaS, Web, etc.)
• Comunica com a aplicação usando MySQL Connectors ou APIs
• Executado como services/daemons ou via linha de comando
• Deve ser incluído como parte da instalação da aplicação
• A instalação e manutenção pode ser invisível ao usuário final
libmysqld (deeply embedded)
• Comunicação restrita a chamadas diretas em C
• Linkado diretamente na aplicação
• Não requer instalação (services/daemons)
• Uso em aplicações com banco de dados auto-contido
• Algumas limitações: mais footprint de memória, sem replicação, UDFs, core dumps, traces, etc.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 37
Plataformas suportadas
Hardware
– 32 e 64 bit x86
– SPARC
Sistemas Operacionais
– Windows
– Linux
– MacOS
– FreeBSD
– Solaris
Maior portabilidade, mais liberdade de escolha
mysql.com/support/supportedplatforms/database.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 38
Amplo suporte a várias linguagens Várias opções de conectores e APIs
Oracle
• Connector/ODBC
• Connector/Net (ADO.NET)
• Connector/Python
• Connector/J (JDBC)
• Connector/C (C API)
• Connector/C++ (C++ API)
• Memcached API
• MySQL for Excel
Comunidade
• PHP
• Perl
• Ruby
• TCL
• Eiffel
• Arduino
• …
dev.mysql.com/doc/refman/5.6/en/connectors-apis.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 39
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. 40
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. 41
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.6/en/storage-engines.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 42
Default Storage Engine InnoDB
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 43
Acesso chave-valor ao InnoDB Via Memcached API
Usa clients Memcached existentes
Sem SQL parsing, ultra-rápido
Acesso SQL e NotOnlySQL Operações chave-valor mas também
queries SQL, JOINs, FKs, etc.
Memcached com Persistência
no InnoDB Método transparente para persistir os
dados em memória volátil
Memcached plug-in no mysqld ,
mapeado à API nativa do InnoDB
Shared process para baixa latência
SQL (MySQL Client)
InnoDB Storage Engine
MySQL Server Memcached plugin
Application/Client
NoSQL (Memcached Prot.)
mysqld
http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached.html
Flexibilidade MySQL 5.6: InnoDB NoSQL com Memcached
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 44
2008
até 4 CPU
MySQL 5.0
MySQL AB
até 16 CPU
MySQL 5.1
Sun
até 32 CPU
MySQL 5.5
Oracle
até 48 CPU
MySQL 5.6
Evolução da escalabilidade do MySQL
2009 2010 2013
Atualize o MySQL e use InnoDB.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 45
MySQL 5.6: GA há 17 meses •Performance: +234% para Leituras e +151% para Escritas, SSD
•Escalabilidade: 48 cores
•Flexibilidade: Memcached API, Full Text
•Disponibilidade: mudanças online no schema, export/import tablespaces
InnoDB
•Performance: até centenas de vezes mais rápido em alguns cenários, estatísticas persistentes
• Instrumentação: EXPLAINS com traces e para UPDATES e DELETES Otimizador
•Performance: ganhos de 2x a 5x com paralelismo e group commit
•Flexibilidade: novas topologias e rastreabilidade com GTIDs
•Disponibilidade: automatização de failover e recovery Replicação
•PERFORMANCE_SCHEMA mais completa Instrumentação
•Segurança
•Facilidade de uso
•Flexibilidade
• ...E MAIS...
Outras melhorias
dev.mysql.com/tech-resources/articles/mysql-5.6-rc.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 46
PERFORMANCE_SCHEMA
Novas configurações padrão, mais adequadas ao hardware atual
Particionamento melhorado
import/export
mais capacidade e performance
seleção explícita
Backup remoto do Binlog
Slaves com atraso programado
Identificador único universal para servidor (server UUID)
TIME/TIMESTAMP/DATETIME
precisão de fração de segundo, CURRENT_TIMESTAMP default /auto update, TIMESTAMP nullable por padrão
GIS: operações espaciais precisas
E MAIS...
Outras melhorias no MySQL 5.6 Mais facilidade de uso e flexibilidade
mysql.com/why-mysql/white-papers/whats-new-mysql-5-6
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 47
MySQL 5.5.28
MySQL 5.6.7
+234% Ganhos de Performance
0
2.000
4.000
6.000
8.000
10.000
12.000
14.000
16.000
18.000
32 64 128 256 512
Tra
ns
aç
õe
s p
or
Se
gu
nd
o
Conexões
MySQL 5.6 vs. 5.5 - Leituras (Linux)
Oracle Linux 6
Intel(R) Xeon(R) E7540 x86_64
MySQL leveraging:
- 48 of 96 available CPU threads
- 2 GHz, 512GB RAM
Performance MySQL 5.6: InnoDB SysBench Benchmarks
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 48
MySQL 5.5.28
MySQL 5.6.7
+151% Ganhos de Performance
0
2.000
4.000
6.000
8.000
10.000
12.000
32 64 128 256 512 Tra
nsaçõ
es p
or
Seg
un
do
Conexões
MySQL 5.6 vs. 5.5 – Escritas+Leituras (Linux)
Oracle Linux 6
Intel(R) Xeon(R) E7540 x86_64
MySQL leveraging:
- 48 of 96 available CPU threads
- 2 GHz, 512GB RAM
Performance MySQL 5.6: InnoDB SysBench Benchmarks
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 49
Thread Pool Plug-In
• Adiciona mais inteligência ao modelo padrão de gerenciamento de threads – agrupa e reutiliza
• Modelo padrão, sem Thread Pool: 1 thread por conexão, performance excelente, mas limita a escalabilidade ao crescer o número de conexões de usuários
• Com Thread Pool: reúso de threds, escala o número de conexões de usuários mantendo os mesmos níveis de performance
• Implementado utilizando Thread Pool API
Assegura desempenho melhor e sustentável, mesmo quando o número de usuários continua crescendo.
MySQL Enterprise Scalability
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 50
60x Melhor Escalabilidade comThread Pool
MySQL 5.6.11
Oracle Linux 6.3, Unbreakable Kernel 2.6.32
4 sockets, 24 cores, 48 Threads
Intel(R) Xeon(R) E7540 2GHz CPUs
512GB DDR3 RAM
Thread Pool habilitado/desabilitado
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 51
18x Melhor Escalabilidade com Thread Pool
Thread Pool habilitado/desabilitado
MySQL 5.6.11
Oracle Linux 6.3, Unbreakable Kernel 2.6.32
4 sockets, 24 cores, 48 Threads
Intel(R) Xeon(R) E7540 2GHz CPUs
512GB DDR3 RAM
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 52
Referências de Escala Social Network
Small Medium Large Extra Large
Queries/Second <500 <5,000 10,000+ 25,000+
Transactions/Second <100 <1,000 10,000+ 25,000+
Concurrent
Read Users
<100 <5,000 10,000+ 25,000+
Concurrent
Write Users
<10 <100 1,000+ 2,500+
Database Size
Sessions <2 GB <10 GB 20+ GB 40+ GB
eCommerce <2 GB <50 GB 50+ GB 200+ GB
Analytics (Multi-Structured Data) <10 GB <1TB 10+ TB 100+ TB
Content Management (Meta-Data) <10 GB <500 GB 1+ TB 2+ TB
Saiba mais: slideshare.net/MySQLBR/arquiteturas-de-referncia-mysql
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 53
MySQL 5.7 Sysbench Benchmark
Sysbench Point Select
Intel(R) Xeon(R) CPU X7560 x86_64
5 sockets x 8 cores-HT (80 CPU threads)
2.27GHz, 256G RAM
Oracle Linux 6.5
2X mais rápido que o MySQL 5.6
Mais de 3X mais rápido que o MySQL 5.5
630,000 QPS
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 54
MySQL 5.7: InnoDB Memcached
Contribuição do Facebook
Intel(R) Xeon(R) CPU X7560 x86_64
8 sockets x 6 cores-HT (96 CPU threads)
2000Mhz, 256G RAM
Oracle Linux 6.2
6x mais rápido que o MySQL 5.6
1,150,000 QPS
0
200000
400000
600000
800000
1000000
1200000
1400000
8 16 32 64 128 256 512 1024
Qu
eri
es p
er
Seco
nd
Concurrent User Sessions
5.7.3
5.6
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 55
MySQL é adequado para o meu produto?
Quais conceitos fundamentais para uso correto do MySQL?
Quais plataformas e linguagens posso utilizar?
Quais os limites da tecnologia?
Quais recursos de alta-disponibilidade (HA) e escalabilidade?
Quais recursos de segurança?
Dúvidas técnicas, requisitos não funcionais
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 56
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. 57
Aplicação
Master Slave
• Master down
• Slave promovido para Master
Escritas & Leituras
MySQL failover
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 58
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
Slave
…
Leituras
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 59
Multi-Source Replication Consolida updates de múltiplos
Masters em um Slave
– Visão consolidada
– Novas topologias
– Ponto centralizado de backup
– Relatórios mais fáceis
Compatível com Semi-Synchronous
Replication & Multi-Thread Slaves
Master-specific slave filters
Aplicação continua responsável por
manter data sets não-conflitantes
entre as diversas fontes
Binlog
Master 1
Binlog
Master 2
…
…
Binlog
Master N
IO 1
Relay 1
Coordinator
W1 W2 … WX
IO 2
Relay 2
Coordinator
W1 W2 … WX
…
…
Coordinator
W1 W2 … WX
IO N
Relay N
Coordinator
W1 W2 … WX
Slave
labs.mysql.com
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 60
MySQL Fabric 1.4 GA (MySQL Utilities 1.4.3)
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. 61
API Nodes
Arquitetura MySQL Cluster
Data Nodes
ndbd ndbd
Management
mgm_ndbd
Clients
Application Layer
Data Layer
ndbd ndbd
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 62
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. 63
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. 64
PAM (Pluggable Authentication Modules) Plug-In
• Autenticação externa via métodos externos
• Interface padrão, funciona com Unix, LDAP, Kerberos, outros
• Proxy-users – mapeamento grupos de usuários para 1 usuário
Windows Plug-In
• Acesso nativo via serviços do Windows
• Autentica usuários já logados no Windows (Single Sign On)
• Grupos/usuários do Windows Active Directory com Proxy-users
Integra o MySQL com a infraestrutura de segurança existente e SOPs. Mais produtividade na gestão de usuários.
MySQL Enterprise Security External Authentication Plug-Ins
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 65
Authenticate
CREATE USER win_joe
IDENTIFIED WITH authentication_windows
AS ‘joe';
LDAP/AD PAM /
Windows Auth
Usuário/senha definidos no diretório
Privilégios definidos no MySQL e
mapeados para usuários/grupos do diretório
MySQL Enterprise Security External Authentication Plug-Ins
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 66
MySQL Enterprise Audit
Audit Plug-In
• Registro de conexões, logins, queries dos servidores MySQL
• Políticas definidas pelo DBA para filtragem e rotação de logs
• Habilitado ou desabilitado dinamicamente, sem reiniciar o servidor
• Log em XML de acordo com especificação padrão Oracle Audit
• Requer MySQL 5.5.28 ou superior
• Implementado através MySQL 5.5 Audit API
Adiciona conformidade regulatória em aplicações MySQL: HIPAA, Sarbanes-Oxley, PCI, etc.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 67
2. Usuário conecta-se e executa queries
MySQL Enterprise Audit
1. DBA habilita no Server1 Server1
3. Conexões e queries dos usuários aparecem no log
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 68
Saiba mais...
Manual de Referência http://dev.mysql.com/doc/refman/5.6/en/index.html
Whitepapers, webinars, artigos... http://www.mysql.com/why-mysql/
Livros
– MySQL, Fifth Edition by Paul DuBois <- mais para desenvolvedores
– High Performance MySQL, 3rd Edition <- mais para dba’s
– MySQL High Availability <- desenvolvedores e dba’s
– etc, etc, etc...
Benchmarks, Capacity Planning, Stress Testing
– Ferramentas de benchmark http://dev.mysql.com/doc/refman/5.6/en/mysql-benchmarks.html
– Benchmarks expert http://dimitrik.free.fr/blog/
Conhecimento técnico em MySQL
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 69
Ciclo evolutivo do produto/aplicação
Identificação do Mercado e
Modelo de Negócios 1
Análise e Especificação
de Requisitos 2
Arquitetura e
Prototipagem 3
Implementação e Testes 4
Empacotamento e
Distribuição 5
Manutenção Correções e atualizações/migrações 6
n iterações
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 70
Usando o MySQL
Como montar o ambiente de desenvolvimento?
Ferramentas para o desenvolvimento
Ferramentas para Qualidade
Suporte ao desenvolvedor
Onde buscar mais conhecimento?
Hello World, ferramentas e mais conhecimento
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 71
Instalação
No Windows
– Installer ou Web Installer
– Next, next, finish
No Linux e demais SO’s
– Prefira os binários pré-compilados da sua distribuição
– Repositórios YUM e APT disponíveis
Baixe e instale em menos de 15 minutos
Download
– Community: dev.mysql.com/downloads ou
dev.mysql.com/downloads/repo
– Comercial: edelivery.oracle.com (trial)
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 72
Ciclo evolutivo do produto/aplicação
Identificação do Mercado e
Modelo de Negócios 1
Análise e Especificação
de Requisitos 2
Arquitetura e
Prototipagem 3
Implementação e Testes 4
Empacotamento e
Distribuição 5
Manutenção Correções e atualizações/migrações 6
n iterações
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 73
Prefira os binários pré-compilados
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 74
Repositórios YUM e APT para MySQL
Maneira simples e conveniente de instalar e atualizar produtos MySQL
Suporta as distribuições Enterprise Linux
– RedHat Enterprise/Oracle Linux
– Fedora
– Em breve: Debian/Ubuntu
Inclui os pacotes mais atuais
– MySQL Database
– MySQL Workbench
– MySQL Connector/ ODBC
– MySQL Connector/Python
– MySQL Utilities
Benefícios para Usuários Finais e Distribuições Linux
Também disponível via
NuGet para
desenvolvedores .NET
Mais de 50% dos
downloads para
Fedora/RedHat já são
feitos do repositório
nuget.org/profiles/MySQL
www.alastori.com.br/2014/05/tutorial-de-
instalacao-do-mysql-56-e.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 75
Iniciar ou Parar o servidor MySQL no Windows
…ou via MySQL Notifier
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 76
Iniciar ou Parar o servidor MySQL no Linux
/usr/local/mysql/bin> mysqld_safe --defaults-file=/etc/my.cnf &
/usr/local/mysql/bin> mysqladmin shutdown
Parar:
Iniciar:
dev.mysql.com/doc/refman/5.6/en/mysqld-safe.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 77
Primeira conexão
C:\Program Files\MySQL\MySQL Server 5.6\bin>mysql -uroot -p
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.6.14 MySQL Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 78
Teste via MySQL Workbench 1/2
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 79
Teste via MySQL Workbench 2/2
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 80
Crie rapidamente seu protótipo Hello World em Java
C:\>set CLASSPATH
CLASSPATH=.;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip;C:\Program
Files\MySQL\mysql-connector-java-5.1.22\mysql-connector-java-5.1.22-bin.jar
Confira:
Adicione o Connector ao classpath:
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 81
HelloMysql.java 1/2
import java.sql.*;
public class HelloMysql {
public static void main(String args[]){
System.out.println("Tentando conectar ao MySQL...");
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mysql";
String usuario = "root";
String senha = "root";
Connection con = DriverManager.getConnection(url, usuario, senha);
System.out.println("URL: " + url);
System.out.println("Connection: " + con);
Continua…
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 82
HelloMysql.java 2/2 Statement stmt = con.createStatement(); //objeto Statement
ResultSet rs; //objeto ResultSet
rs = stmt.executeQuery("SELECT * FROM world.country");
System.out.println("Ola mundo!");
while(rs.next()){
String nomePais = rs.getString("Name");
System.out.print(nomePais + ", ");
}//end while
con.close();
} catch( Exception e ) {
e.printStackTrace();
}//end catch
}//end main
}//end class HelloMysql PRONTO!
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 83
java HelloMysql C:\tutorial>javac HelloMysql.java
C:\tutorial>java HelloMysql
Tentando conectar ao MySQL...
URL: jdbc:mysql://localhost:3306/mysql
Connection: com.mysql.jdbc.JDBC4Connection@ed07f45
Ola mundo!
Aruba, Afghanistan, Angola, Anguilla, Albania, Andorra, Netherlands Antilles, Un
ited Arab Emirates, Argentina, Armenia, American Samoa, Antarctica, French South
ern territories, Antigua and Barbuda, Australia, Austria, Azerbaijan, Burundi, B
elgium, Benin, Burkina Faso, Bangladesh, Bulgaria, Bahrain, Bahamas, Bosnia and
Herzegovina, Belarus, Belize, Bermuda, Bolivia, Brazil, Barbados, Brunei, Bhutan
…
ietnam, Vanuatu, Wallis and Futuna, Samoa, Yemen, Yugoslavia, South Africa, Zamb
ia, Zimbabwe,
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 84
MySQL for Visual Studio
Design Time Support
Query Designer
Stored Routine Debugging
Entity Framework
Integração total com a plataforma .Net
mysql.com/why-mysql/windows/visualstudio
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 86
MySQL Workbench 6 Para Windows, Linux, Solaris, Apple Mac OS…
MySQL Database IDE
Milhões de downloads
Desenvolvedores e DBA’s
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 87
MySQL Workbench 6 Configurações
do Servidor
Árvore de objetos e
esquemas no Servidor
Área de Queries
Barras laterais com
informações do
contexto atual e
biblioteca de
Snipets
Respostas e
Histórico
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 88
MySQL Workbench 6.1 Dashboards: Performance & Status
Analyze hotspots, costly SQL statements, wait
times, locks, InnoDB stats, and more
Network, Server, InnoDB
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 89
MySQL Enterprise Monitor 3.0
Análise de gargalos e queries
Encontre e corrija problemas visualmente
Monitoramento em tempo real da performance e disponibilidade
Monitore discos e faça capacity planning
Arquitetura que não exige agentes
Agente remoto monitora SO
Comece a monitorar em 10 minutos
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 90
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 91
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 92
Explain Query
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 93
QRTi Query Response Time Index
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 94
Capacity Planning
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 95
Revisão de queries lentas
Revisão e auxílio na modelagem
Auxílio na definição de estratégias de particionamento
Performance tuning
Revisão de código (Triggers, Procedures, Functions, UDFs)
Entre outros...
Suporte consultivo MySQL Engenheiros MySQL como parte do seu time
Saiba mais: mysql.com/support/consultative.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 96
MySQL for
Beginners Ed 3
MySQL for Database
Administrators Ed 3.1
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
Professional, MySQL 5.6
DBA
Oracle Certified Expert,
MySQL Cluster DBA
Certificações
Oracle Certified
Professional, MySQL 5.6
Developer
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 97
Ciclo evolutivo do produto/aplicação
Identificação do Mercado e
Modelo de Negócios 1
Análise e Especificação
de Requisitos 2
Arquitetura e
Prototipagem 3
Implementação e Testes 4
Empacotamento e
Distribuição 5
Manutenção Correções e atualizações/migrações 6
n iterações
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 98
Como distribuir meu produto com MySQL?
Cloud: SaaS
On-Premise: Embarcado
Como embarcar?
Modelos e métodos de distribuição
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 99
Como embarcar Opções de distribuição embedded e deeply embedded
client-server (embedded)
• Inclua os binários com sua aplicação e execute via linha de comando -- ou também --
• No Windows • use silent installation, MySQL
installer
• Demais SO’s • instale e configure usando TARs
ou RPMs
libmysqld (deeply embedded)
• 5 passos: • desenvolva aplicações em C com
chamadas para iniciar ou parar o 'servidor'
• compile normalmente
• link com libmysqld
• configure um arquivo my.cnf ou my.ini
• distribua a aplicação normalmente
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 100
Como embarcar
roda o MySQL sem necessidade de instalação
pode-se colocar em um subdiretório da aplicação
Parâmetros importantes:
--port= porta em que o MySQL escuta conexões
--defaults-file= localização do arquivo de configurações my.ini ou my.cnf
--datadir= localização dos arquivos de dados
--skip-networking restringe conexões TCP/IP liberando apenas socket file (Linux) ou named-pipes (Windows)
--socket= localização do Unix socket file para conexões locais
Client-server via linha de comando
mysqld.exe --port=3306 --defaults-file="C:\mysql\my.ini" --datadir="C:\mysql\data”
Exemplo de execução:
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 101
Saiba mais...
Silent Installation (Windows) http://dev.mysql.com/doc/refman/5.6/en/mysql-installer.html
Usando TAR (Linux) http://dev.mysql.com/doc/refman/5.6/en/binary-installation.html
http://dev.mysql.com/doc/refman/5.6/en/automatic-start.html
Usando RPM (Linux) http://dev.mysql.com/doc/refman/5.6/en/linux-installation-rpm.html
Exemplo de aplicação com libmysqld http://dev.mysql.com/doc/refman/5.6/en/libmysqld-example.html
Como embarcar
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 102
Ciclo evolutivo do produto/aplicação
Identificação do Mercado e
Modelo de Negócios 1
Análise e Especificação
de Requisitos 2
Arquitetura e
Prototipagem 3
Implementação e Testes 4
Empacotamento e
Distribuição 5
Manutenção Correções e atualizações/migrações 6
n iterações
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 104
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. 105
MySQL Enterprise Backup
Backup online para InnoDB
Backups completos, incrementais, parciais (automatizados via script)
Compressão, Criptografia
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
Compatível SBT, Oracle Secure Backup
Suporte Cloud (Amazon S3)
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. 106
MySQL Enterprise Backup Menor tempo em backups e restores, menos downtime
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 107
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 108
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 109
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 110
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 111
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 112
Eventos
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 113
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 114
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 115
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 116
Advisors
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 117
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 118
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 119
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 120
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 121
Atualizações / Upgrades
Binária
– substitua os binários, suba o servidor e rode mysql_upgrade
– obedeça a ordem 5.0 > 5.1 > 5.5 > 5.6
mysqldump
– faça o dump dos databases e restaure numa nova instalação
Workbench
– Migration Wizard / Schema Transfer Wizard
Replicação
– de um Master numa versão mais antiga para um Slave mais novo
Possíveis estratégias
dev.mysql.com/doc/refman/5.6/en/upgrading.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 122
MySQL Workbench 6
Fácil Migração
– Microsoft SQL Server
– PostgreSQL
– Sybase ASE
– Sybase SQL Anywhere
– SQLite, MS Access
Next, Next, Finish
Migra estrutura e dados
Não migra procedures
Migration Wizard
dev.mysql.com/doc/workbench/en/wb-migration-overview-steps.html
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 123
Migração para MySQL Onde faz sentido migrar, migre. Do contrário, não migre.
Aplicação… Método de migração Complexidade
Usa Standard SQL Ferramenta MySQL
Workbench ou CSV dumps Baixa: migre, teste e pronto!
Usa intensamente Stored
Procedures, Triggers
Ferramentas de terceiros
(SQLWays)
Média: dependendo da
complexidade das procedures,
pode ser fácil
Usa funcionalidade
especializada do BD e não
nativa do MySQL
Ferramentas de terceiros ou
re-arquitetura
Alta: pode ser fácil, mas
também pode ser muito difícil
Empacotada ou desenvolvida
e mantida por fornecedor que
não certifica para MySQL
Acordo com o fornecedor
Não recomendado migrar
sem ajuda do fornecedor,
raras exceções
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 124
Oracle para MySQL
Exporting Data from Oracle
– Oracle SQL Developer
– SQL*Plus
– Using PL/SQL: UTL FILE package
Importing Data into MySQL
– LOAD ... INFILE
– CSV storage engine
Migration Tools
– Golden Gate, Pentaho, Convert-in, SQLWays
Possíveis estratégias
support.oracle.com/epmos/faces/DocumentDisplay?id=1477151.1
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 125
Ciclo evolutivo do produto/aplicação
Identificação do Mercado e
Modelo de Negócios 1
Análise e Especificação
de Requisitos 2
Arquitetura e
Prototipagem 3
Implementação e Testes 4
Empacotamento e
Distribuição 5
Manutenção Correções e atualizações/migrações 6
n iterações
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 126
MySQL Enterprise Edition Suporte + Backup + Monitor + Workbench + Plug-ins
Plug-ins
Suporte
Backup
Monitor & Workbench
Escalabilidade
Segurança
Auditoria
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 127
Sumário
O MySQL é o banco de dados ideal para muitos casos de uso,
atendendo muito bem requisitos de: segurança, performance,
escalabilidade, confiabilidade, robustez, disponibilidade,
portabilidade, operacionalização (DevOps), etc.
Baixe, instale, crie protótipos ou migre em poucos minutos!
A Oracle pode ajudá-lo a adotar e distribuir o MySQL com menor
risco e com vantagens econômicas para seu negócio
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 128
@MySQLBR
meetup.com/MySQL-BR
facebook.com/MySQLBR
Obrigado!
MySQL para Desenvolvedores de Produto
Perguntas?