DBAtlas · Atlas für Datenbankbetrieb

Wiederherstellung nach Datenkorruption

Ein schrittweiser Entscheidungsbaum für Datenkorruption (Block-/Page-Checksummenfehler, nicht lesbare Tabellen, beschädigte RDB/AOF): Bestätige zuerst das Ausmaß der Korruption und wähle dann richtig zwischen Recovery auf Blockebene, vollständigem Restore/PITR aus dem Backup und Reparaturtools als letztem Mittel.

Wie groß ist das Ausmaß der Korruption?

Führe zuerst eine Integritätsprüfung durch, um festzustellen, wie weit sich die Korruption ausgebreitet hat. Sind nur einige Blöcke/Pages beschädigt, ist ein einzelnes Objekt (Tabelle/Index) betroffen oder ist die Korruption weit verbreitet? Prüfe mit den folgenden Befehlen das Ausmaß und wähle dann den passenden Zweig.

RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE;  -- then: SELECT file#, block#, blocks, corruption_type FROM v$database_block_corruption;
  • Nur einige Blöcke / Pages sind beschädigt
  • Ein einzelnes Objekt (Tabelle/Index) ist betroffen
  • Korruption ist weit verbreitet / viele Objekte
  • Prüftools funktionieren nicht, die DB öffnet nicht
  • Korruption tritt immer wieder auf (Ursache vermutet)

Ursache: begrenzte Block-/Page-Korruption → gezielte Recovery

Sind nur einige Blöcke/Pages beschädigt, musst du nicht die ganze Datenbank wiederherstellen. Minimiere den Datenverlust, indem du mit der Recovery-Funktion der Engine auf Block-/Page-Ebene nur die beschädigten Teile aus Backup/Logs reparierst.

Ursache: Korruption auf Objektebene/weit verbreitet → vollständiger Restore oder PITR aus dem Backup

Hat sich die Korruption auf ein oder mehrere Objekte ausgebreitet, ist der sicherste Weg ein Restore aus einem guten Backup und, wenn möglich, ein Vorwärtsrollen bis zum Zeitpunkt der Korruption (PITR). So vermeidest du den Datenverlust, den Reparaturtools verursachen würden.

Kein Backup / DB öffnet nicht — zum letzten Mittel greifen?

Reparaturtools (REPAIR_ALLOW_DATA_LOSS, innodb_force_recovery, --fix) KÖNNEN DATENVERLUST VERURSACHEN und Integritätsbedingungen verletzen. Sie sind nur dann das letzte Mittel, wenn kein brauchbares Backup existiert und die Datenbank sich nicht öffnen lässt. Stelle zuerst sicher, dass es wirklich kein brauchbares Backup gibt.

  • Ich habe ein gutes Backup gefunden, ich stelle wieder her
  • Es gibt gar kein Backup, ein Reparaturtool ist die einzige Option

Letztes Mittel: Reparaturtools mit Datenverlustrisiko

Diese Tools verwerfen beschädigte Zeilen/Pages, damit sich die Datenbank öffnen lässt. Verwende sie nur, wenn es kein Backup gibt und du zuvor eine Kopie der vorhandenen Dateien erstellt hast. Ziel: gerade so weit öffnen, dass sich die Daten exportieren lassen, und sie dann in eine saubere Kopie übertragen.

Ursache: Hardware/Infrastruktur → Quelle beheben und Checksummen aktivieren

Tritt Korruption immer wieder auf, liegt die eigentliche Ursache höchstwahrscheinlich bei Disk, Controller, Arbeitsspeicher (RAM) oder einer instabilen Speicherschicht. Nur die Daten wiederherzustellen reicht nicht; behebst du die Quelle nicht, kommt die Korruption zurück. Aktiviere zur Früherkennung außerdem Checksummen-/Integritätsprüfung.

In DBAtlas öffnen →