【问题标题】:Locking entire database while running a delayed job在运行延迟作业时锁定整个数据库
【发布时间】:2011-12-18 23:06:38
【问题描述】:

我的延迟工作与导出应用数据库中大多数表的略微编辑版本有关,在此过程中,重要的是当前数据没有被编辑。

在运行这个延迟的作业时是否可以锁定整个数据库?

更多信息:

具体要导出的数据库是Heroku的postgresql数据库PostgreSQL。

流程类似于(以下所有内容都应由代码自动完成):

  1. 网站将进入维护模式,
  2. 冻结然后导出数据库,然后
  3. 导出完成后,重新激活网站

【问题讨论】:

  • 您使用的是什么类型的数据库? MySQL、postgres 还是..?

标签: ruby-on-rails-3.1 delayed-job


【解决方案1】:

鉴于您的问题没有太多信息,我将尽我所能回答您。

1) 数据库类型和模型是什么?它是像 MS Access 或 Informix SE 这样的独立数据库吗?

2) 如果不是独立引擎,此数据库是否支持复制。我过去经常使用 MS SQL Server,当数据库处于活动状态和正在编辑时,复制会产生影响。这意味着编辑的数据是否被复制。在这种情况下,请查阅文档。是否可以选择使用复制来保留当前数据库?

3) 这是什么任务?听起来像是维护。我们的 Informix SE 数据库在导入或导出时会锁定。在生产服务器上,我的工作是确保没有本地服务器应用程序试图访问锁定的数据库,并且在数据库被锁定时我们的外部支付网站不会干扰。

4) 如果这是一个未处于维护模式的生产站点,那么我建议您可能不想锁定整个数据库。

很抱歉没有直接回答您的问题,但需要更多信息,例如您是否询问是否可以从某些 db 模型上的 Ruby DB 接口完成。

【讨论】:

  • 您好,感谢您回复此问题。我在上面添加了更多信息。是的,这是一项维护任务,请参见上面的流程。
  • 如果这是维护,则锁定数据库。通过维护,我假设没有其他东西正在访问数据库。如果 PostgreSQL 不支持,您可能必须通过不锁定实际数据库来锁定数据库,而是通过阻止对数据库的访问来锁定数据库。我不是 PostgreSQL 专家。我使用 MySQL。
猜你喜欢
  • 2011-02-12
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
  • 2017-02-04
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
相关资源
最近更新 更多