备份整个服务器(包括 MySQL)是否足够?

备份整个服务器(包括 MySQL)是否足够?

我想要对我的服务器进行完整备份。我的服务器是 CentOS 5。

我的想法:我实际上可以将服务器上的每个文件都备份,这样我就可以备份所有内容。服务器配置、我的 PHP 文件、MySQL DB、所有内容……这是一个准确的假设吗?

我本来要另外备份 MySQL,但是由于数据库文件包含在我的服务器备份中,所以也许没有必要?

更远... 我正在试用 RackSpace Server Backup。它基本上会获取我磁盘上的每个文件,并通过 SSL 进行备份,并加密备份磁盘上的数据。我可以每天运行它,并且只有“更新的文件”才会发送到备份目标。

谢谢这里的帮助...

答案1

我不同意 Nils 的观点。我承认我无法与 MySQL 对话,但我可以从经验中说,这是不是对于 Oracle 来说也是如此。

即使即时快照,对磁盘上的数据库文件进行快照也是毫无意义的。数据库包含许多事务,其中一些几乎完全刷新到磁盘,一些部分刷新,一些几乎完全保留在 RAM 中。磁盘上的内容可能可以使用数据库工具恢复,但它不太可能是一个可用的数据库。

更糟糕的是:对于任何大型数据库,备份都需要一些时间,这意味着仅使用磁盘备份是完全无用的。可以把它想象成一张非常模糊的快照;你拍摄一个移动速度非常快的东西(你的数据库),然后你保持快门打开一段时间以进行备份(20 分钟?2 小时?28 小时?(对于我的一些生产数据库))。照片会非常模糊;你会提前捕捉到一些表,只有很少的事务提交到磁盘;其他的你可能会在几个小时后捕捉到,到那时磁盘上已经有几十万个事务了。我不能说你的磁盘备份不能立即工作;我甚至不能说你不能用数据库取证工具从中恢复;但我不会把我的工作托付给它。

如果您的 FS 支持快照,并且您的 DB 支持热备份(或同等功能),那么它们就可以工作。热备份是指示数据库静止表空间的指令;它会将所有待处理的事务缓冲在某种日志文件上,然后应用它们整体当您将表空间从热备份状态中取出时。这可以在您静止表空间并将其备份到磁带时起作用,但如果您可以静止表空间,快照底层文件系统,然后从热备份中释放表空间并滚动,则绝对有效快照停止录音。

如果您无法做到这一点 - 我经常做不到 - 那么我会告诉备份软件完全忽略数据文件,并让 MySQL 首先将 mysqldump 运行到在线存储,然后将其转入磁带。我从未遇到过从这些恢复的问题。

但正如我经常在这种情况下补充的那样,任何如果你这样做,你应该很好地记录它并测试它频繁地。最后一条比其他任何建议都重要。如果你知道它有效,谁会在乎你在做什么?你可以使用 zip 备份写在蝉翼壳上的 WORM 档案,前提是它可靠地工作。但是如果你不测试它,谁会关心 serverfault 的头头们说什么?它不适合用途。

答案2

基本上是的 - 一切都是文件。但是:由于某些数据仍在 RAM 缓存中且尚未写入磁盘,因此磁盘上包含数据的文件可能不一致。

因此,如果您仅使用文件备份来备份高负载下的数据库,您可能会丢失一些事务。通过文件进行完整备份的最安全方法是关闭数据库,同步磁盘,然后开始备份。或者使用 DB-means 将数据库内容备份到磁盘 - 这些备份将或多或少保持一致。在 mySQL 中,您可以选择不同的备份模式...

编辑:尝试 mysql-Administrator(如果有的话)。在那里,您可以通过 GUI 指定备份作业。结果将是使用您的备份规范的相应备份命令作为 cron-job。

相关内容