Tuesday, September 20, 2011
Instalando distribuição binária do MySQL no CentOS
Ola galera! Ultimamente venho estudando para tentar passar na primeira prova de certificação da Oracle MySQL DBA I e vou contar um coisa: é bem complicado, contudo é muito prazeroso. O primeiro caso se dá pelo fato de eu como desenvolvedor que sempre esteve sob plataforma Windows (desculpe, não tenho orgulho disso) quando cheguei em um nível onde o Linux é fundamental tive algumas dificuldades.
Neste novo ambiente tive que instalar e configurar o MySQL (MySQL Community Server 5.5.16) no Linux (CentOS Linux release 6.0 Final) e para isso precisei entender melhor como essa plataforma, comandos e recursos funcionam uma vez que diferem bastante do Windows. Enfim, vamos ao que interessa, fazer o nosso servidor rodar.
Escolha da distribuição e instalação do MySQL
Assim como consta no manual podemos fazer a instalação de várias formas, optei por utilizar a distribuição binária Linux - Generic 2.6 (x86, 64-bit), Compressed TAR Archive disponivel no próprio site da MySQL (link direto para essa distribuição aqui). Bem, uma vez feita o download temos que antes de mais nada criar um usuário e grupo para trabalhar com o servidor MySQL. Logue no seu Linux como root e rode os comandos abaixo. Eles criam um grupo para o MySQL e adicionam um usuário que vai servir apenas para fins administrativos sem direitos de login.
shell> groupadd mysql
shell> useradd -r -g mysql mysql
Alteramos nosso diretório para o local onde instalaremos nosso server. Suponho neste ponto que você também tenha feito o download aqui, então vamos extrair a distribuição e alterar o nome da pasta atual "full-path-to-mysql-VERSION-OS" para algo mais simbolico como "mysql".
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s mysql-5.1.59-linux-i686-glibc23 mysql
Vamos agora acessar o novo diretorio criado e dar para ele as permissões do grupo mysql que criamos anteriormente.
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
Feito isso, a instalação pode ser executada. Abaixo o comando faz a criação das pastas iniciais da sua base de dados MySQL. Eles serão criados em /var/lib/mysql, recomendo que você crie esse diretorio antes e dê também as mesmas permissões como feito no passo anterior.
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
Os próximos comandos são opcionais, mas recomendo que sejam executados também. Neles criamos um my.cnf no diretório etc, atribuimos um usuário para o servidor mysqld_safe e criamos uma copia do mysql.server na pasta de inicialização do Linux. Observer neste ultimo passo que também mudamos o nome do arquivo ao fazer a copia de mysql.server para mysql. Assim o servidor será carregado automaticamente quando o linux iniciado.
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &
shell> cp support-files/mysql.server /etc/init.d/mysql
Configuração e teste do servidor
Uma vez instalado o seu servidor temos que agora alterar alguns parametros no nosso arquivo my.cnf para que o servidor rode corretamente. A propósito essa foi uma pequena dor de cabeça pra mim ao instalar pela primeira vez deste modo já que na documentação oficial o passo a passo solicita você testar antes de checar essas informações. Enfim, abaixo segue aproximadamente como seu my.cnf deve ficar para o servidor rodar, eu usei o vi do Linux para edita-lo.
[mysqld]
datadir=/var/lib/mysql/
socket=/tmp/mysql.sock
port=3306
user=mysql
[mysql.server]
basedir=/usr/local/mysql
Desta forma seu servidor está pronto para rodar. Basta executar o comando abaixo e você receberá a mensagem de sucesso.
shell>> /etc/init.d/mysql start
Starting MySQL.. SUCCESS!
Agora vamos finalmente configurar uma variável de ambiente com o caminho da pasta bin adicionando um PATH no sistema. Crie um arquivo chamado mysql.sh como mostrado abaixo e adicione dentro dele o caminho PATH=${PATH}:/usr/local/mysql/bin (necessário reiniciar para essa alteração funcionar). Feito isso, basta apenas rodar o mysql client no seu shell e pode comecar a trabalhar em sua nova base de dados.
shell>> touch /etc/profile.d/mysql.sh
shell>> mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.59 MySQL Community Server (GPL)
mysql>
Bem, basicamente isso galera. Lembrando ainda que temos que implementar ainda a seguranca do nosso banco de dados que você encontra referências em inglês aqui. Espero em breve estar escrevendo sobre isso também visto que é mais um conhecimento também requerido na certificação ORACLE SCMDBA. Obrigado à todos e qualquer dúvida deixe um comentário.
Referências:
Wednesday, September 14, 2011
Bancos Relacionais: 13 regras de Ted Codd
Olá galera, hoje vamos falar sobre uma importante figura na história dos banco de dados relacionais, Ted Codd. Ele realizou avanços na área que norteiam até hoje a estrutura desse modelo. Enjoy!
Os bancos de dados relacionais foram idealizados por Edgar Frank "Ted" Codd, um cientista de computação britânico que, enquanto trabalhava para a IBM, inventou o modelo relacional para a gestão de banco de dados, a base teórica para bancos de dados relacionais.
Ele fez outras contribuições valiosas para a ciência da computação, mas o modelo relacional, uma teoria muito influente sobre gestão de dados gerais, continua sendo seu feito mais citado. Em 1970 ele apareceu com 13 leis (numeradas de 0 a 12) que descreveriam o que é um banco de dados relacional e o que é um Sistema Gerenciador de Banco de Dados Relacionais faz e, várias leis de normalização que descrevem as propriedades de dados relacionais. Apenas os dados que haviam sido normalizados poderiam ser considerados relacionais.
- Regra Fundamental: Um SGBD relacional deve gerenciar seus dados usando apenas suas capacidades relacionais.
- Regra da informação: Toda informação deve ser representada de uma única forma, como dados em uma tabela.
- Regra da garantia de acesso: Todo dado (valor atômico) pode ser acessado logicamente (e unicamente) usando o nome da tabela, o valor da chave primária da linha e o nome da coluna.
- Tratamento sistemático de valores nulos: Os valores nulos (diferente do zero, da string vazia, da string de caracteres em brancos e outros valores não nulos) existem para representar dados não existentes de forma sistemática e independente do tipo de dado.
- Catálogo dinâmico on-line baseado no modelo relacional: A descrição do banco de dados é representada no nível lógico como dados comuns (isso é, em tabelas), permitindo que usuários autorizados apliquem as mesmas formas de manipular dados aplicados aos dados comuns ao consultá-los.
- Regra da sub-linguagem compreensiva: Um sistema relacional pode suportar várias linguagens e formas de uso, porém deve possuir ao menos uma linguagem com sintaxe bem definida e expressa por cadeia de caracteres e com habilidade de apoiar a definição de dados, a definição de visões, a manipulação de dados, as restrições de integridade, a autorização e a fronteira de transações.
- Regra da atualização de visões: Toda visão que for teoricamente atualizável será também atualizável pelo sistema.
- Inserção, atualização e eliminação de alto nível: A capacidade de manipular a relação base ou relações derivadas como um operador único não se aplica apenas a recuperação de dados, mas também a inserção, alteração e eliminação de dados.
- Independência dos dados físicos: Programas de aplicação ou atividades de terminal permanecem logicamente inalteradas quaisquer que sejam as modificações na representação de armazenagem ou métodos de acesso internos.
- Independência lógica de dados: Programas de aplicação ou atividades de terminal permanecem logicamente inalteradas quaisquer que sejam as mudanças de informação que permitam teoricamente a não alteração das tabelas base.
- Independência de integridade: As relações de integridade específicas de um banco de dados relacional devem ser definidas em uma sub-linguagem de dados e armazenadas no catálogo (e não em programas).
- Independência de distribuição: A linguagem de manipulação de dados deve possibilitar que as aplicações permaneçam inalteradas estejam os dados centralizados ou distribuídos fisicamente.
- Regra da Não-subversão: Se o sistema relacional possui uma linguagem de baixo nível (um registro por vez), não deve ser possível subverter ou ignorar as regras de integridade e restrições definidas no alto nível (muitos registros por vez).
Artigo extraído parcialmente de http://www.scribd.com/doc/50553904/Apostila-de-SQL.
Subscribe to:
Posts (Atom)