2015-04-02 136 views
0

是否有可能使用.net司機:配置蒙戈副本集

  • 檢查某個蒙戈實例是否已經是一個副本
  • 的一部分創建副本如果不是
  • 添加\從現有副本中刪除節點

謝謝!

回答

0

是的。但是在mongo shell中執行這些操作要容易得多,因爲它已經定義了輔助函數。檢查出replica set tutorials

> rs.initiate 
function (c) { return db._adminCommand({ replSetInitiate: c }); } 
> rs.add 
function (hostport, arb) { 
    var cfg = hostport; 

    var local = db.getSisterDB("local"); 
    assert(local.system.replset.count() <= 1, "error: local.system.replset has unexpected contents"); 
    var c = local.system.replset.findOne(); 
    assert(c, "no config object retrievable from local.system.replset"); 

    c.version++; 

    var max = 0; 
    for (var i in c.members) 
     if (c.members[i]._id > max) max = c.members[i]._id; 
    if (isString(hostport)) { 
     cfg = { _id: max + 1, host: hostport }; 
     if (arb) 
      cfg.arbiterOnly = true; 
    } 
    if (cfg._id == null){ 
     cfg._id = max+1; 
    } 
    c.members.push(cfg); 
    return this._runCmd({ replSetReconfig: c }); 
} 

代碼可以是稍有不同:對於使用在蒙戈殼一些功能,例如rs.initiate()rs.add()每個步驟,可以通過在shell提示用括號輸入函數名見該函數的代碼在你的shell中,因爲shell版本;我的外殼是3.0.1。您可以使用此代碼作爲指導,在C#中編寫您自己的這些函數的版本。您將使用RunCommand方法在服務器上運行諸如replSetReconfigreplSetInitiate的命令。