Récupérer de l'espace disque dans la base de données mysql

j'ai créé de très grandes bases de données et j'en ai perdu quelques-unes depuis. J'ai remarqué que mon espace disque n'a pas récupéré autant que je l'espérais. Par exemple, la dernière base de données que j'ai ajoutée a utilisé tout mon espace libre et a avorté, donc j'ai laissé tomber ce schéma. Avant cela j'avais 12,4 Go libre, maintenant j'ai seulement 7,52 Go libre.

Ce qui se passe ici? Comment récupérer mon ~5 Go?

20
demandé sur VenerableAgents 2011-05-13 00:05:56

1 réponses

http://dev.mysql.com/doc/refman/5.1/en/innodb-data-log-reconfiguration.html:

Actuellement, vous ne pouvez pas supprimer un fichier de données de l'espace tabl. Pour diminuer la taille de votre tablespace, utilisez cette procédure:

  1. utilisez mysqldump pour vider toutes vos tables InnoDB.

  2. Arrêter le serveur.

  3. supprimer tous les fichiers tablespace existants, y compris ibdata et fichiers ib_log. Si vous souhaitez conserver une copie de sauvegarde des informations, copiez tous les fichiers ib* à un autre endroit avant de supprimer les fichiers de votre installation MySQL.

  4. en enlever un .fichiers frm pour les tables InnoDB.

  5. Configurer un nouveau tablespace.

  6. redémarrez le serveur.

  7. importer les fichiers dump.

Innodb crée un le système de fichiers ("tablespace") dans les fichiers de données eux-mêmes. Il ne "rétrécit" jamais les fichiers de données lorsque les données sont supprimées, car la réorganisation des données dans le fichier pourrait être coûteux (il n'y a aucune garantie que les données supprimées était à la fin, ou même contigu). En recréant la base de données comme décrit ci-dessus, il rend le fichier aussi grand que nécessaire pour toutes les données, mais pas plus grand.

22
répondu Chris Morgan 2011-05-12 21:54:03