Desenvolvendo serviços escaláveis e de alta performance com MySQL
MySQL - o banco de dados open source mais popular do mundo
1. MySQL
<Insert Picture Here>
O Banco de Dados Open Source
mais popular do mundo
Airton Lastori
airton.lastori@oracle.com
set-2011
2. The preceding is intended to outline our
general product direction. It is intended for
information purposes only, and may not be
incorporated into any contract. It is not a
commitment to deliver any material, code, or
functionality, and should not be relied upon in
making purchasing decisions.
The development, release, and timing of any
features or functionality described for
Oracle’s products remains at the sole
discretion of Oracle.
4. Top websites
fonte: alexa.com/topsites 17-ago-2011
5. Quem usa MySQL – Top 10 Websites
1.Google
2.Facebook
3.Youtube
4.Yahoo!
5.Blogger.com
6.Baidu.com
7.Wikipedia
8.Windows Live
9.Twitter
10.QQ.com
fonte: alexa.com/topsites 17-ago-2011
6. dúvida:
Por que o MySQL é a escolha
para aplicações Web destas e
de milhares de outras
empresas?
7. Agenda
• história do MySQL
• razões para utilizar MySQL em web apps
• como alguns clientes implantam o MySQL
• uso profissional e certificado do MySQL
9. Conhecendo melhor o MySQL
Nome
MySQL dado
pelo co- MySQL
fundador Cluster é
Monty adquirido da Sun
Widenius, Ericsson Microsystems é
MyISAM surge a pela MySQL adquirida pela
e mSQL MySQL AB AB Oracle
Nova interface Cresce o MySQL AB é
SQL com ecosistema adquirida pela
arquitetura MySQL, Sun
mais flexível pautado no Microsystems
modelo
open
source
13. Por que MySQL é muito utilizado?
1. MySQL: projetado para a Web
2. baixo TCO
3. performance & escalabilidade
4. confiabilidade & disponibilidade
5. LAMP stack
6. facilidade de uso & administração
7. a melhor escolha para SaaS & cloud
8. MySQL Cluster para serviços Web de escala
9. MySQL Enterprise Edition da Oracle
10. MySQL & NoSQL
http://www.mysql.com/why-mysql/white-papers/mysql-wp-top10-webbased-apps.php
14. Por que MySQL é muito utilizado?
1. MySQL: projetado para a Web
2. baixo TCO
3. performance & escalabilidade
4. confiabilidade & disponibilidade
5. LAMP stack
6. facilidade de uso & administração
7. a melhor escolha para SaaS & cloud
8. MySQL Cluster para serviços Web de escala
9. MySQL Enterprise Edition da Oracle
10. MySQL & NoSQL
15. Arquitetura MySQL Server
MySQL Server Connectors
Clients and Apps Native C API, JDBC, ODBC, .Net, PHP, Ruby, Python, VB, Perl
Enterprise Management
Services and Utilities Connection Pool
Authentication – Thread Reuse – Connection Limits – Check Memory – Caches
Backup & Recovery
Security
Replication
SQL Interface Parser Optimizer Caches
Cluster
Partitioning DDL, DML, Stored Query Translation, Access Paths, Global and Engine
Instance Manager Procedures, Views, Object Privileges Statistics Specific Caches and
Information_Schema Triggers, Etc.. Buffers
MySQL Workbench
Pluggable Storage Engines
Memory, Index and Storage Management
InnoDB MyISAM Cluster Etc… Partners Community More..
Filesystems, Files and Logs
Redo, Undo, Data, Index, Binary, Error, Query and Slow
16. InnoDB no MySQL
- Storage Engine mais utilizado em:
- aplicações Web 2.0
- aplicações de varejo
- aplicações de entretenimento & mídia
- ACID
- Crash recovery
- Integridade referencial
- Suporta altos níveis de usuários concorrentes
- Na versão MySQL 5.5:
- padrão
- otimizado para hardware multi-core, multi-thread e SOs
18. Uso da Memória Disponível
- Sistema de caches padão na indústria:
- dados
- índices
- Main memory tables & standard disk tables
- como parte do Schema (NDB)
- aquecimento (warm up)
- Query cache
- projetado para aplicações Web: queries repetitivas
- armazena query e result set, aliviando o uso de CPU
19. MySQL Server 5.6 DM
DEVELOPMENT
MILESTONE
NoSQL com Memcached API acessando InnoDB,
otimizador melhorado,
store engines mais inteligentes,
melhor instrumentação...
labs.mysql.com
20. Por que MySQL é muito utilizado?
1. MySQL: projetado para a Web
2. baixo TCO
3. performance & escalabilidade
4. confiabilidade & disponibilidade
5. LAMP stack
6. facilidade de uso & administração
7. a melhor escolha para SaaS & cloud
8. MySQL Cluster para serviços Web de escala
9. MySQL Enterprise Edition da Oracle
10. MySQL & NoSQL
21. Baixo custo total de propriedade
- Modelo Open Source
- Hardware commodity
- Escalabiliade horizontal e incremental
- Fácil manutenção
- Edição Enterprise com excelente TCO
22. MySQL vs MS-SQL Server
Duração
• 3 anos
Configuração e
hardware
• Web application
(Unlimited Users)
• Windows
• Intel x86
• Servers: 4
• CPUs/Server: 4
• Cores/CPU: 4
mysql.com/tcosavings
23. Por que MySQL é muito utilizado?
1. MySQL: projetado para a Web
2. baixo TCO
3. performance & escalabilidade
4. confiabilidade & disponibilidade
5. LAMP stack
6. facilidade de uso & administração
7. a melhor escolha para SaaS & cloud
8. MySQL Cluster para serviços Web de escala
9. MySQL Enterprise Edition da Oracle
10. MySQL & NoSQL
24. Desafio de manter a performance
- mudanças rápidas exigidas pelo mercado:
- consumidor ou concorrência
- crescimento acelerado: conexões e volume de dados
Como manter a mesma performance tanto para
LEITURAS quanto para ESCRITAS?
25. Replicação possibilita escalabilidade
Aplicação Load Balancer
Writes & Reads Reads Reads
Replicação MySQL
• Escreva para 1 Master
• Leia de vários Slaves, adicione mais quando necessário
• Perfeito para aplicações de leitura intensiva
26. Outras funcionalidades de alta performance
- Particionamento de dados
- separação dos dados e índices
- otimizador inteligente
- Suporte para vários tipos de dados: range, hash, lista,
caracter, numérico
- particionamento composto/sub particionamento: várias
colunas
- Utilitários e funcionalidades para ambientes de alta
performance
- Cargas paralelas de dados
- Suporte para vários tipos de indexação: clustered, full-text,
hash, spatial, b-tree
- Locking row-level com baixa contenção
27. MySQL 5.5 SysBench Benchmarks GA
MySQL 5.5.4
(New InnoDB)
MySQL 5.1.40
(InnoDB Plug-in)
MySQL 5.1.40
(InnoDB built-in)
364% ganho de desempenho Intel Xeon X7460 x86_64
4 CPU x 6 Cores/CPU
2.66 GHz, 32GB RAM
for MySQL 5.5 over 5.1.40; at scale Fedora 10
28. MySQL 5.5 SysBench Benchmarks GA
MySQL 5.5.4
(New InnoDB)
MySQL 5.1.40
(InnoDB Plug-in)
MySQL 5.1.40
(InnoDB built-in)
200% ganho de desempenho Intel Xeon X7460 x86_64
4 CPU x 6 Cores/CPU
for MySQL 5.5 over 5.1.40; at scale 2.66 GHz, 32GB RAM
Fedora 10
29. Por que MySQL é muito utilizado?
1. MySQL: projetado para a Web
2. baixo TCO
3. performance & escalabilidade
4. confiabilidade & disponibilidade
5. LAMP stack
6. facilidade de uso & administração
7. a melhor escolha para SaaS & cloud
8. MySQL Cluster para serviços Web de escala
9. MySQL Enterprise Edition da Oracle
10. MySQL & NoSQL
31. Confiabilidade: Segurança
- Autenticação e autorização com altra granularidade
- Capacidade de bloquear usuários por cliente
- Framework de privilégios por objetos do schema
- Suporte SSH e SSL
- Funções de criptografia
- Ferramentas de Backup & Recovery
- mysqldump
- MySQL Enterprise Backup
32. Alta disponibilidade
Clustering &
Redundância
Geográfica
Custo & Complexidade
Clustering &
Virtualização
Replicação
ISPs & On-Line eCommerce
Corporativo Services Telecoms
Militar
9 9
.. 9 9 9
35 dias 4 days
4 dias 8 horas 50 min 5 min
%
33. Alta disponibilidade
Clustering &
Redundância
Geográfica
Custo & Complexidade
Clustering &
Virtualização Oracle Clusterware
Replicação 3rd Party Solutions
Replicação
ISPs & On-Line eCommerce
Corporativo Services Telecoms
Militar
9 9
.. 9 9 9
35 dias 4 days
4 dias 8 horas 50 min 5 min
%
34. MySQL e Oracle Virtual Machine
Oracle VM Oracle VM
Automatic Fault
Detection &
Recovery
Secure Live
Migration (SSL)
Oracle VM Server Pool
Oracle VM
Manager
Oracle VM Servers
ocfs2 Falhas
Eventos
Planejados: SAN / iSCSI • Server, VM or
database failure
• Maintenance or
• HA Auto-restart in
upgrades
pool
• Secure Live Migration
• Automatic failure
• Zero interruption
detection & recovery
35. MySQL e Windows Clustering
Slave App App App
Virtual IP
Vote Data Bin
36. Por que MySQL é muito utilizado?
1. MySQL: projetado para a Web
2. baixo TCO
3. performance & escalabilidade
4. confiabilidade & disponibilidade
5. LAMP stack
6. facilidade de uso & administração
7. a melhor escolha para SaaS & cloud
8. MySQL Cluster para serviços Web de escala
9. MySQL Enterprise Edition da Oracle
10. MySQL & NoSQL
38. Por que MySQL é muito utilizado?
1. MySQL: projetado para a Web
2. baixo TCO
3. performance & escalabilidade
4. confiabilidade & disponibilidade
5. LAMP stack
6. facilidade de uso & administração
7. a melhor escolha para SaaS & cloud
8. MySQL Cluster para serviços Web de escala
9. MySQL Enterprise Edition da Oracle
10. MySQL & NoSQL
39. Facilidade de uso e administração
- Regra dos 15min
- Ainda mais rápido com Windows Installer
- Funcionalidades
- automatic space expansion
- auto-restart,
- dynamic configuration
- Ferramentas visuais
- Arquitetura flexível
- convite à experimentação
- permite inovação acelerada através de customizações
- Disponível para diversas plataformas e linguagens
40. Por que MySQL é muito utilizado?
1. MySQL: projetado para a Web
2. baixo TCO
3. performance & escalabilidade
4. confiabilidade & disponibilidade
5. LAMP stack
6. facilidade de uso & administração
7. a melhor escolha para SaaS & cloud
8. MySQL Cluster para serviços Web de escala
9. MySQL Enterprise Edition da Oracle
10. MySQL & NoSQL
41. MySQL, SaaS e Cloud Computing
- Diversos casos de sucesso SaaS
- RightNow, SugarCRM, Omniture, Supply Dynamics,
Workday, Zimbra
- Banco de dados mais popular nos serviços de
hospedagem
- PaaS
- caso Amazon RDS (Relational Database Service)
- Clouds Privadas
- Oracle Virtual Machine Templates
42. Por que MySQL é muito utilizado?
1. MySQL: projetado para a Web
2. baixo TCO
3. performance & escalabilidade
4. confiabilidade & disponibilidade
5. LAMP stack
6. facilidade de uso & administração
7. a melhor escolha para SaaS & cloud
8. MySQL Cluster para serviços Web de escala
9. MySQL Enterprise Edition da Oracle
10. MySQL & NoSQL
43. MySQL Cluster
Alta Performance
escalabilidade de escrita & baixíssima latência
Disponibilidade
99,999%
Flexibilidade
vários métodos de acesso à dados (SQL+NoSQL)
Baixo TCO
open source + hardware commodity
44. Arquitetura MySQL Cluster
MySQL Cluster
Application Nodes
NDB API REST LDAP
Application Nodes
Node Group 1 Node Group 2
Node 1
Node 3
Cluster F1 F2 Cluster
Mgmt Mgmt
F3 F4
Node 2
Node 4
F3 F4
F1 F2
Data Nodes
45. Arquitetura MySQL Cluster
MySQL Cluster
Application Nodes
NDB API REST LDAP
Application Nodes
Node Group 1 Node Group 2
Node 1
Node 3
Cluster F1 F2 Cluster
Mgmt Mgmt
F3 F4
Node 2
Node 4
F3 F4
F1 F2
Data Nodes
47. MySQL Cluster 7.1 Benchmarks
Performance +4 Milhões
de Queries por Segundo!
• 8 servidores Intel commodity
• CPU 2.93GHz, 6 core Intel
• 24GB RAM cada
• 2 Data Nodes por servidor
Escalabilidade horizontal
em hardware commodity
• Com 16 servidores, chegou-se a
6,82 Milhões QPS
• baixo TCO
Resultados confirmados
• mikaelronstrom.blogspot.com
• Iniciativa independente
• 2 dias de testes
48. MySQL Cluster 7.2 DM
DEVELOPMENT
MILESTONE
Adaptative Query Localization
• Alguns Joins executados nos Data
Nodes
• Ganhos de performance de 50x
Mais flexibilidade
• Adição de até 512 colunas e online
• User Tables no Cluster
“Docudesk relies on MySQL Cluster to support our
DocQ SaaS offering which demands high update
rates, low latency and continuous availability from
the database. Testing of Adaptive Query
Localization has yielded over 20x higher
performance on complex queries within our
application, enabling Docudesk to expand our use
of MySQL Cluster into a broader range of highly
dynamic web services.” --Casey Brown
49. Caso de sucesso
“MySQL Cluster 7.1 gave us
the perfect combination of
extreme levels of transaction
throughput, low latency &
carrier-grade availability,
while reducing TCO”
Phani Naik, Pyro Group
mysql.com/customers
50. Por que MySQL é muito utilizado?
1. MySQL: projetado para a Web
2. baixo TCO
3. performance & escalabilidade
4. confiabilidade & disponibilidade
5. LAMP stack
6. facilidade de uso & administração
7. a melhor escolha para SaaS & cloud
8. MySQL Cluster para serviços Web de escala
9. MySQL Enterprise Edition da Oracle
10. MySQL & NoSQL
51. Produtos
mysql.com/products
MY ORACLE SUPPORT
KNOWLEDGE BASE MySQL MONITOR
MySQL CONSULTATIVE SUPPORT BACKUP
52. Por que MySQL é muito utilizado?
1. MySQL: projetado para a Web
2. baixo TCO
3. performance & escalabilidade
4. confiabilidade & disponibilidade
5. LAMP stack
6. facilidade de uso & administração
7. a melhor escolha para SaaS & cloud
8. MySQL Cluster para serviços Web de escala
9. MySQL Enterprise Edition da Oracle
10. MySQL & NoSQL
54. Mais Flexibilidade
MySQL Cluster 7.2
Os mesmos dados
podem ser acessados
simultaneamente via
SQL & NoSQL
55. MySQL Cluster 7.2: NotOnlySQL: Memcached API
• Construa serviços de escrita intensiva e de
alta disponibilidade com MySQL Cluster
back-end
• Acessados via memcached API
• Consolide as camadas de caching e
database
• Use clientes memcached existentes evitando
mudanças nas aplicações
• Suporte para cargas altas de updates, elimine
cache invalidation
• High Availability data store escalável e persistente
• Reúso simplificado dos dados ao longo dos
serviços
• Implementação
• NDB plug-in para memcached server
• Acesso direto à API NDB
57. Clients Replicação do MySQL Server
Master
Slaves
WRITES
READS
58. Caso de sucesso
Wikipedia Benefício-chave
• O MySQL permite economias
significativas com custos de
hardware, adicionando novos
servidores commodity de
acordo com o necessário e de
maneira incremental
Por que MySQL?
• Capacidade de escalar
conforme necessidade e de
maneira incremental
• Baixos custos e flexibilidade
mysql.com/customers
61. Caso de sucesso
Benefícios-chave
• Flexibilidade para escolher o
hardware
• Implementação incremental
• Simplicidade e facilidade de uso
• Por que MySQL?
• Capacidade de escalar para 5
bilhões de page views por mês,
gerando 1 escrita para cada 1,4
leituras
• Flexibilidade para crescer de
maneira incremental e com baixos
custos
mysql.com/customers
63. Escalabilidade: horizontal vs vertical
Scale Out Scale Up
Commodity Intel / AMD Hardware proprietário (SMP)
Software open source Software proprietário ou open
Liberdade de plataforma source
Adiciona mais servidores para Amarrado à plataforma
aumentar performance “Empilhamento” para
aumentar performance
64. MySQL + Oracle
Frontend
Web Servers DBAs
MySQL Cluster
Customers
Sysadmins
Web Servers
Enterprise Manager
MySQL (InnoDB)
Audit Vault
Distributed Caching Secure Backup
MySQL (MyISAM)
Application Servers
Employees
Application Integration ETL/Data Integration
Backend
ERP CRM Oracle Exadata Oracle MySQL
Suppl.
Intranet Apps Oracle RAC Oracle RAC
65. Caso de sucesso
Benefícios-chave
• Ao migrar do Microsoft SQL Server
para MySQL+Oracle, foi possível
escalar 4 vezes mais e crescer a
base de usuários de 10 milhões para
100 milhões
Por que MySQL+Oracle?
• "At Ticketmaster, we use MySQL and
Oracle to complement each other. The end
result is a highly-distributed, optimal-
performing database environment that
powers one of the largest e-commerce and
ticketing sites in the world.”
Ed Presz – Sr. Director Database Engineering
Ticketmaster/Live Nation Entertainment, Inc.
mysql.com/customers
66. Caso de sucesso
Benefícios-chave
• Sistema escalável, de baixo custo e
personalizado para atender
necessidades de gerenciamento de
sessão.
• Gerencia 4 bilhões de request por dia
numa razão 50/50 entre leituras e
escritas.
Por que MySQL+Oracle?
• Custo
• Performance: 13.000 TPS numa Sun
Fire x4100
• Escalabilidade: desenhado para
suportar crescimento futuro de 10x
• Transações realizadas pelo Oracle
Database
mysql.com/customers
67. Ambiente de
desenvolvimento
MySQL em poucos minutos
74. MySQL Enterprise Monitor
• Visão única e consolidada em
todo o ambiente MySQL
• Auto-descoberta dos servidores
MySQL, topologias de
replicação
• Regras personalizáveis de
monitorização e alertas
• Identificação de problemas
antes que eles ocorram
• Reduz o risco de inatividade
• Facilita “scale out” sem exigir
mais DBAs
Assistente virtual do DBA MySQL!
http://mysql.com/trials/
75. MEB: Backups GA
Backups são até 3.5x mais rápidos do que mysqldump
76. MEB: Restores GA
Restore é até 16x mais rápido do que mysqldump
- mysqldump performance não é linear (mais tables/indexes impacta na performance)
- MySQL Enterprise performance é quase linear
77. MEB: Compressão do Backup GA
O tamanho do Backup é reduzido de 65% até 93%
78. MySQL Cluster Manager
Gerenciamento Operações de
Monitoramento
Automatizado Alta Disponibilidade
• Gestão de • Monitoramento do • Persistência
Todo Cluster Estado & de Disco
Recuperação
• Gerenciamento de • Consistência de
Processos Configuração
• Operações On-line
(Reconfiguração • Agente de
/Upgrade) Operação de Alta
Disponibilidade
79. Como o MySQL Cluster Manager Ajuda?
Examplo: Upgrade do MySQL Cluster 6.3 to 7.1
Sem MySQL Cluster Manager Com MySQL Cluster Manager
• 1 x verificação preliminar do estado do Cluster upgrade cluster --package=7.1 mycluster;
• 8 x comandos ssh por servidor
Total: 1 Comando
• 8 x comandos stop por processo
• 4 x edições dos arquivos de configuaração (2 x Resultados
mgmd & 2 x mysqld) Redução de overhead e simplificação de
• 8 x comandos start por processo administração.
• 8 x verificações do processo start e re-joined Reduz risco de downtime por erro do
• 8 x verificações de processos completos administrador.
• 1 x verificação de todo o cluster.
• Reedição manual de cada arquivo de configuração.
Total: 46 comandos – 2h30min. de interação
80. Integração de produtos
em progresso
Oracle GoldenGate (GA)
Oracle Enterprise Linux + Oracle VM (GA)
Certificação Oracle Clusterware
Certificação Oracle Fusion Middleware
Oracle Secure Backup (GA) +
Oracle Audit Vault
Oracle Enterprise Manager
81. Treinamentos e Certificações MySQL
Treinamentos Certificações
MySQL DBA MySQLDeveloper
MySQL Boot Camp MySQL Boot Camp
Accelerated Accelerated
MySQL Performance MySQL Performance
Tuning Boot Camp Tuning Boot Camp
Accelerated Accelerated
MySQL for Begginers MySQL for Begginers
MySQL for Database MySQL and PHP
Administrators Developing Dynamic
Web Applicationg
MySQL Performance
Tuning MySQL for Developers
MySQL High MySQL Advanced
Opcional
Availability Stored Procedures
Necessário
MySQL Cluster
education.oracle.com
83. Obrigado!
Time MySQL Brasil
marcos.trujillo@oracle.com marcelo.t.souza@oracle.com ana.guiselini@oracle.com airton.lastori@oracle.com
Twitter
@MySQLBR