我在WindowsServer2008机器上有一个Rails应用程序。该应用程序使用sqlite数据库,我需要每天备份一次。备份应该通过将数据库文件复制到镜像文件夹来完成,镜像备份服务将从那里获取它。
有一个问题。我希望避免在应用程序使用数据库文件时复制该文件。如果我在操作过程中复制该文件,我将在备份中得到一个损坏和/或锁定的数据库文件,并且如果可能的话,恢复这样的文件太麻烦了。
现在,有没有让计划任务等待数据库不使用?或者在备份任务运行时阻止应用程序的其余部分使用数据库?
至于调度,我已经看到了几种解决方案,但我还没有致力于调度解决方案,所以我可以依靠调度解决方案功能来解决备份问题。
我建议使用SQLite命令行外壳:
sqlite3 /path/to/live.db '.backup /backup/path.db'
这将允许您在不导致常规数据库操作失败的情况下进行备份。来自文件:
复制操作可以增量完成,在这种情况下,源数据库在复制期间不需要锁定,只需要当它被实际读取时的短暂时间。