安排Rails任务以安全地备份数据库文件



我在WindowsServer2008机器上有一个Rails应用程序。该应用程序使用sqlite数据库,我需要每天备份一次。备份应该通过将数据库文件复制到镜像文件夹来完成,镜像备份服务将从那里获取它。

有一个问题。我希望避免在应用程序使用数据库文件时复制该文件。如果我在操作过程中复制该文件,我将在备份中得到一个损坏和/或锁定的数据库文件,并且如果可能的话,恢复这样的文件太麻烦了。

现在,有没有让计划任务等待数据库不使用?或者在备份任务运行时阻止应用程序的其余部分使用数据库?

至于调度,我已经看到了几种解决方案,但我还没有致力于调度解决方案,所以我可以依靠调度解决方案功能来解决备份问题。

我建议使用SQLite命令行外壳:

sqlite3 /path/to/live.db '.backup /backup/path.db'

这将允许您在不导致常规数据库操作失败的情况下进行备份。来自文件:

复制操作可以增量完成,在这种情况下,源数据库在复制期间不需要锁定,只需要当它被实际读取时的短暂时间。

最新更新