Este documento compara soluções de banco de dados MySQL/MariaDB hospedadas localmente ou na nuvem, discutindo os benefícios da nuvem como escalabilidade, disponibilidade e facilidade de manutenção. Ele também fornece diretrizes para configuração, otimização e monitoramento de bancos de dados na nuvem para alta performance.
2. COMPARAÇÃO
● Downtimes/Oscilações no Deploy
● Downtimes/Oscilações ao reiniciar serviço
● Alto risco de falhas ou sobrecarga na VM
● Dificuldade para escalar
● Modular e Flexível
● Deploy e atualizações independentes
● Mais fácil para escalar e manter
4. CONCEITOS
➔ Clusters são servidores que trabalham em conjunto para executar as mesmas ações, de
forma que os usuários tenham a impressão que é um sistema único (transparência)
➔ Replicação realiza a cópia de dados para um ou mais servidores
5. ESCOPO PROJETO - CHECKLIST
★ Qual versão utilizar ?
★ Qual topologia utilizar ?
★ Utilizar Proxy ?
★ Otimização com MysqlTuner
★ Monitoramento
6. FOCO NA SOLUÇÃO
1. Tuning do banco de dados
2. Otimização das consultas e monitoramento de queries lentas
3. Escalabilidade dos servidores e infra estrutura
7. TUNING DO BANCO
1. InnoDB x MyISAM -> Recomendado tudo Innodb
2. Consumo/uso de memória do banco
(https://dev.mysql.com/doc/refman/8.0/en/memory-use.html)
3. Utilizando o mysqltuner (wget http://mysqltuner.pl/ -O mysqltuner.pl)
4. Tratar resultados e aplicar configurações
8. MysqlTunner
● Data in InnoDB tables: 518.9M (Tables: 114)
● Reads / Writes: 99% / 1%
● Physical Memory : 4.0G
● [--] Max MySQL memory : 633.9G
● Slow queries: 0% (0/22M)
● Highest usage of available connections: 24% (124/500)
● Aborted connections: 0.41% (664/162513)
● Temporary tables created on disk: 27% (460K on disk / 1M total)
● InnoDB buffer pool / data size: 640.0M/518.9M
● InnoDB buffer pool instances: 1
9. SUGESTÕES DE VARIÁVEIS
● Max_connections
● Innodb_buffer_pool_size (70% memoria fisica),
innodb_buffer_pool_instances (paralelismo), innodb_log_file_size,
innodb_log_buffer_size
● table_open_cache/table_cache
● Wait_timeout
● Thread_cache_size, Key_buffer_size, Query_cache_size, tmp_table_size
https://stackoverflow.com/questions/9195139/mysql-performance-variabl
es-tweaking
● Ajustar key_buffer_size e variáveis não usadas do MyISAM
10. OTIMIZAÇÃO DAS CONSULTAS
● Monitorar consultas lentas e re-escrever ou eliminar
● Status do Mysql as SLOW QUERIES
● Indices do MYSQL otimização
(http://www.linhadecodigo.com.br/artigo/3620/indices-mysql-otimizacao-
de-consultas.aspx)
● https://www.pdbmonitor.com/
11. SAVEINCLOUD COM DB ESCALÁVEIS
Vantagens
● Escalabilidade Vertical e Horizontal (assinados automaticamente em
diferentes hardwares físicos)
● Instalação de ambientes complexos em alguns cliques
● Rede Privada de Alta Performance
● Discos SSD Enterprise com RAID 10
● Flexibilidade para contratar mais IOPs, os ambientes iniciam com 1000
IOPs
● Backup Full diário sem custos
12. AUTOMAÇÃO
➔ Opções de replicação e Galera Cluster
➔ Orquestrator e Proxy de banco de dados são recursos importantes
NA PRÁTICA - MARIA DB ESCALÁVEL
13. AUTOMAÇÃO
➔ Opções de replicação
➔ Orquestrator e Proxy de banco de dados são recursos importantes
NA PRÁTICA - MYSQL ESCALÁVEL
14. ProxySQL
➔ https://proxysql.com - High Performance
MySQL Proxy
➔ Automatic Fail Over
➔ Restart containers de DB sem downtime
➔ Roteamento inteligente de escrita e leitura
➔ Suporta MySQL e MariaDB
➔ Escalabilidade
15. AUTOMAÇÃO
➔ Gestão e auditoria de infra estrutura de replicação ou cluster
➔ https://github.com/openark/orchestrator
MYSQL ORQUESTRATOR