【问题标题】:Scheduling a Rails task to safely backup the database file调度 Rails 任务以安全备份数据库文件
【发布时间】:2012-02-26 00:21:52
【问题描述】:

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

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

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

关于调度,我见过几个解决方案,但我还没有致力于调度解决方案,所以我可以依靠调度解决方案的功能来解决备份问题。

【问题讨论】:

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


    【解决方案1】:

    我建议使用SQLite Command Line Shell:

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

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

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

    【讨论】:

    • 简单而优雅,我什至可以从 Windows 计划任务中完成。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多