Eu vi o desejo de um arquivo ibdata menor surgir recentemente no forums.mysql.com
O banco de dados InnoDB usa o arquivo ibdata (s) para armazenar os dados do banco de dados no disco. Configurando seu sistema corretamente é fundamental e você pode aprender mais sobre essas opções aqui: http://dev.mysql.com/doc/refman/5.6/en/innodb-configuration.html
InnoDB fornece uma transação ACID e mecanismo de armazenamento seguro, é muito produtivo, mas se você estiver apagando e / ou substituição de dados, muitas vezes, você vai precisar para recuperar o espaço perdido ao longo do tempo. Quanto tempo é dependente de seu sistema e uso. Você não pode executar um único comando e recuperar espaço em um arquivo ibdata. Ele vai dar alguns passos e não é um trabalho atrás do cenas, a não ser feito em um servidor escravo. Se você tem um escravo que é melhor para fazer esse trabalho no banco de dados escravo primeiro e depois pretende rodar o servidor de banco de dados para se tornar o banco de dados mestre.
Assim, duas situações diferentes, estas não são as únicas soluções, mas algumas soluções:
- Você quer manter o ibdata apresentar o mesmo tamanho, mas você quer apenas limpar o espaço perdido
- Faça backup do banco de dados
mysqldump --user=<username> --password=<> --add-drop-database --master-data=2 --triggers --routines --events --databases (list database names and do not add mysql to this list) > /Just_AN_example/mysqldump_<DATEHERE>_.sql
- Isso lhe dá uma cópia ASCII apenas em caso de corrupção binário.
- Ela também tem os dados mestre via um comentário, se necessário.
- Isto irá manter sua autenticação mysql no tato também.
- Gostaria de salvar o banco de dados mysql como depósito separadamente.
- Você também pode criar um backup com o MySQL Enterprise Backup ou Percona XtraBackup , se o sistema era um db maior e precisava de backups on-line estas são boas escolhas. Até você, que você usa para várias razões.
- Soma de verificação do banco de dados.
- Reúna alguns números sobre o que você tem para que você possa compará-lo quando você carregá-lo de volta.
- Isto pode ser feito com Percona Toolkit
# ./pt-table-checksum --password=<Password> > checksum_before_dump.txt
- A consulta pode escrever-se.
- Eu tenho um blog sobre isso também
- Stop / Start banco de dados e aproveitar este tempo de inatividade para quaisquer variáveis somente leitura você gostaria de ajustar
- Carregue o banco de dados back
- Você quer se mudar para innodb_file_per_table e reduzir o arquivo ibdata
- Siga os passos 1 a 2, no processo acima.
- Na etapa 4 do processo acima, você vai querer adicionar o seguinte ao seu arquivo my.cnf.
- Remova o arquivo ibdata e logs.
- Sem voltar a partir deste ponto
- Iniciar a base de dados
- Confirmá-lo está instalado e funcionando
- Carregue o banco de dados de backup.
Isto, obviamente, seria o melhor a fazer em um servidor não produção / slave para que você possa confirmar todos os passos e obter-se a uma situação viável, em seguida, gire o escravo para ser o novo mestre.