Heim >Datenbank >MySQL-Tutorial >Kann ich Daten aus gelöschten InnoDB-Tabellen entfernen, ohne eine vollständige Datenbankneuerstellung durchzuführen?

Kann ich Daten aus gelöschten InnoDB-Tabellen entfernen, ohne eine vollständige Datenbankneuerstellung durchzuführen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-14 17:01:12710Durchsuche

Can I Remove Data from Deleted InnoDB Tables Without a Full Database Rebuild?

Optimierung der MySQL InnoDB-Speicher-Engine für die Datenentfernung

Problem: Ist es möglich, Daten aus gelöschten Tabellen in zu entfernen? eine MySQL InnoDB-Speicher-Engine ohne Neuaufbau der gesamten Datenbank?

Antwort: Ja, das ist durch einen umfassenden Bereinigungsprozess möglich.

Erklärung:

InnoDB speichert verschiedene Arten von Daten in seiner ibdata1-Datei, einschließlich Tabellendaten, Indizes und Systemdaten Metadaten. Wenn Tabellen gelöscht werden, bleiben deren Daten und Indizes in ibdata1, auch wenn nicht mehr auf sie zugegriffen werden kann. Dies kann im Laufe der Zeit zu Platzverschwendung und Leistungseinbußen führen.

Bereinigungsprozess:

  1. Dump-Datenbank: Erstellen Sie einen SQL-Dump von alle Datenbanken außer mysql und information_schema.
  2. Datenbanken löschen: Löschen Sie alle Datenbanken außer mysql und information_schema.
  3. Schnelles Herunterfahren deaktivieren: Setzen Sie innodb_fast_shutdown auf 0, um Transaktionsänderungen aus Protokolldateien zu löschen.
  4. MySQL herunterfahren:Stoppen Sie den MySQL-Server.
  5. Ändern Konfiguration:Fügen Sie die Einstellungen innodb_file_per_table, innodb_flush_method=O_DIRECT, innodb_log_file_size und innodb_buffer_pool_size zu /etc/my.cnf hinzu.
  6. Ibdata löschenDateien:* Alle entfernen ibdata und ib_logfile*-Dateien.
  7. MySQL neu starten: MySQL starten, wodurch ibdata1 nur mit Metadaten neu erstellt wird.
  8. Datenbank-Dump importieren: Stellen Sie den zuvor exportierten SQL-Dump wieder her.

Nach diesem Vorgang ibdata1 enthält nur Metadaten, während sich einzelne Tabellen in ihren eigenen .ibd-Dateien befinden. Dies ermöglicht die Optimierung einzelner Tabellen mithilfe von OPTIMIZE TABLE, wodurch Platzverschwendung reduziert und die Leistung verbessert wird.

Hinweis: Es muss unbedingt sichergestellt werden, dass Benutzerberechtigungen nach dem Löschen von Datenbanken ordnungsgemäß wiederhergestellt werden.

Das obige ist der detaillierte Inhalt vonKann ich Daten aus gelöschten InnoDB-Tabellen entfernen, ohne eine vollständige Datenbankneuerstellung durchzuführen?. 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