使用LVM进行差异备份

是否有可能创build基于LVM快照的差异备份(或者类似的技术)?

我想执行备份我的Intranet服务器,其中承载多个服务,以及他们的数据库(目前使用Postgres 8,Postgres 9和MySQL)。 所以我想过设置基于日志传送的备份 (除了备份文件系统),但是整个事情变得有点复杂。

作为替代,我正在考虑LVM快照 – 但数据库不小,我需要保存备份空间…

LVM快照在数据库不断写入文件时使用非常安全,这一点也很重要。

LVM快照在块设备级别进行写入时复制。 在文件系统或应用程序中没有任何特殊的活动,它们的行为与崩溃重启相同。 如果您可以暂停应用程序和文件系统,并在创build快照之前清除所有挂起的写入操作,则可以大大提高快照中数据的一致性。 例如,在数据库中进行全局写入locking,然后刷新文件系统并使其成为只读文件系统(某些文件系统(如XFS)具有明确的静默选项),然后使快照解锁所有内容。

就备份空间而言,快照是写入时复制的,因此只需要足够的空间分配给快照,以覆盖快照生命周期内在活动文件系统上覆盖的块数。

答案(对我来说)只是创build临时LVM快照,使用任何增量备份技术,然后放弃快照。

至于LVM快照的安全性(我通常在运行数据库时需要这样做),我相当确信它们可以正常工作。 为了弥补剩余风险,我正在closures数据库,每周进行一次完整备份。