2009-06-23 8 views
0

Ich hoffe, das wird eine einfache Antwort für einen von euch sein.Kann ich eine Sicherung wiederherstellen, wenn eine Tabelle beschädigt ist?

Wir haben PHP/MySQL auf einem Single-Board-Computer für ein Produkt, das ein Web-basiertes Admin-Tool sein wird. Dieses Produkt wird eine "set it and forget it" -Anwendung sein.

Eines unserer Bedenken (ob es gültig ist oder nicht) ist MySQL Tabelle/dbase Korruption.

Wir haben auf dieser kleinen Box ständig Prozesse ausgeführt, die die Beschädigung diagnostizieren oder dbase-Fehler erfassen und entsprechend handeln können.

Wir erstellen regelmäßig Sicherungen über dieselben Prozesse. Unser Gedanke ist, dass wir, wenn wir Korruption feststellen oder einen DBASE-Fehler feststellen, unsere Prozesse kurz pausieren und eine Wiederherstellung der Tabelle von der letzten Sicherung durchführen. Unsere Hoffnung ist, dass dies die Korruption beheben wird.

Die Frage ist: Wenn eine MySQL-Tabelle beschädigt ist, können wir eine Backup-Wiederherstellung durchführen?

Ich nehme an, eine Folgefrage wäre, wenn unsere obige Logik richtig ist. Wird eine Backup-Wiederherstellung ein Tabellenbeschädigungsproblem beheben?

Ich weiß, das klingt albern, aber wir sind nicht so vertraut mit dem MySQL-Backend. Unsere Befürchtung ist, dass, wenn die dbase (oder eine Tabelle) irgendwie beschädigt ist, dies auch eine Backup-Wiederherstellung behindern wird.

Können einige von Ihnen dabei einwiegen?

Vielen Dank.

+0

Was verwenden Sie, um eine Wiederherstellung durchzuführen? –

+0

Zeichenketten myTable.tbl> recovered_data: P –

+0

Derek, wir verwenden PHP, um den mysql-Befehl auszuführen, um aus einer Sicherungsdatei wiederherzustellen. – Ducain

Antwort

1

Ja, wird es. Denken Sie daran, dass Sie nur Daten bis zu Ihrer letzten Sicherung haben, also verlieren Sie alles, was von dieser Zeit bis zur Korruptionszeit hereinkam, aber das ist im Allgemeinen höchstens ein Tag.

Die Sicherung ist eine Kopie der Datenbank in dem Zustand, in dem sie sich während der Sicherung befand. Wenn Sie eine beschädigte Datenbank mit einer sauberen Sicherungskopie wiederherstellen, sind Sie in Ordnung. Halten Sie deshalb auch die monatlichen Backups und die letzten sieben Tage. Nur für den Fall, dass eines Ihrer Backups abgespritzt wird.

+0

Dies ist eine sehr kleine Datenbank, aber wichtig für das Produkt, und deshalb machen wir eigentlich Backups alle 5 Minuten.Wenn zu irgendeinem Zeitpunkt einer unserer Prozesse einen Lese-/Schreibfehler von DBase abfängt, versuchen wir, die Wiederherstellung aus der Datei zu diagnostizieren und auszuführen. – Ducain

0

Ich denke, das ist der springende Punkt, eine Sicherung zu haben, nicht wahr?

Außerdem, wenn die Tabelle bereits beschädigt ist, was ist das schlimmste, was passieren könnte, wenn Sie versuchen, es wiederherzustellen?

Ich sage, gehen Sie dafür.

1

Ich denke schon, bevor Sie daran denken, müssen Sie Maßnahmen ergreifen, um sicherzustellen, dass korrupte Tabellen nie gesichert werden. Wenn Sie eine Sicherung wiederherstellen und die Sicherung selbst beschädigt ist, befinden Sie sich genau dort, wo Sie begonnen haben.

Welche Speicher-Engine verwenden Sie?

+0

Wir verwenden InnoDb. Ich habe gelesen, dass InnoDB in 99% der Fälle sich um Korruption kümmert. Ich ... habe es nur schwer, das zu glauben. – Ducain

1

Eine Sache, über die man nachdenken sollte; Abhängig davon, wie Ihre Datenbank strukturiert ist, kann das Wiederherstellen einer einzelnen Tabelle aus der Sicherung zu Problemen bei der referenziellen Integrität führen.

+0

Könnten Sie das bitte kurz kommentieren? – Ducain

+0

Wenn Sie Beziehungen zu oder von dieser Tabelle haben, kann das Wiederherstellen einer einzelnen Tabellensicherung mit anderem Inhalt dazu führen, dass Fremdschlüssel auf keine vorhandenen Zeilen verweisen. Dies ist möglicherweise kein Problem, abhängig davon, wie Ihre Anwendung dies behandelt. – Mendelt

Verwandte Themen