【问题标题】:Can't map file memory in MongoDB无法在 MongoDB 中映射文件内存
【发布时间】:2011-11-29 15:53:27
【问题描述】:

托管我们的 MongoDB 实例的 windows server 2003 机器磁盘空间不足,Mongo 开始生成错误:

无法映射文件内存。

向服务器添加额外磁盘空间并重新启动 MongoDB windows 服务后,对数据库的任何操作仍会生成“无法映射文件内存”错误。我什至尝试进行修复,它给出了同样的错误:

> db.repairDatabase(); { "assertion" : "无法映射文件内存", “断言代码”:10085, "errmsg" : "数据库断言失败", “好”:0 }

知道我可以做些什么来让我的数据库再次运行吗?

【问题讨论】:

  • 修复数据库时不需要删除锁定文件。当我们的托管服务提供商在没有警告的情况下关闭 MongoDB 服务器时,我遇到了类似的问题。副本集无法正确启动,rs.initiate() 正在抛出上述异常。我使用db.shutdownServer() 关闭服务器并使用--repair 标志启动mongod。完成后,数据库能够再次启动。感谢您的提示!

标签: mongodb


【解决方案1】:

停止服务,删除锁定文件,然后执行 mongod --repair 有效,即使 db.repairDatabase 没有。

【讨论】:

  • 事实证明这并没有像我预期的那样工作。即使 Mongo 再次运行没有错误,它现在已经使用了 90% 的 cpu...
【解决方案2】:

贾斯汀的回答对我有用。

这里有一些更详细的 Ubuntu 说明:

Stop Mongo Service: sudo service mongodb stop
Delete Lock File: sudo rm /var/lib/mongodb/mongod.lock
Repair the DB: sudo mongod --repair --dbpath=/var/lib/mongodb
Restart the Mongo Service: sudo service mongodb start

希望对某人有所帮助。

(已编辑 - 注意 mongodb 是服务名称,但 mongod 是修复的正确命令)

【讨论】:

  • 你不应该那样关闭 MongoDB。最好的方法是进入 admin db (mongo admin) 中的 mongo shell,然后使用以下命令关闭服务器:db.shutdownServer() 这将产生干净的关闭,而 Mongo 不会出现任何问题。跨度>
猜你喜欢
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 2011-05-14
  • 2016-12-08
  • 2010-09-26
  • 1970-01-01
相关资源
最近更新 更多