Was ist die ibdata1-Datei in meinem / var / lib / mysql-Verzeichnis?
32
Als ich mich bei meinem Webmin-Kontrollfeld anmeldete, bemerkte ich, dass praktisch mein gesamter Festplattenspeicher voll ist. Ich habe nach den zehn größten Dateien / Verzeichnissen auf meinem System gesucht und festgestellt, dass eine Datei mit dem Namen ibdata1 etwa 94 GB Speicherplatz belegt. Es befindet sich in meinem / var / lib / mysql-Verzeichnis.
Was macht ibdata1? Kann ich es sicher entfernen? Ich gehe davon aus, dass es sich um eine Müllkippe handelt, aber das ist nur eine wilde Vermutung.
Die Datei ibdata1ist der Systemtabellenbereich für die InnoDB-Infrastruktur.
Es enthält mehrere Informationsklassen, die für InnoDB von entscheidender Bedeutung sind
Tabellendatenseiten
Tabellenindex-Seiten
Datenwörterbuch
MVCC-Steuerdaten
Leerzeichen rückgängig machen
Rollback-Segmente
Doppelter Schreibpuffer (Seiten, die im Hintergrund geschrieben wurden, um das Zwischenspeichern des Betriebssystems zu vermeiden)
Puffer einfügen (Änderungen an Sekundärindizes)
Bitte beachten Sie den Platz von ibdata1 im InnoDB-Universum (auf der rechten Seite)
Sie können Daten- und Indexseiten voneinander trennen, ibdata1indem Sie innodb_file_per_table aktivieren . Dadurch speichert jede neu erstellte InnoDB-Tabelle Daten und Indexseiten in einer externen .ibdDatei.
innodb_file_per_table aktiviert, Daten- / Indexseiten gespeichert in /var/lib/mysql/mydb/mytable.ibd
innodb_file_per_table deaktiviert, Daten- / Indexseiten in ibdata1 gespeichert
Unabhängig davon, wo die InnoDB-Tabelle gespeichert ist, muss die InnoDB-Funktionalität nach Tabellenmetadaten suchen und MVCC- Informationen speichern und abrufen , um die ACID-Konformität und die Transaktionsisolation zu unterstützen .
Hier sind meine früheren Artikel zum Trennen von Tabellendaten und Indizes von ibdata1
Sie können ibdata1 weiterhin alles speichern lassen, aber das macht LVM-Snapshots zu einer echten Plackerei (meine persönliche Meinung).
Sie müssen My StackOverflow post verwenden und diese Datei dauerhaft verkleinern.
Bitte führen Sie diese Abfrage aus:
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;
Dies zeigt an, wie viel verschwendeter Speicherplatz nach der Anwendung von InnoDB Cleanup zurückgewonnen werden kann.
Danke für deinen Beitrag. Mein Festplattenkontingent ist inzwischen vollständig gefüllt. Brauche ich freien Speicherplatz, bevor ich auf einen der Ratschläge in Ihren Posts eingehen kann? Ich stelle fest, dass Ihr ursprünglicher Beitrag auf SO erwähnt, dass ein SQL-Dump durchgeführt werden soll, aber dies würde vermutlich eine ~ 90-GB-Datei erzeugen, die nirgendwo hingehen kann.
James
mysqldump dient nur der logischen Darstellung der Datenseiten, nicht der Indizes. Sie benötigen einen anderen Festplatten-Mount, möglicherweise einen Remote-Server, um die Daten zu sichern.
RolandoMySQLDBA
9
Es gibt 91.25350952148438 für mich als zurück SpaceToReclaim. Ist das in Megabyte? Prozent? Bytes?
Isaac
Ich weiß, das ist zu alt. Wenn Sie mit dem Problem hierher kommen, müssen Sie die Zahl durch eine Zahl ersetzen, die 94der Größe Ihrer ibdata1Datei in GB entspricht. In diesem Fall SpaceToReclaimwird die Größe in GB angegeben.
Anupsabraham
8
Diese Datei ist ibdata1nicht ibdatalund es enthält alle Ihre InnoDB - Datenbanken. Wenn Sie es löschen, verlieren Sie alle Ihre Daten.
Wenn Sie innodb als MySQL-Engine verwenden, werden standardmäßig alle Ihre Datenbanken in ibdata1 gespeichert. Es gibt auch Protokolldateien ib_logfile0 und ib_logfile1. Löschen Sie diese Dateien nicht.
SpaceToReclaim
. Ist das in Megabyte? Prozent? Bytes?94
der Größe Ihreribdata1
Datei in GB entspricht. In diesem FallSpaceToReclaim
wird die Größe in GB angegeben.Diese Datei ist
ibdata1
nichtibdatal
und es enthält alle Ihre InnoDB - Datenbanken. Wenn Sie es löschen, verlieren Sie alle Ihre Daten.Einige Vorschläge zum Umgang damit finden Sie unter So verkleinern / bereinigen Sie die Datei ibdata1 in MySQL .
quelle
Wenn Sie innodb als MySQL-Engine verwenden, werden standardmäßig alle Ihre Datenbanken in ibdata1 gespeichert. Es gibt auch Protokolldateien ib_logfile0 und ib_logfile1. Löschen Sie diese Dateien nicht.
quelle