修改MongoDB中Replica Set的配置

來源:互聯網
上載者:User

MongoDB1.6的版本中,向Replica Set中增加成員很簡單,如下:

#增加新的成員
rs.add("192.168.95.210:10000");
#增加新的選舉成員
rs.addArb("192.168.95.216:10001");

這樣配置好,Mongo會自動把資料同步到新的成員上

1.6版本中沒有提供remove成員的命令,據說在1.7版本中有這個命令

不過,我們可以通過replSetReconfig來完成此操作

下面我們去掉set中一個成員,並增加一個新的成員,操作如下:

#在remove的成員上停掉MongoDB服務
kill -2 `cat /opt/mongodb_data/mongod.lock`
#將老成員的資料data檔案scp到新伺服器上,為了加快rs_sync的過程
scp suv.* 10.11.15.39:/pvdata/
#在新成員上啟動MongoDB服務
/usr/local/mongodb/bin/mongod –fork –shardsvr –port 10000 –replSet set2 –dbpath /pvdata/mongodb_data  –logpath /pvdata/mongodb_log/mongod.log –logappend
#在該set的Master成員上執行命令
config = {_id: 'set2', members: [
        {_id: 0, host: '192.168.95.218:10000'},
        {_id: 1, host: '10.11.15.39:10000'},
        {_id: 2, host: '192.168.95.216:10001', arbiterOnly: true}
    ]}
    use local
    old_config = db.system.replset.findOne();
    #注意需要設定新config的versin,否則會報錯version number wrong
    config.version = old_config.version + 1;
    use admin
    db.runCommand({ replSetReconfig : config })

這樣就完成了對Replica Set的重新設定,移走了一台舊伺服器,並增加了15.39的新伺服器

我們查看新伺服器mongod.log,可以看到:

Wed Oct 27 14:24:19 done allocating datafile /pvdata/mongodb_data/local.ns, size: 16MB,  took 0.049 secs

Wed Oct 27 17:55:12 [rs_sync] replSet initialSyncOplogApplication 66500000
Wed Oct 27 17:58:02 [rs_sync] replSet initial sync finishing up
Wed Oct 27 17:58:02 [rs_sync] replSet set minValid=4cc7f49a:7b
Wed Oct 27 17:58:02 [rs_sync] building new index on { _id: 1 } for local.replset.minvalid
Wed Oct 27 17:58:02 [rs_sync] done for 0 records 0.052secs
Wed Oct 27 17:58:02 [rs_sync] replSet initial sync done
Wed Oct 27 17:58:04 [rs_sync] replSet SECONDARY

最後,說明新的Server已經sync完成,並作為secondary成功啟動了

我們用rs.status()也能看到新的set的狀態:

{
        "set" : "set2",
        "date" : "Wed Oct 27 2010 17:57:39 GMT+0800 (CST)",
        "myState" : 1,
        "members" : [
                {
                        "_id" : 0,
                        "name" : "zjm-Hadoop-slave218:10000",
                        "health" : 1,
                        "state" : 1,
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "10.11.15.39:10000",
                        "health" : 1,
                        "state" : 3,
                        "uptime" : 1231,
                        "lastHeartbeat" : "Wed Oct 27 2010 17:57:39 GMT+0800 (CST)"
                },
                {
                        "_id" : 2,
                        "name" : "192.168.95.216:10001",
                        "health" : 1,
                        "state" : 7,
                        "uptime" : 1237,
                        "lastHeartbeat" : "Wed Oct 27 2010 17:57:39 GMT+0800 (CST)"
                }
        ],
        "ok" : 1
}

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.