在ShardingTest中设置小文件

时间:2014-05-31 16:57:16

标签: mongodb sharding

我知道有一个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})

请问如何为分片测试启用小文件?谢谢!

2 个答案:

答案 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:''}}})