Página 1 de 1
MySQL - ibdata1
Enviado: 24 Mar 2009 19:53
por asimoes
Amigos,
Estou trabalhando com um banco MySQL 5.1.31. a pergunta é a seguinte:
Depois de ter populado o banco com algumas tabelas para teste verifiquei que o arquivo ibdata1 ficou com um determinado tamanho.
Depois apaguei vários registros de uma tabela, percebi que o ibdata1 não diminuiu de tamanho. Como pode ser feito um re-dimensionamento no banco arquivo baseado no tamanho das tabelas existentes?
[]´
Re: MySQL - ibdata1
Enviado: 24 Mar 2009 20:10
por Maligno
Se for como no Firebird, você terá de fazer um back-up e restaurar em cima do original. Tentou isso?
Mas o apagamento sem a devida compressão do banco é normal. Evita-se perder um tempo precioso.
Re: MySQL - ibdata1
Enviado: 25 Mar 2009 07:28
por asimoes
Olá Maligno,
Vou tentar a sua sugestão.
[]´s
Re: MySQL - ibdata1
Enviado: 25 Mar 2009 20:15
por asimoes
Olá Maligno,
Não consegui pela sua dica, alguem que me le sabe como faze-lo?
[]´s
Re: MySQL - ibdata1
Enviado: 25 Mar 2009 21:25
por Maligno
Agora que olhei o diretório do meu MySQL (só tenho pra teste

. Na instalação é incluído um utilitário de linha de comando chamado "myisampack.exe", que faz justamente o que você precisa. Aliás, faz
back-up também. Só não sei dizer se esse
back-up comprime as tabelas, como eu havia mencionado antes. Seria lógico esperar que comprimisse. Afinal de contas, não há motivo pra fazer cópia de lixo. Mas está aí um bom teste pra você fazer.
Mas antes de executar, (faça cópia do seu banco, claro, e...) leia o "help" de linha, executando-o sem qualquer argumento. Há algumas observações importantes lá. Inclusive, parece que depois do processo a tabela se torna
read-only (vi num site) e as chaves de índices não são atualizadas (o programa diz isso), o que torna necessário executar outro utilitário: "myisamchk.exe" para reconstruir os índices.
Tem outro utilitário na minha instalação, chamado "pack_isam.exe", que parece idêntico ao outro, apesar do tamanho do EXE ser ligeiramente menor. Não sei se faz o mesmo efeito. Tudo indica que sim. Mas aí você pode dar uma lida no help e descobrir.
Faça os testes. E depois, por favor, conte-nos o resultado. Assim, o pessoal que usa esse banco ficará atualizado sobre esse assunto. Aliás, pelo que me consta, essa matéria ainda não foi discutida no fórum.
Re: MySQL - ibdata1
Enviado: 26 Mar 2009 00:16
por asimoes
Olá Maligno,
Este exemplo só funciona com tabelas MyISAM no meu caso estou usando InnoDB.
Eu resolvi da maneira bem lusitana.
1-Faço um backup full do esquema pela ferramenta: Mysqladministrator
2-Removo a instancia do MySql:
net stop mysql
mysqld --remove
3-Apago todo o conteúdo da pasta c:\mysql\data
4-Copio um mysql (zerado, original sem dados) para a mesma pasta
5-Restauro a instancia de novo, pra isso eu criei 2 bats: instala.bat e remove.bat
----------------------------
instala.bat:
mysqld install
net start mysql
----------------------------
remove.bat:
net stop mysql
mysqld --remove
----------------------------
6-Executo o mysqladministrator e faço um restore do backup
7-Crio o usuário do sistema e defino os seus previlégios novamente.
Pronto, o arquivo ibdata1 está enxuto.
Aceito sugestões para este procedimento.
[]´s
Re: MySQL - ibdata1
Enviado: 26 Mar 2009 04:12
por Maligno
Este exemplo só funciona com tabelas MyISAM no meu caso estou usando InnoDB.
Ah, sim. Me desculpe. Esqueci que o MySQL tem esse
engine também.
Faço um backup full do esquema pela ferramenta: Mysqladministrator
Então, no final das contas, foi pelo
back-up mesmo.
Mas tente não faz disso um exercício regular. Além de dar mais trabalho, em certos casos pode ajudar o servidor, uma vez que a inclusão aproveita os "buracos" deixados pelo apagamento.
Re: MySQL - ibdata1
Enviado: 26 Mar 2009 10:38
por asimoes
Olá Maligno,
Exatamente, este procedimento é para quando houver uma expanção muito grande do banco e o tamanho das tabelas + indices forem muito menores do que o alocado. Imagina um banco com 4g e com tabelas e indices somados não chega a 1g. Vale a pena o trabalho até desenvolverem algo automatizado.
Ainda mais que os recursos de máquina são escassos e tem empresa que não gosta de investir em hardware.
O ideal é não fazer isto, contando sempre com espaço disponível no servidor se for o caso.
:)Pos
[]´s