Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine InnoDB-Speicher-Engine effektiv bereinigen, ohne die gesamte Datenbank neu aufzubauen?

Wie kann ich eine InnoDB-Speicher-Engine effektiv bereinigen, ohne die gesamte Datenbank neu aufzubauen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-06 22:03:15751Durchsuche

How Can I Effectively Clean an InnoDB Storage Engine Without Rebuilding the Entire Database?

Reinigen einer InnoDB-Speicher-Engine: Eine Anleitung

Im Bereich der Datenbankwartung stellt sich die Frage, wie veraltete Daten aus einer InnoDB gelöscht werden können Die Speicher-Engine tritt häufig auf.

Kann InnoDB ohne bereinigt werden? Neu erstellen?

Leider ist es im Gegensatz zu MyISAM nicht möglich, gelöschte Daten direkt aus einer InnoDB-Engine zu entfernen, ohne die gesamte Datenbank neu aufzubauen. Dies liegt daran, dass InnoDB eine komplexe Infrastruktur nutzt, die verschiedene Arten von Informationen in seiner Datei ibdata1 speichert, darunter Tabellendaten, Indizes und Metadaten. Durch einfaches Optimieren von Tabellen werden Daten in ibdata1 nur konsolidiert, nicht verkleinert.

InnoDB-Infrastrukturbereinigung

Um eine InnoDB-Engine effektiv zu bereinigen, ist ein umfassenderer Ansatz erforderlich:

  1. Daten sichern und Datenbanken löschen: Alle Daten in eine SQL-Datei exportieren und löschen Sie alle nicht wesentlichen Datenbanken (außer mysql und information_schema).
  2. Transaktionen löschen und MySQL herunterfahren: Konfigurieren Sie innodb_fast_shutdown auf 0, um die Transaktion vollständig zu leeren, und fahren Sie dann MySQL herunter.
  3. My.cnf ändern: Aktivieren innodb_file_per_table, innodb_flush_method auf O_DIRECT konfigurieren, innodb_log_file_size auf 25 % von innodb_buffer_pool_size setzen und innodb_buffer_pool_size erhöhen.
  4. Ibdata löschen und ib_logfile:Entfernen Sie diese Dateien, optional einschließlich aller Unterverzeichnisse außer /var/lib/mysql/mysql.
  5. Starten Sie MySQL: Erstellen Sie ibdata1 und ib_logfile0/1 neu.
  6. Daten importieren: SQL wiederherstellen dump, um die neu erstellten Datenbankdateien zu füllen.

Hinweise:

  • Durch die Aktivierung von innodb_file_per_table befindet sich jede InnoDB-Tabelle in ihrer eigenen .ibd-Datei außerhalb von ibdata1, was die Optimierung und Datenentfernung in Zukunft vereinfacht.
  • MySQL wiederherstellen Schemadateien, wenn aufgrund eines gelöschten MySQL-Schemas ein Fehler auftritt.

Mit diesem Prozess enthält die neue ibdata1-Datei nur Tabellenmetadaten, wodurch ihre Größe erheblich reduziert wird und eine saubere InnoDB-Umgebung zum Speichern aktiver Daten gewährleistet wird .

Das obige ist der detaillierte Inhalt vonWie kann ich eine InnoDB-Speicher-Engine effektiv bereinigen, ohne die gesamte Datenbank neu aufzubauen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn