签到成功

知道了

CNDBA社区CNDBA社区

MongoDB 参数 查看 与 修改 说明

2022-04-28 20:22 3684 0 原创 MongoDB
作者: dave

1 查看参数

MongoDB 也有众多的配置参数,在官网有介绍:

https://www.mongodb.com/docs/manual/reference/parameters/

http://www.cndba.cn/cndba/dave/article/107954
http://www.cndba.cn/cndba/dave/article/107954

查看所有参数的命令如下:

>  db.adminCommand( { getParameter : "*" } )
{
        "AlwaysRecordTraffic" : "",
        "KeysRotationIntervalSec" : 7776000,
        "ShardingTaskExecutorPoolHostTimeoutMS" : 300000,
        "ShardingTaskExecutorPoolMaxConnecting" : 2,
        "ShardingTaskExecutorPoolMaxSize" : 32767,
        "ShardingTaskExecutorPoolMinSize" : 1,
        "ShardingTaskExecutorPoolRefreshRequirementMS" : 60000,
        "ShardingTaskExecutorPoolRefreshTimeoutMS" : 20000,
        "ShardingTaskExecutorPoolReplicaSetMatching" : "automatic",
        "TransactionRecordMinimumLifetimeMinutes" : 30,
        "adaptiveServiceExecutorIdlePctThreshold" : 60,
……

获取命令行启动参数:http://www.cndba.cn/cndba/dave/article/107954

> db.adminCommand( "getCmdLineOpts" )
{
        "argv" : [
                "/usr/local/mongodb/bin/mongod",
                "-f",
                "/etc/mongo.conf"
        ],
        "parsed" : {
                "config" : "/etc/mongo.conf",
                "net" : {
                        "port" : 27017
                },
                "processManagement" : {
                        "fork" : true
                },
                "storage" : {
                        "dbPath" : "/mongodb/data",
                        "journal" : {
                                "enabled" : true
                        }
                },
                "systemLog" : {
                        "destination" : "file",
                        "logAppend" : true,
                        "path" : "/mongodb/logs/mongodb.log",
                        "quiet" : true
                }
        },
        "ok" : 1
}
>

查看某个具体参数:

> db.adminCommand( { getParameter:1,  syncdelay:1 } )
{ "syncdelay" : 60, "ok" : 1 }

2 修改参数

MongoDB中参数修改有如下几种方式:http://www.cndba.cn/cndba/dave/article/107954

1.使用 setParameter命令:

db.adminCommand( { setParameter: 1, : } )

http://www.cndba.cn/cndba/dave/article/107954

2. 修改配置文件

3.在mongod和mongos的命令行选项中指定—setParameter。

mongod --setParameter <parameter>=<value>
mongos --setParameter <parameter>=<value>


db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } )
mongod --setParameter scramIterationCount=12000

> db.adminCommand( { getParameter:1,  scramIterationCount:1 } )
{ "scramIterationCount" : 12000, "ok" : 1 }
> db.adminCommand( { setParameter: 1, scramIterationCount: 11000 } )
{ "was" : 12000, "ok" : 1 }
> db.adminCommand( { getParameter:1,  scramIterationCount:1 } )
{ "scramIterationCount" : 11000, "ok" : 1 }
>

3 关于参数的动态、静态说明

实际上,MongoDB 的参数也是分动态和静态的。

1.动态参数可以在线修改。
2.静态参数只能是修改到配置文件,重启生效。

http://www.cndba.cn/cndba/dave/article/107954
http://www.cndba.cn/cndba/dave/article/107954
http://www.cndba.cn/cndba/dave/article/107954

比如connPoolMaxShardedInUseConnsPerHost 参数:

> db.adminCommand( { getParameter:1,  connPoolMaxShardedInUseConnsPerHost:1 } )
{ "connPoolMaxShardedInUseConnsPerHost" : 2147483647, "ok" : 1 }
> db.adminCommand( { setParameter: 1, connPoolMaxShardedInUseConnsPerHost: 10 } )
{
        "ok" : 0,
        "errmsg" : "not allowed to change [connPoolMaxShardedInUseConnsPerHost] at runtime"
}
> db.adminCommand( { getParameter:1,  connPoolMaxShardedInUseConnsPerHost:1 } )
{ "connPoolMaxShardedInUseConnsPerHost" : 2147483647, "ok" : 1 }
>

在线修改时会直接提示:

“not allowed to change [connPoolMaxShardedInUseConnsPerHost] at runtime”http://www.cndba.cn/cndba/dave/article/107954

仔细阅读官方文档,发现了规律。 MongoDB的官方文档没有像Oracle 那样明确的标识参数是静态参数还是动态参数。 http://www.cndba.cn/cndba/dave/article/107954

只有通过修改方式来辨别:

  1. 动态参数:文档会提供两种修改方法:
    db.adminCommand( { setParameter: 1, tcmallocReleaseRate: 5.0 } )
    mongod --setParameter "tcmallocReleaseRate=5.0"
    
  2. 静态参数:文档只会提供一种修改方法:
    mongos --setParameter connPoolMaxShardedInUseConnsPerHost=100
    

这里还有一个问题需要注意,就是针对动态参数的修改,在下次重启后会失效。所以在修改动态参数时,除了修改实例,也需要修改配置文件。

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2283
    原创
  • 3
    翻译
  • 579
    转载
  • 196
    评论
  • 访问:8186466次
  • 积分:4428
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ