Uma boa explicação de porque utilizar MySQL e um passo a passo mostrando como instalá-lo em menos de 10 minutos. Slides da apresentação de Alexandre Almeida durante o OTN MySQL Community Forum 2011.
3. Por que utilizar o MySQL?
• O que estão dizendo?
– “Altamente flexível, instalação rápida, disponibilidade de
talentos no mercado, rápida formação de talentos, custo
zero” Tim T., Pervasive Networks
– “Custo zero de aquisição, flexibilidade (storage engine),
diversidade de ferramentas” Laine C., Tango.me
– “Simplicidade e Performance” Mitch P., Sounday
– “Simples, bem aceito por programadores e administradores,
e é de graça” Mats K., Sr. Developer @ Oracle
3
4. Por que utilizar o MySQL?
• Flexível
– Storage Engines
– n respostas para 1 pergunta
• Capacitação & Aprendizado
– Comandos simples e intuitivos
– Menor tempo & investimento na capacitação
• Usabilidade
– Grande diversidade de ferramentas GUI
– Ferramentas gratuitas
4
5. Por que utilizar o MySQL?
• Escalabilidade & Alta Disponilidade
– Replicação Nativa
– NDB Cluster (MySQL Cluster)
– Tungsten!, ScaleDB, InfiniDB
• Funcionalidades
– Procedure, Functions & Triggers
– Events
– Funções & Comandos para desenvolvimento SQL
5
6. Por que utilizar o MySQL?
• Transações
– 100% ACID
– Transações Distribuídas (XA)
• Gerenciamento & Monitoração
– MySQL Monitoring, MONyog
– Administrator, Nagios, comandos nativos
– Simples & Fácil
• Performance
– Alta performance & altamente configurável
6
7. Por que utilizar o MySQL?
• Baixo TCO
– Sabores: “grátis” ou “pago” (enterprise)
– Manutenção simples, menor downtime, menos $$$
• Grand Finale
– OpenSource
– Confiabilidade e Robustez compravados
– O mascote é bacaninha
– Pouco exigente quanto ao hardware
7
8. <Insert Picture Here>
MySQL Community
Tornar o MySQL um banco de
dados acessível e disponível à
todos
8
9. Mão na massa… Mas, antes de tudo!
• Qual o tipo de aplicação! <Insert Picture Here>
• Banco de dados OLTP ou OLAP?
• Storage Engines?
• Processamento e Processador
• Memória, por favor, memória
• Discos, ah sim, os discos
9
10. Pacotes de Instalação
• Fonte (source)
• Distro (yum, apt-get, urpmi, etc)
• RPM
• Binário
– RedHat, Linux Generic*, Solaris
– MacOS, Suse, FreeBSD
– Uindols
10
11. Por que eu prefiro os binários?
• Preguiça de compilar ;-)
• Não sei usar as melhors opções (e você?)
• Não sei se tenho as bibliotecas:
– mais atualizadas
– mais adequadas e compatíveis entre si (versões)
• É mais rápido (install e performance)
• Permite mais threads estáveis
• Binários de melhor qualidade
11
12. Instalando o MySQL em 10 minutos
Instalação e Configuração Básica em 10 passos
• Antes de disparar o cronômetro…
• Consiga seu binário (tar.gz)
[root@daredevil ~]# cd /usr/local/
[root@daredevil local]# wget http://dev.mysql.com/get/Downloads/MySQL-5.5/
mysql-5.5.17-linux2.6-x86_64.tar.gz/from/http://ftp.gwdg.de/pub/misc/mysql/
12
13. 1. Descompactando o pacote baixado
• tar (10s + tempo para lembrar como usar)
• /usr/local ou /opt
root@daredevil local]# time tar -zxvf mysql-5.5.17-linux2.6-x86_64.tar.gz
mysql-5.5.17-linux2.6-x86_64/support-files/ndb-config-2-node.ini
mysql-5.5.17-linux2.6-x86_64/support-files/magic
mysql-5.5.17-linux2.6-x86_64/support-files/my-innodb-heavy-4G.cnf
…
real 0m10.165s
user 0m6.305s
sys 0m4.350s
13
14. 2. Criação de Usuário e Grupo
• Usuário de sistema do mysqld
• 10 segundos (20 se for no escuro)
[root@daredevil local]# useradd mysql
14
15. 3. Diretórios
• /var/lib/mysql (normalmente é o default)
• Um para dados outro para logs
• Ideal discos diferentes (depende do HW)
• 10 segundos?
[root@daredevil local]# mkdir /dados
[root@daredevil local]# mkdir /logs
15
16. 4. Link Simbólico
• Facilita na criação de PATHS
• E ajuda num eventual upgrade de versão
• 0.05 segundos
[root@daredevil local]# ln -s mysql-5.5.17-linux2.6-x86_64/ mysql
16
17. 5. Personalização
• Não é necessário à defaults
• SepararDados & Logs à Back up Raw
• 3 minutos no máximo (só quem não fez curso de datilografia leva tanto tempo)
[root@daredevil local]# vi /etc/my.cnf pid-file = /logs/mysqld.pid
[mysqld] [client]
server-id = 100 port = 3306
port = 3306 socket = /logs/mysql.sock
user = mysql
socket = /logs/mysql.sock
datadir = /dados
basedir = /usr/local/mysql
log-error = /logs/errorlog.err
log-bin = /logs/binlog
relay-log = /logs/relaylog
17
18. 7. Sistema de Dados
• Script prepara o datadir e logs
[root@daredevil local]# cd /usr/local/mysql
[root@daredevil mysql]# scripts/mysql_install_db
Installing MySQL system tables...
OK
Filling help tables...
OK
…
18
19. 8. Subir o servidor
• Manual à mysqld_safe
• Automático à mysql.server
[root@daredevil mysql]# bin/mysqld_safe &
111027 15:48:44 mysqld_safe Logging to '/logs/errorlog.err'.
111027 15:48:44 mysqld_safe Starting mysqld daemon with databases from /dados
19
20. 9. Mínimo baseline de Segurança
• Script: mysql_secure_installation
– Senha para root (renomear é o ideal)
– Elimina acesso de qq host (%)
– Elimina acesso convidado (anônimo)
– “Dropa” banco de dados test
20
21. 10. Pronto para uso
• Fala sério… 6min 38seg
• Ajuste o PATH como requerido
[root@daredevil local]# export PATH=$PATH:/usr/local/mysql/bin
[root@daredevil local]# mysql –uroot –p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.5.17-log MySQL Community Server (GPL)
Copyright (c) 2000, 2011, 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>
21