我知道有一个ShardingTest()对象可用于创建测试分片环境(参见https://serverfault.com/questions/590576/installing-multiple-mongodb-versions-on-the-same-server),例如:
mongo --nodb
cluster = new ShardingTest({shards : 3, rs : false})
但是,考虑到我的测试机器中的磁盘空间有限,我得到了#34;日志文件的可用空间不足"使用上述命令时出错,我想设置smallfiles选项。我试过以下没有运气:
cluster = new ShardingTest({shards : 3, rs : false, smallfiles: true})
请问如何为分片测试启用小文件?谢谢!
答案 0 :(得分:6)
确定如何使用MongoDB shell命令的一种好方法是在没有括号的情况下键入命令到shell中,而不是运行它将打印命令的源代码。所以,如果你运行
ShardingTest
在命令提示符下,您将看到所有源代码。在30行左右,你会看到这个评论:
// Allow specifying options like :
// { mongos : [ { noprealloc : "" } ], config : [ { smallfiles : "" } ], shards : { rs : true, d : true } }
它为您提供了正确的语法来传递mongos,config和分片的配置参数(适用于所有分片的非复制集mongods)。也就是说,而不是为对象传递的分片指定数字。在代码中进一步挖掘:
else if( isObject( numShards ) ){
tempCount = 0;
for( var i in numShards ) {
otherParams[ i ] = numShards[i];
tempCount++;
}
numShards = tempCount;
这将获取一个对象,并使用对象中的子文档作为每个分片的选项参数。这导致,使用您的示例:
cluster = new ShardingTest({shards : {d0:{smallfiles:''}, d1:{smallfiles:''}, d2:{smallfiles:''}}})
从输出中我可以看到用--smallfiles开始分片:
shell: started program mongod --port 30000 --dbpath /data/db/test0 --smallfiles --setParameter enableTestCommands=1
shell: started program mongod --port 30001 --dbpath /data/db/test1 --smallfiles --setParameter enableTestCommands=1
shell: started program mongod --port 30002 --dbpath /data/db/test2 --smallfiles --setParameter enableTestCommands=1
或者,既然您现在已经有了源代码,那么您可以修改javascript以默认传递小文件。
答案 1 :(得分:2)
在source code of the function itself中可以找到ShardingTest()
调用模式的详尽说明。
例如,您可以为两个分片设置smallFiles
,如下所示:
cluster = new ShardingTest({shards: {d0:{smallfiles:''}, d1:{smallfiles:''}}})