Engines MySQL – MyISAM

Olá pessoal,

Neste e nos próximos posts, iremos tratar dos engines disponíveis no MySQL! Em alguns tópicos já falamos sobre a diferença entre InnoDB e MyISAM e como consultar o Status das Engines no servidor.

Vamos explorar um pouco mais as características de cada engine, tanto como a estrutura e vantagens, começando hoje com o MyISAM.

O MyISAM foi o engine default do MySQL em versões anteriores a 5.5, ou seja, se uma tabela fosse criada sem a especificação do engine, ela era atribuída ao MyISAM.

Uma tabela MyISAM tem referência de três arquivos físicos no servidor, são eles:

.frm: armazena o formato da tabela
.MYD: armazena os dados da tabela
.MYI: armazena os índices da tabela

A referência é feita com o nome da tabela.extensão, e todos os arquivos são armazenados no datadir (diretório de dados) do servidor. Com isso, já podemos apontar a primeira vantagem ao utilizar o MyISAM:

Os índices de cada tabela são separados em arquivos diferentes dos dados, trazendo um aumento de performance no momento da consulta.

Devido a esta estrutura, as tabelas MyISAM ocupam pouco espaço no disco e também são portáteis, ou seja, você consegue copiar os arquivos de cada tabela em um servidor, e ‘exporta-los’ para outro servidor de forma direta, sem comprometer a integridade dos dados.

Porém antes de fazer isso, certifique-se que o servidor MySQL de destino tenha a mesma versão da origem, que não exista nenhum processo de escrita na tabela a ser copiada/migrada, ou de um stop no mysqld para copiar os arquivos.
Continue lendo

Gerenciar mais de um My.CNF MySQL

Ola pessoal,

Neste post veremos algo interessante para o gerenciamento do MySQL, que pode ser aplicado em um ambiente simples com poucos servidores, e até mesmo em um complexo com diversos hosts.

Trabalhar com mais de um arquivo de configuração do MySQL na mesma instância, lembrando que o padrão é o my.cnf .

A primeira dúvida que pode surgir é, qual a real necessidade de fazer isso? Bem, você pode ter um arquivo com as configurações padrões para todo um parque de máquinas, e outro apenas para alterações específicas a cada cliente, seja ele interno ou externo, como também um ambiente de testes.
Continue lendo

Recuperar senha de root no MySQL

Ola pessoal,

Perdeu a senha do usuário root do MySQL? Existe uma maneira de recupera-la.

Para isso, temos que parar o serviço do MySQL e inicia-lo com dois parâmetros adicionais.

Pare o serviço MySQL

Vamos editar o arquivo de configuração do mysql, que por padrão fica no:

Ao abrir o arquivo, adicione os parâmetros a seguir abaixo do módulo [mysqld]:

Salve o arquivo ‘x!’ e inicie o serviço MySQL:

Continue lendo

Como restaurar uma tabela MySQL

Ola pessoal,

Em época de férias, muito esforço nos estudos para tirar a 1z0-883, irei focar alguns posts futuramente sobre o exame.

“Eu amo backups e snapshot’s” diria um companheiro de trabalho, porém é comum e rotineiro o DBA trabalhar com estratégias de backup e restore.

Neste tópico, uma rápida pincelada de como efetuar o restore de uma única tabela no MySQL.

Tudo depende da origem do seu dump e de como ele foi gerado. Supondo que você tem o dump completo da base, acredito que a melhor forma é você restaura-lo em uma base temporária e efetuar o backup apenas da tabela que necessita.

Para restaura-lo em uma base através da linha de comando:

Após o termino do restore, vamos efetuar o dump desta unica tabela:

Continue lendo

Backup via mysqldump & Restore

Ola pessoal,

Ter um backup integro da base de produção é o dia a dia do DBA, afinal nunca sabemos quando a bruxa esta solta.

O MySQL já oferece o utilitário mysqldump, o qual você pode gerar backups lógicos de suas bases. Um script que falando muito por cima, traz toda a estrutura da sua base com todos os objetos, e pode ser manuseado com os parâmetros desejados.

Através do terminal linux, podemos gerar um backup lógico com o comando:

*Cuidado ao fazer isso em produção, pois o mysqldump ira efetuar um lock em cada tabela enquanto faz o backup, entrando em concorrência com as demais transações.
Continue lendo

Instalação MySQL pelo Binário

Ola pessoal!

No post anterior de instalação do MySQL, foi exemplificado o processo via gerenciador apt.

Neste novo post, vou mostrar como funciona a instalação a partir da distribuição binária , que esta disponível na página de downloads do MySQL . Para este exemplo, vou utilizar a distribuição stable até então MySQL Community Server 5.6.23 (Linux – Generic (glibc 2.5) (x86, 64-bit), Compressed TAR Archive.

1º Vamos obter o binário. Para esta instalação, vou trabalhar no diretório /usr/local

2º Descompactar e criar o link simbólico para um melhor gerenciamento. Também facilita em futuros upgrades:

3º Criar o usuário para fins administrativos do mysql:

4º Criando os diretórios de dados e log, e ajustando a permissão para que apenas o MySQL gerencie:

5º Editando o arquivo de configuração my.cnf

OBS: Em outras versões, dentro do diretório /usr/local/mysql/support-files existiam alguns arquivos de exemplo de configuração, como o my-large.cnf ou o my-small.cnf.

Claro que é apenas um exemplo que pode ser utilizado de acordo ao perfil da empresa. Já na versão 5.6, existe o my-default.cnf, onde é necessário preencher os campos de acordo a estrutura criada.
Continue lendo

Você já precisou de um HELP?

Quem nunca?

Agora, você sabia que através de uma conexão MySQL você consegue obter informações on-line do Manual de referências? Para isso, basta invocar o comando HELP e o critério do comando,  como o select, insert, update, entre outros.

Vamos aos exemplos:

– No command line do MySQL, Inserindo apenas o comando help, será retornado na tela as diversas opções que podem ser trabalhadas:

1

Agora vamos acrescentar mais critérios para buscarmos ajuda, como no comando create:
Continue lendo

Acompanhar Backup & Restore – SQL Server

Ola pessoal!

Que o SQL Server é um SGBD muito completo, e que fornece diversas opções para gerenciamento, já não é novidade pra ninguém, certo?

Em uma pincelada rápida, vou compartilhar um script que achei super show. Quando você efetua um backup/restore declarando um stats = 10 por exemplo, o processo será descrito no messages de 10 em 10% até a sua conclusão, onde você tem uma ideia do andamento do processo ( O valor do stats pode ser definido confome desejado, exemplo 1, 20).

Claro que em um ambiente de alta disponibilidade, você pode trabalhar com bases gigantescas, sendo necessário acompanhar o processo de backup ou restore até a sua conclusão. Porém, e se te pedirem uma previsão? Podemos ter um valor aproximado se o processo é repetido diversas vezes, mas ter um valor exato ajuda tanto na cobrança como no acompanhamento.
Continue lendo

Limites de conexão no MySQL

Ola pessoal,

Inaugurando 2015, vamos tratar sobre os limites de conexões no MySQL. Apesar de ser algo relativamente fácil, é importante saber o conceito, pois isso influi tanto no ambiente de trabalho ou na prova de certificação que encontrei em alguns dump’s.

Em qualquer aplicação Web ou correlatas, é comum identificar a falha de acesso com esta:

‘User XXX already has more than max_user_connections active connections’

Motivo: O usuário excedeu o limite de conexões  estabelecida no servidor.

Como identificar o limite? Abra o seu arquivo my.cnf ou my.ini e procure pelas variáveis:

Ou através de uma conexão com o MySQL, execute:

Continue lendo

Iniciando o MySQL no Linux

Ola pessoal!

Bem, acredito que não existe segredo para iniciar o serviço do MySQL, certo? Segue algumas formas:

/etc/init.d/mysql start
service mysql start

Mas e após este inicio através da linha de comando, o que acontece? O que ocorre por trás da interface/servidor MySQL? Bem, vamos lá.

O inicio do servidor MySQL segue a lógica abaixo:

mysql.server –> mysqld_safe –> mysqld

– – mysql.server -> Um script encapsulador em torno do serviço MySQL , que é chamado em diretórios a nível de execução do System V, como o Linux e Oracle Solaris.

Confuso? Ta ai um exemplo:

‘/etc/init.d/mysql start’

Ao executar esta linha de comando, será verificado o arquivo de inicialização do MySQL já padronizado de acordo a instalação, fazendo o start do serviço de forma automática.

Experimente abrir este script, ele vai mostrar todas as funções de acordo com o que é passado ao sistema (start , stop, reload).

Você também pode edita-lo, trazendo maiores informações ou argumentos necessários. Um exemplo é ao rodar um stop ou restart no serviço, seja apresentado no terminal o numero de conexões abertas com o servidor e uma confirmação para executar o restart.

– – mysqld_safe -> É o processo responsável por configurar os logs de erros do MySQL, e responsável por inciar e monitorar o mysqld no S.O. Caso o serviço mysqld seja finalizado de forma anormal, a monitoração do mysql_safe irá reinicia-lo.
Continue lendo