En me connectant à mon panneau de configuration Webmin, j'ai remarqué que pratiquement tout mon espace disque était plein. J'ai recherché les dix plus gros fichiers/répertoires de mon système et j'ai découvert qu'un fichier appelé ibdata1 occupe environ 94 Go d'espace. Il réside dans mon répertoire/var/lib/mysql.
Que fait ibdata1? Suis-je sûr de le retirer? Mon hypothèse est que c'est un dépotoir d'une certaine sorte, mais c'est juste une supposition sauvage.
Le fichier ibdata1
Est l'espace disque logique système pour l'infrastructure InnoDB.
Il contient plusieurs classes d'informations vitales pour InnoDB
Veuillez noter la place d'ibdata1 dans l'univers InnoDB (sur le côté droit)
Vous pouvez séparer les pages de données et d'index de ibdata1
En activant innodb_file_per_table . Cela entraînera toute nouvelle table InnoDB à stocker des données et des pages d'index dans un fichier externe .ibd
.
Exemple
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
, crée /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibd
Peu importe où la table InnoDB est stockée, la fonctionnalité d'InnoDB nécessite la recherche de métadonnées de table et le stockage et la récupération [~ # ~] mvcc [~ # ~] informations à prendre en charge Conformité ACID et Isolement de transaction .
Voici mes articles précédents sur la séparation des données de table et des index d'ibdata1
Oct 29, 2010
: Mon message d'origine dans StackOverflow Nov 26, 2011
: ERREUR 1114 (HY000) à la ligne 6308 du fichier & La table user_analysis est pleineFeb 03, 2012
: Optimisation planifiée des tables dans MySQL InnoDBMar 25, 2012
: Pourquoi InnoDB stocke-t-il toutes les bases de données dans un seul fichier?Apr 01, 2012
: Est-ce que innodb_file_per_table est conseillé?Vous pouvez continuer à avoir tout stocké dans ibdata1, mais cela fait de la réalisation d'instantanés LVM une véritable corvée (mon opinion personnelle).
Vous devez utiliser la publication My StackOverflow et réduire ce fichier de manière permanente.
Veuillez exécuter cette requête:
SELECT
((POWER(1024,3)*94 - InnoDBDiskDataAndIndexes))/POWER(1024,3) SpaceToReclaim
FROM
(SELECT SUM(data_length+index_length) InnoDBDiskDataAndIndexes
FROM information_schema.tables WHERE engine='InnoDB') A;
Cela indiquera combien d'espace gaspillé peut être récupéré après l'application du nettoyage InnoDB.
Ce fichier est ibdata1
, pas ibdatal
et il contient toutes vos bases de données InnoDB. Si vous le supprimez, vous perdez toutes vos données.
Pour quelques idées sur la façon de le gérer, voir Comment réduire/purger le fichier ibdata1 dans MySQL .
Si vous utilisez innodb comme moteur MySQL par défaut stockera tous vos bases de données dans ibdata1. Il existe également des fichiers journaux ib_logfile0 et ib_logfile1. Ne supprimez pas ces fichiers.