MySQL恢复不一致的数据库

时间:2013-12-12 17:56:25

标签: mysql

作为这个问题的后续行动: Is copying /var/lib/mysql a good alterntive to mysqldump?

如果我没有停止数据库服务器,并且我的表不一致,MySQL是否仍然可以从中恢复(通过删除不一致的行)?或者备份完全没用?

我一直在备份/var/lib/mysql很长一段时间来备份......但我从来没有使用它们。如果我不得不(事后,就是这样),发现我不能这样做是很糟糕的。

1 个答案:

答案 0 :(得分:1)

一致的快照(来自同一时刻的所有数据)都很好 - 这是(希望)在崩溃中发生的事情,MySQL(特别是InnoDB)被设计为从中恢复,尽管可能需要一段时间启动,因为它崩溃恢复。对于MyISAM表 - 你是独立的。

问题是复制文件需要一段时间,文件可能会在复制时发生变化,因此备份文件可能是不一致的快照。包含旧数据的文件的开头比结束!此外,所有文件都需要彼此同步。 MySQL会尝试,但无法保证它会从这种情况中恢复。

因此,你可以使用像LVM快照这样的东西来及时获得一致的快照,或者将mysqldump与--single-transaction一起使用,或者在备份时使表成为只读。