MySQL Consulting: Introdução ao MySQL Your Fast Track to Better Performance, Availability and Scalability Leandro Morgado June 3, 2008 [email protected] Josh Chamas Director, Professional Services www.mysql.com SUN CONFIDENTIAL Copyright 2008 Agenda • História e Evolução • Arquitectura • Storage Engines • Programas MySQL • Replicação e Backups SUN CONFIDENTIAL Copyright 2008 História e Evolução • RDBMS inicialmente desenvolvido por Michael "Monty" Widenius e David Axmark durante o final dos 90s • Empresa MySQL AB criada na Suécia em 1995 • Datas Lançamento: – 3.23 - Jan 2001 – 4.0 - Mar 2003 (unions) – 4.1 - Oct 2004 (Btrees, subqueries, prepared statements) – 5.0 - Oct 2005 (cursors, stored procedures, triggers, views) – 5.1 - Nov 2008 (event scheduler, partitioning, plugin API, Row Based Replication, server log tables) – 5.4 - Abr 2009 (performance improvements backported from 6.0, SMP scaling, subquery optimizations, faster joins, etc) • A MySQL AB foi comprada pela Sun Microsystems em Feb 2008 por USD $1Billion SUN CONFIDENTIAL Copyright 2008 História e Evolução • Duas versões: Community Server e Enterprise Server • Ultimas versões General Avalaible (GA) são 5.1.36 Community e 5.1.36(MRU)/5.1.31sp1 (QSP) Enterprise • Disponível em varias arquitecturas 32bit e 64bit: Linux, Windows, Solaris, FreeBSD, Mac OS X, HP-UX, IBM AIX e i5/OS • Codigo fonte disponível (GPL) • Usado em sites de grande escala como Google, Wikipedia e Facebook • Várias opcções de contractos de suporte (Basic, Silver, Gold, Platinum) SUN CONFIDENTIAL Copyright 2008 Arquitectura SUN CONFIDENTIAL Copyright 2008 Arquitectura • Modelo Cliente / Servidor via TCP/IP, Unix Sockets, Windows Shared Memory e Windows Named Pipes • Connectors permitem aceder ao servidor através de diversas linguagens e protocolos: C/C++, JDBC, .Net, ODBC, PHP, Perl, Python, Ruby, etc. • Primeira fase é efectua a conecção, autenticação, privilégios • Antes de se fazer o parsing a uma Query SQL, é verificada a Query Cache (em memória) • Query é então decomposta e passa pelo Query Optimizer que decide qual o melhor Execution Plan • Nesta altura verifica-se também os privilégios a nível de base de dados, tabelas e colunas. • O servidor pede então os dados à Storage Engine da tabela através de uma API bem definida. • Finalmente são gravados logs (binary, slow, general, etc) SUN CONFIDENTIAL Copyright 2008 Storage Engines • Uma storage engine é uma implementação especifica para a armezanação dos dados quer seja em disco, memória ou /dev/null • MyISAM é a storage engine por omissão: – Muito rápida e adequada para workloads com grande % de reads – Table locking – Não transacional (nem MVCC) – Não é “crash-safe” – Suporta tables comprimidas com myisampack – Guarda os dados em .frm, .MYD e .MYI – FullText Indexes – Suporta GIS SUN CONFIDENTIAL Copyright 2008 Storage Engines • InnoDB – ACID a 100% - crash safe – Row level locking – Mais pesada que MyISAM mas mais adequada a workloads mistas read/write – Transacional – Guarda dados num tablespace partilhado ou por tabela – .frm, ibdata* e ib_logfile0|1 • Merge – Permite unir duas tabelas de forma a serem vistas como uma apenas – Mais utilizado antes de existir partitioning – Cenários de log file antigas → drop tabela antiga SUN CONFIDENTIAL Copyright 2008 Storage Engines • Memory – Muito rápida pois está tudo em memória – Volátil – Boa para tabelas de contadores, dados temporários • Federated – Permite aceder a uma tabela num servidor remoto como se fosse local • Archive – Guarda grandes volumes de dados de forma eficiente mas não tem indexes • CSV – Grava dados em Comma Separated Values • Blackhole – Não faz nada, apenas escreve para o binary log SUN CONFIDENTIAL Copyright 2008 Programas MySQL • Comunicação via API (local e remota): – mysql – mysqldump – mysqladmin – mysqlimport – mysqlcheck – mysqlshow – mysqlslap • Comunicação directa no file system (local): – mysqlhotcopy – myisamchk – myisampack – mysqldumpslow – mysqlbinlog SUN CONFIDENTIAL Copyright 2008 Programas MySQL • Servidor, auxilares e outros: – mysqld, mysqld-nt – mysqld_safe – mysqld_multi – perror – mysqlbug • Ferramentas Gráficas (GUI Tools) : – MySQL Administrator – MySQL Query Browser – MySQL Migration Toolkit – MySQL Workbench – MySQL Enterprise Monitor (MEM) e Query Analyzer (QUAN) SUN CONFIDENTIAL Copyright 2008 Programas MySQL SUN CONFIDENTIAL Copyright 2008 Replicação e Backups • Replicação assincrona via master (writes) / slave (reads) • Permitir escalar tendo nodos só de leitura nos slaves • Permitir fazer backup aos slaves sem downtime no master • Replicação sincorona apenas possível com MySQL Cluster (NDB) SUN CONFIDENTIAL Copyright 2008 MySQL Consulting: Obrigado! Your Fast Track to Better Performance, Availability and Scalability June 3, 2008 Questões? Josh Chamas Director, Professional Services [email protected] SUN CONFIDENTIAL Copyright 2008