zoukankan      html  css  js  c++  java
  • MongoDB 副本集切换方法

    1、rs.stepDown([stepdownSecs, catchUpSecs])   step down as primary (disconnects)

        这个命令会将primary降级为Secondary节点

        登陆primary节点

    [root@127-0-0-1 conf]# mongo --port 2777
        shard1:PRIMARY> show dbs
        admin   0.000GB
        config  0.000GB
        local   0.001GB
        yoon    0.000GB

       通过 help 帮助查看各种命令

    shard1:PRIMARY> rs.help()
        rs.status()                                { replSetGetStatus : 1 } checks repl set status
        rs.initiate()                              { replSetInitiate : null } initiates set with default settings
        rs.initiate(cfg)                           { replSetInitiate : cfg } initiates set with configuration cfg
        rs.conf()                                  get the current configuration object from local.system.replset
        rs.reconfig(cfg)                           updates the configuration of a running replica set with cfg (disconnects)
        rs.add(hostportstr)                        add a new member to the set with default attributes (disconnects)
        rs.add(membercfgobj)                       add a new member to the set with extra attributes (disconnects)
        rs.addArb(hostportstr)                     add a new member which is arbiterOnly:true (disconnects)
        rs.stepDown([stepdownSecs, catchUpSecs])   step down as primary (disconnects)
        rs.syncFrom(hostportstr)                   make a secondary sync from the given member
        rs.freeze(secs)                            make a node ineligible to become primary for the time specified
        rs.remove(hostportstr)                     remove a host from the replica set (disconnects)
        rs.slaveOk()                               allow queries on secondary nodes
    
        rs.printReplicationInfo()                  check oplog size and time range
        rs.printSlaveReplicationInfo()             check replica set members and replication lag
        db.isMaster()                              check who is primary
    
        reconfiguration helpers disconnect from the database so the shell will display
        an error, even if the command succeeds.

        将primary降级为Secondary节点

    shard1:PRIMARY> rs.stepDown() 

       这个命令会让primary降级为Secondary节点并维持30S,如果这段时间没有新的primary选举出来,这个节点重新加入进行选举

    shard1:PRIMARY> rs.stepDown(30)

    2、通过设置优先级
        A.为了保证数据的一致性,必须先关闭应用的写服务
        B.提升要升级为primary节点的Secondary节点的优先级

    查看当前配置信息:

    shard1:PRIMARY> rs.conf()
    {
        "_id" : "shard1",
        "version" : 4,
        "protocolVersion" : NumberLong(1),
        "writeConcernMajorityJournalDefault" : true,
        "members" : [
            {
                "_id" : 0,
                "host" : "127.0.0.1:2777",
                "arbiterOnly" : false,
                "buildIndexes" : true,
                "hidden" : false,
                "priority" : 3,
                "tags" : {
    
                },
                "slaveDelay" : NumberLong(0),
                "votes" : 1
            },
            {
                "_id" : 1,
                "host" : "127.0.0.1:3777",
                "arbiterOnly" : false,
                "buildIndexes" : true,
                "hidden" : false,
                "priority" : 1,
                "tags" : {
    
                },
                "slaveDelay" : NumberLong(0),
                "votes" : 1
            },
            {
                "_id" : 2,
                "host" : "127.0.0.1:4777",
                "arbiterOnly" : false,
                "buildIndexes" : true,
                "hidden" : false,
                "priority" : 1,
                "tags" : {
    
                },
                "slaveDelay" : NumberLong(0),
                "votes" : 1
            }
        ],
        "settings" : {
            "chainingAllowed" : true,
            "heartbeatIntervalMillis" : 2000,
            "heartbeatTimeoutSecs" : 10,
            "electionTimeoutMillis" : 10000,
            "catchUpTimeoutMillis" : -1,
            "catchUpTakeoverDelayMillis" : 30000,
            "getLastErrorModes" : {
    
            },
            "getLastErrorDefaults" : {
                "w" : 1,
                "wtimeout" : 0
            },
            "replicaSetId" : ObjectId("5f27de76c8d22581cdeb2f2e")
        }
    }

        查看当前配置,存入config变量中

    shard1:PRIMARY> config=rs.conf() 

        修改config变量,将第三组端口为4777的成员优先级设置为3

    hard1:PRIMARY> config.members[2].priority = 3 

        配置生效

    shard1:PRIMARY> rs.reconfig(config)

       查看切换后的节点信息

    shard1:PRIMARY> db.isMaster()
    {
        "hosts" : [
            "127.0.0.1:2777",
            "127.0.0.1:3777",
            "127.0.0.1:4777"
        ],
        "setName" : "shard1",
        "setVersion" : 7,
        "ismaster" : true,
        "secondary" : false,
        "primary" : "127.0.0.1:4777",    
        "me" : "127.0.0.1:4777",
        "electionId" : ObjectId("7fffffff0000000000000004"),
        "lastWrite" : {
            "opTime" : {
                "ts" : Timestamp(1596599298, 1),
                "t" : NumberLong(4)
            },
            "lastWriteDate" : ISODate("2020-08-05T03:48:18Z"),
            "majorityOpTime" : {
                "ts" : Timestamp(1596599298, 1),
                "t" : NumberLong(4)
            },
            "majorityWriteDate" : ISODate("2020-08-05T03:48:18Z")
        }..
        ...
  • 相关阅读:
    【性能测试】二、TPS、QPS、RT和吞吐量这些都是什么?
    【性能测试】一、哪那么多概念,不就是这一条吗?
    【测试基础】九、如何做 API 测试?异步的呢?
    【测试基础】八、创建测试数据的时机
    【测试基础】七、你如何准备测试数据?
    【测试基础】六、做好测试计划需要注意这些
    【测试基础】五、这样提bug单,开发小哥还会怼你么?
    【测试基础】四、你的测试覆盖率是多少?
    【测试基础】三、为什么要做自动化测试?哪种项目合适?
    【测试基础】二、我好像真的不会设计“好的”测试用例
  • 原文地址:https://www.cnblogs.com/hankyoon/p/13438933.html
Copyright © 2011-2022 走看看