如何在不丢失数据的情况下调整mongodb上限集合的大小?
是否有命令,或者有人提供脚本?
这就是我调整加盖的集合的大小:
db.runCommand({"convertToCapped": "log", size: 1000000000});
我已经有一个名为"log"的Capped Collection.所以我再次在它上面运行"convertToCapped",指定一个新的大小.我没有尝试过减小集合的大小.这可能是你需要使用Scott Hernandez版本的东西.但这适用于增加上限集合的大小而不会丢失任何数据或索引.
编辑: @JMichal是正确的.数据被保留,但索引不是并且需要重新创建.
您基本上需要创建一个新的上限集合并将文档复制到它.这可以在javascript(shell)或您选择的语言中轻松完成.
db.createCollection("new", {capped:true, size:1073741824}); /* size in bytes */ db.old.find().forEach(function (d) {db.new.insert(d)}); db.old.renameCollection("bak", true); db.new.renameCollection("old", true);
注意:只需确保在切换时没有人插入/更新旧集合.如果在db.eval("....")中运行该代码,它将在运行时锁定服务器.
有一项功能要求可以增加现有馆藏的规模:http://jira.mongodb.org/browse/SERVER-1864