【发布时间】:2015-03-10 11:37:56
【问题描述】:
我正在从转储文件中恢复 Mongo 数据库并遇到问题。我无法修复数据库,因为没有足够的可用空间,现在我被卡住了。
所以我导入了 1000 万行,现在我想在集合上创建一个索引。但是当我尝试创建索引时,Mongo 错误 - 没有足够的可用内存。
所以我决定删除一半的行,然后回收空闲空间:
> for (var v = db.page_statistics.find().sort({_id:1}).limit(5000000);v.hasNext();) {
db.page_statistics.remove(v.next());
}
> db.govuk_info_page_statistics.count();
5828632 # this worked, only 5 milion rows left
接下来我尝试运行数据库修复以回收可用空间:
> db.repairDatabase();
{
"ok" : 0,
"errmsg" : "Cannot repair database backdrop having size: 19268632576 (bytes) because free disk space is: 9958019072 (bytes)"
}
我能做什么?如果不运行数据库修复,我无法回收足够的磁盘空间来创建索引,但我也没有足够的磁盘空间来运行修复,所以我陷入了第 22 个问题。
【问题讨论】:
标签: mongodb mongodb-query database nosql