Todos os posts de Alexandre Almeida

O que são literais no MySQL?

Se buscarmos no dicionário: literais são significados. Descrição de algo, na forma de texto. No MySQL, Oracle, SQL Server, ou qualquer outro banco de dados, uma literal é o conteúdo de uma variável, ou, simplesmente, um valor oferecido para uma comparação.

SET var_Nome = ‘ALEXANDRE’

No exemplo acima estamos atribuído a literal ALEXANDRE à variável var_Nome. Podemos dizer que o conteúdo (ou significado) de var_Nome é ALEXANDRE.

Ah! Entendi!!! Tudo que está entre aspas é uma literal. Não tão rápido. A analogia é boa, mas, imperfeita.

SET var_Eu_Remexo_Muito = FALSE;

SET @var_Preco = 10;

SET @Qtde = 3;

SET @Total = @var_Preco * @Qtde;

FALSE (0) é uma literal que foi atribuída à var_Eu_Remexo_Muito . Apesar de meus filhos adorarem Madagascar, e, eu ser simpatico ao Rei Julian, eu não gosto de dançar. Logo, FALSE ( 0 no MySQL) descreve o conteúdo da variável à qual foi atribuída.

Continue lendo O que são literais no MySQL?

MySQL na Amazon AWS: RDS ou EC2?

Caras, estamos há dois dias da estréia do Star Wars no cinema. Nível de ansiedade nas alturas 🙂

Mas, voces não vieram aqui para falar de Star Wars. Então, vamos ao que interessa, e, deixemos que lado negro da força para iluminar sua mente.

Sopa de letrinhas: AWS é Amazon Web Services. Aliás, acho que “web”nem caberia mais, visto que os serviços da Amazon alcançou patamares muito mais elevados. RDS é a sigla para Relational Database Services, e, EC2 Elastic Compute Cloud.

Se voce jogar tudo isso é um liquidificador Kaminoano, teremos então um serviço de cloud, ideal para hospedagem de servidores de banco de dados.

A pergunta que sempre me fazem é: Devo hospedar meu banco de dados MySQL em RDS ou EC2?

Minha resposta padrão sempre prevalece: “Depende, pequeno Padawan”.

Vamos entender, em linhas gerais, quem é quem:

RDS: Uma instância RDS é uma abstração de um servidor de banco de dados. Além de não a figura do hardware, não tem sistema operacional, e, nem a instalação do banco de dados. Pode ser entendido, de maneira crua, como um banco de dados virtualizado. É  um banco de dados fornecido como serviço (DBaaS). Atualmente, os seguintes bancos podem ser contratados como RDS: MySQL, MariaDB, Aurora, Oracle, SQL Server, e, PostgreSQL.

EC2: O EC2 é mais do mesmo, é a boa e velha VM (máquina virtual) que vc virtualiza o hardware, instala e configura o sistema operacional de sua preferência, o sistema de arquivos, e, então o banco de dados. Tudo podendo ser configurado sob medida e gosto. Qualquer banco de dados pode ser instalado num ambiente EC2.

Há muitos bons artigos sobre RDS e EC2, e já adianto que há defensores, fervorosos, dos dois lados. A melhor pessoa para te dizer qual o melhor caminho a seguir: RDS ou EC2, é voce mesmo. Portanto, vai um guia básico de perguntas que voce mesmo deve se fazer para tomar a melhor decisão. Continue lendo MySQL na Amazon AWS: RDS ou EC2?

Como instalar o innotop para monitorar o innoDB

O innotop é uma script perl criado para extrair informações importantes acerca do funcionamento interno do storage engine innoDB. A partir da versão 5.4 passamos a contar com informações sobre transações ativas, travamentos (locks), situação do innoDB Buffer Pool, etc, através de tabelas acrescidas ao catálogo do MySQL, também conhecido e representado pelo banco de dados information_schema.

Ler estas tabelas pode ser uma tarefa ingrata e inócua para aqueles que não tem tanta experiência com MySQL. Pior ainda, seria tentar usar o show engine innoDB status. Confesso que nos primeiros anos de MySQL o resultado deste comando, para mim, parecia muito com o sinal alien escondido nas freqüências dos satélites durante a invasão terrestre do filme “Independence Day”. Algumas coisas me intrigaram neste filme: 1o) Por que nunca traduziram o nome do filme; b) Como o “homem mosca” (Jeff GoldBlum) conectou-se ao sistema dos invasores: bluetooh ou wi-fi?; c) Caras, pelo amor do J.Cristo, os invasores não tinham firewall e ainda queriam dominar a Terra? Aqui não jacaré 🙂

Já enrolei bastante voces, voltemos ao que interessa: instalação do innotop!

Vou assumir que iremos utilizar um Linux, por questão de paixão: CentOS. Quais as dependências, os pré-requisitos para instalação do innotop?

* PERL

– Execute o comando abaixo para saber se o Perl está instalado:

[shell]# perl -v
This is perl, v5.8.8 built for x86_64-linux-thread-multi
Copyright 1987-2006, Larry Wall
Perl may be copied only under the terms of either the Artistic License or theGNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found onthis system using “man perl” or “perldoc perl”.  If you have access to theInternet, point your browser at http://www.perl.org/, the Perl Home Page.

No meu caso, tenho o Perl v5.8.8 instalado. Não importa a versão, caso receba mensagem parecida com a que eu recebi, voce está pronto para continuar.

– Execute o comando abaixo para instalar Perl, caso não tenha ele instalado:

yum install perlLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfileSetting up Install ProcessPackage 4:perl-5.8.8-32.el5_5.2.x86_64 already installed and latest versionResolving Dependencies–> Running transaction check—> Package perl.i386 4:5.8.8-32.el5_5.2 set to be updated–> Finished Dependency Resolution
Dependencies Resolved
===========================================================
Package     Arch   Version              Repository   Size
===========================================================
Installing: perl        i38    4:5.8.8-32.el5_5.2   extras       12 M
Transaction Summary
===========================================================
Install       1 Package(s)Upgrade       0 Package(s)
Total download size: 12 MIs this ok [y/N]: y

É só confirmar com sim e descer a lenha na instalação. Nunca é demais lembrar que yum é um comando de instalação inerente às distribuições baseadas em Red Hat, como no meu caso, o CentOS. Outras distribuições podem usar: apt-get, aptitude, urpmi, pkg-get, etc.

Uma vez instalado o Perl, agora tempos que instalar os complementos, necessários para que o innotop funcione. Existem duas formas de se fazer isso, vou fazer da mais simples e menos onerosa:

Execute os comandos a seguir na ordem, e, tenha paciência alguns irão demorar um pouco, pois baixam pacotes e fazem sua instalação:

[shell]# perl -MCPAN -eshell

Se for a primeira vez que este comando é executado, prepare-se para responder uma série de perguntas para configurar seu Perl de forma adequada.

Este comando o levará para dentro do Perl, uma vez lá, execute os comandos a seguir:

cpan> install Term::ReadKey

cpan> install DBI

cpan> install DBD::mysql

Se tudo correu bem, estamos com o Perl instalado e configurado adequadamente para que o innotop consiga desempenhar o seu papel, corretamente.

Próximo passo! Conseguir o innotop, vamos baixá-lo:

[shell]# wget http://sourceforge.net/projects/innotop/files/innotop/1.6.0/innotop-1.6.0.tar.gz/download

* Nota: Estou baixando a versão 1.6.0, mas, quando voce for instalar o seu, não custa nada dar uma olhada na página do projeto e ver se há uma versão mais nova.

Agora, vamos descompactar e instalar o diretório onde mais gosto, no /opt. Cada qual instale no diretório que lhe aprouver 😉

[shell]# cd /opt

[shell]# gunzip innotop-1.6.0.tar.gz

[shell]# tar -xvf i