Ce ibdata1
n'est pas rétréci est une fonctionnalité particulièrement ennuyeuse de MySQL. Le site ibdata1
ne peut pas être réduit à moins de supprimer toutes les bases de données, de supprimer les fichiers et de recharger un dump.
Mais vous pouvez configurer MySQL pour que chaque table, y compris ses index, soit stockée dans un fichier séparé. De cette manière ibdata1
ne grandira pas autant. Selon Commentaire de Bill Karwin ceci est activé par défaut à partir de la version 5.6.6 de MySQL.
Ça fait un moment que j'ai fait ça. Cependant, pour configurer votre serveur afin d'utiliser des fichiers distincts pour chaque table, vous devez modifier les éléments suivants my.cnf
afin de le permettre :
[mysqld]
innodb_file_per_table=1
https://dev.mysql.com/doc/refman/5.6/en/innodb-file-per-table-tablespaces.html
Comme vous voulez récupérer l'espace de ibdata1
vous devez en fait supprimer le fichier :
- Faites un
mysqldump
de toutes les bases de données, procédures, déclencheurs, etc. sauf le mysql
et performance_schema
bases de données
- Abandonner toutes les bases de données sauf les 2 bases de données ci-dessus
- Arrêtez mysql
- Supprimer
ibdata1
et ib_log
fichiers
- Démarrer mysql
- Restaurer à partir d'une décharge
Lorsque vous démarrez MySQL à l'étape 5, le ibdata1
et ib_log
Les fichiers seront recréés.
Maintenant tu es prêt à partir. Lorsque vous créez une nouvelle base de données à des fins d'analyse, les tables se trouvent dans des fichiers séparés. ibd*
et non dans ibdata1
. Comme vous abandonnez généralement la base de données peu de temps après, les ibd*
les fichiers seront supprimés.
http://dev.mysql.com/doc/refman/5.1/en/drop-database.html
Vous avez probablement vu ceci :
http://bugs.mysql.com/bug.php?id=1341
En utilisant la commande ALTER TABLE <tablename> ENGINE=innodb
ou OPTIMIZE TABLE <tablename>
on peut extraire les pages de données et d'index de ibdata1 dans des fichiers séparés. Cependant, ibdata1 ne sera pas réduit si vous ne faites pas les étapes ci-dessus.
En ce qui concerne le information_schema
qu'il n'est ni nécessaire ni possible de laisser tomber. Il s'agit en fait d'un ensemble de vues en lecture seule, et non de tables. Et il n'y a aucun fichier associé à ces vues, pas même un répertoire de base de données. Le site informations_schema
utilise la mémoire db-engine et est abandonné et régénéré lors de l'arrêt/redémarrage de mysqld. Voir https://dev.mysql.com/doc/refman/5.7/en/information-schema.html .
0 votes
Plus d'informations : ibdata1 croît exponentiellement lorsque innodb_file_per_table est configuré