2009-06-23 82 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

有一件事要考虑;根据数据库的结构,从备份恢复单个表可能会导致参照完整性问题。