【问题标题】:MongoDB database to reset with Rails 3.0使用 Rails 3.0 重置 MongoDB 数据库
【发布时间】:2012-03-26 14:10:35
【问题描述】:

我正在使用 MongoDB 部署我的第一个 ROR 应用程序。我注意到,如果我部署它的机器被重置,那么通常数据库将部分或完全消失。这也发生在我在我的 Rails 应用程序中明确声明我正在使用没有活动记录的 MongoDB 之前,尽管它在我之前就起作用了。

我查看了 /data/db/ 文件夹,似乎有许多数据库文件:app-production.1、app-production.2 等。在我的 mongo_config.rb 初始化文件中,我将数据库指定为

 MongoMapper.database = "app-#{Rails.env}"

我还启动了交互式 mongo 控制台,发现有 5 个以上的应用程序数据库。所以我的问题是,MongoDB 或 Rails 在关闭时会自动创建数据库的新实例吗? MongoDB 是否使用多个文件来跨越数据库?谢谢!

【问题讨论】:

  • mongo shell 中show dbs 的输出是什么?

标签: ruby-on-rails ruby-on-rails-3 mongodb


【解决方案1】:

MongoDB 数据库跨越多个文件(app-production.1、app-production.2、...)。每个新数据库都驻留在自己的一组文件中。

MongoDB 提供惰性数据库创建。如果您写入数据库并且它不存在,它将被创建。如果存在具有此名称的数据库,则将使用它。

如果机器被重置,那么数据库将部分或全部消失

这取决于您对“重置”的定义。如果您拔下电源线,那么 mongodb 将没有时间正常关闭。最近的版本默认开启了日志功能,因此不会发生重大数据丢失 - 在硬崩溃的情况下,mongodb 将尝试重播日志。 注意:如果您没有在启用日志的情况下运行,则应在任何不正常关闭后修复数据库,否则可能面临即将发生的数据库损坏。

如果你重新安装机器,那也难怪数据没了:)

【讨论】:

  • 感谢 Sergio,正是我想要的。是的,电源被关闭了,这可以解释为什么部分记录消失了。谢谢!
  • 日志也仅在 64 位版本上默认启用
  • @FrederickCheung:不知道。无论如何,谁运行 32 位构建? :)
猜你喜欢
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
  • 1970-01-01
  • 2012-01-21
  • 2013-07-29
  • 1970-01-01
相关资源
最近更新 更多