2009-06-23 74 views
0

我希望這將是一個簡單的答案你。如果表損壞,我可以恢復備份嗎?

我們已經在一臺單板計算機上運行了PHP/MySQL,這個產品將成爲基於網絡的管理工具。這個產品將是一個'設置它,忘記它'的應用程序。

我們擔心的一個問題(無論它是否有效)是MySQL表/數據庫損壞。

我們在這個小盒子上持續運行進程,可以診斷損壞,或者捕獲數據庫錯誤並採取相應措施。

我們通過這些相同的過程定期創建備份。我們的想法是,如果我們意識到腐敗或者發現數據庫錯誤,我們將暫停我們的流程並從最近的備份中恢復表。我們希望這將解決腐敗問題。

問題是:如果一個MySQL表損壞了,我們可以執行備份還原嗎?

我想如果我們上面的邏輯是正確的,後續問題會是。備份還原會糾正表損壞問題嗎?

我知道這聽起來很愚蠢,但我們並不熟悉MySQL後端。我們擔心的是,如果數據庫(或表)損壞,這也會阻礙備份恢復。

你們中的一些人可以稱重嗎?

非常感謝。

+0

你用什麼做'恢復'? – 2009-06-23 13:23:31

+0

strings myTable.tbl> recovered_data:P – 2009-06-23 13:28:41

+0

Derek,我們使用PHP來執行mysql命令從備份文件中恢復。 – Ducain 2009-06-23 13:37:20

回答

1

是的,它會的。請記住,只有在上次備份之前您纔會有數據,因此您將失去從該時間到腐敗時間的所有數據,但這通常是最多一天。

備份是在備份過程中處於任何狀態的數據庫副本。如果您使用乾淨的備份來恢復損壞的數據庫,那麼您會變得非常笨拙。出於這個原因,保持每月備份以及最近七天的備份。以防萬一你的備份被洗掉。

+0

這是一個非常小的數據庫,但對產品至關重要,所以我們實際上每5分鐘進行一次備份。如果在任何時候,我們的某個進程會捕獲dbase讀/寫錯誤,我們將嘗試進行診斷,然後運行文件中的還原。 – Ducain 2009-06-23 13:40:06

0

我認爲這就是擁有備份的關鍵所在嗎?

另外,如果表格已經損壞,當您嘗試恢復時可能發生的最壞情況是什麼?

我說去吧。

1

我想即使在您想到這一點之前,您需要採取措施確保不會備份損壞的表。因爲如果您恢復備份並且備份本身恰好是損壞的,那麼您就回到了開始的位置。

您正在使用什麼存儲引擎?

1

有一件事要考慮;根據數據庫的結構,從備份恢復單個表可能會導致參照完整性問題。