副本集的配置

前面提到Mongo通过副本集实现备份,或者说数据的高可用,但是默认的配置跟我们的实际配置并不会那么契合,那如何查看和设置副本集的配置文件呢?

副本集配置的小例子

查看配置

1.通过 rs.conf() 查看(任何数据库都可执行)
rs0:PRIMARY> rs.conf()
{
    "_id" : "rs0",
    "version" : 3,
    "protocolVersion" : NumberLong(1),
    "writeConcernMajorityJournalDefault" : true,
...
}

2.通过 replSetGetConfig 查看(只能在admin执行)
rs0:PRIMARY> db.runCommand( { replSetGetConfig: 1 } )
{
    "operationTime" : Timestamp(1543108272, 1),
    "ok" : 0,
    "errmsg" : "replSetGetConfig may only be run against the admin database.",
    "code" : 13,
    "codeName" : "Unauthorized",
    "$clusterTime" : {
        "clusterTime" : Timestamp(1543108272, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}

虽然上面也返回了一些信息,但这些其实是报错信息,报错信息提示见 errmsg 字段,它提示这个命令应该在admin数据库执行。

\# 切换到admin并执行,果然出现了配置信息
rs0:SECONDARY> use admin
switched to db admin
rs0:SECONDARY> db.runCommand( { replSetGetConfig: 1 } )
{
    "config" : {
        "_id" : "rs0",
        "version" : 3,
        "protocolVersion" : NumberLong(1),
        "writeConcernMajorityJournalDefault" : true,
        "members" : [

修改配置

修改配置的话可以采用 rs.reconfig() 方法,比如我们把 electionTimeoutMillis 这个字段(选举超时时间)的值由10000改为9000(官网建议这个值不要超过12000)。 注: 修改配置必须在主节点上进行

注: 修改配置的过程可能会导致主节点不可用,这时也无法写入数据到主节点,所以建议在空闲时间修改配置,当修改完毕后会重新选举主节点。

副本集配置的字段说明

本人英语能力有限,若有翻译错误的地方还望在评论中指正,不胜感激!

建议看完此文章再看下官方文档,写得更详细

参考: https://docs.mongodb.com/manual/reference/replica-configuration/#rsconf.settings

Last updated

Was this helpful?