Opções para reduzir o tamanho de um banco de dados MySQL

4

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?

    
por Seth 06.07.2009 / 22:18

7 respostas

7

Tem algum índice que você não usa realmente?

    
por 06.07.2009 / 23:10
2

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.

    
por 15.12.2011 / 03:26
1

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).

Links simbólicos no MySQL

    
por 06.07.2009 / 23:52
1

Se a maioria dos seus dados são agregados de registros, basicamente você tem três opções:

  1. Revise seu algoritmo de agregação para ver se ele foi projetado para crescer com os dados ou se foi projetado para ficar com um tamanho fixo.
  2. Adquira mais armazenamento.
  3. Pare de armazenar logs no banco de dados.
por 07.07.2009 / 01:20
1

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.

    
por 07.07.2009 / 08:23
0

Suponho que você já tenha tentado isso, mas existe uma OPTIMIZE TABLE comando que pode reduzi-los dependendo de como eles foram usados.

    
por 06.07.2009 / 22:52
0

se você não se importar que suas tabelas se tornem somente leitura, você pode usar o MyISAM PACK

link

    
por 07.07.2009 / 07:52

Tags