Tem algum índice que você não usa realmente?
Eu tenho um banco de dados MySQL 5.0 de 88.9 GB em uma unidade de 90 GB. O banco de dados contém várias tabelas MyISAM para o nosso relatório de uso do sistema (personalizado). Os dados são agregações baseadas em data do que são essencialmente logs do servidor da web.
Pensei em converter as tabelas grandes no mecanismo de armazenamento MERGE. A ideia é que eu poderia mover os dados mais antigos para uma unidade diferente. No entanto, eu nunca fiz isso antes, e estou um pouco nervoso sobre o teste no meu banco de dados de produção.
E, claro, estou sob uma crise de tempo. Eu tenho que processar todos os dados de relatórios do mês passado em breve. Portanto, instalar uma unidade maior não é uma opção no momento.
Alguém tem algum conselho ou experiência para compartilhar sobre como reduzir o tamanho desse banco de dados?
Ok ... esse post é OOOOLD .. mas .. acho que se estiver completo, é melhor
Quando eu tenho que mover um banco de dados mysql para outra partição que eu faço:
/etc/init.d/mysql stop
rsync -avz /var/lib/mysql/ /mnt/anotherdisk/mysql/
mv /var/lib/mysql/ /var/lib/mysql_original/
ln -s /var/lib/mysql/ /mnt/anotherdisk/mysql/
/etc/init.d/mysql start
Após um dia / semana / mês / WhenIRememberOrCan, eu faço um backup de / var / lib / mysql_original / e depois removo a pasta.
Se você já está considerando mover os dados para uma partição maior, é possível mover seletivamente as tabelas maiores e ligá-las novamente no diretório do banco de dados. Existem algumas desvantagens nisso, mas elas estão registradas na documentação. Isso tem a vantagem de ser facilmente retirado (supondo que suas tabelas ainda caibam na partição antiga).
Se a maioria dos seus dados são agregados de registros, basicamente você tem três opções:
Você está preparado para reescrever o aplicativo?
O OPTIMIZE TABLE reconstruirá uma tabela para remover "buracos". Isso pode economizar muito espaço, ou nenhum, dependendo de como eles são ótimos. Isto é, no entanto, muito lento em uma grande mesa, e usa um monte de espaço temporário.
Eliminando índices, adicionando PACK_KEYS às tabelas, isso reduzirá o tamanho dos índices, mas, novamente, isso envolve uma reconstrução E USAM O ESPAÇO TEMPORÁRIO.
Você observou o tamanho dos índices em relação aos dados?
Parece que seu servidor está tão cheio que você não poderá realmente fazer nenhum trabalho.
SOLUÇÃO: Use o monitoramento para garantir que, no futuro, o servidor nunca fique cheio, já que é uma causa perdida no momento em que você chegar a esse estágio.
A curto prazo, transfira o lote inteiro para uma caixa maior.
Suponho que você já tenha tentado isso, mas existe uma OPTIMIZE TABLE comando que pode reduzi-los dependendo de como eles foram usados.
se você não se importar que suas tabelas se tornem somente leitura, você pode usar o MyISAM PACK
Tags mysql