调度Rails任务以安全备份数据库文件

时间:2012-02-26 00:21:52

标签: ruby-on-rails ruby sqlite backup scheduled-tasks

我在Windows Server 2008计算机上安装了Rails应用程序。该应用程序使用sqlite数据库,我需要每天备份一次。应该通过将数据库文件复制到镜像文件夹来完成备份,镜像备份服务将从那里获取它。

有一个问题。我想避免在应用程序使用它时复制数据库文件。如果我在操作过程中复制文件,我会在备份中获得一个损坏的和/或锁定的数据库文件 - 如果可能的话,恢复这样的文件就太麻烦了。

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

至于调度,我已经看到了几个解决方案,但我还没有提交调度解决方案,因此我可以依靠调度解决方案功能来解决备份问题。

1 个答案:

答案 0 :(得分:7)

我建议使用SQLite Command Line Shell

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

这将允许您备份而不会导致常规数据库操作失败。来自文档:

  

复制操作可以递增地进行,在这种情况下是源   仅在数据库的持续时间内不需要锁定数据库   在实际被读取的短暂时间内。