通过.Net驱动程序配置Mongodb副本集

时间:2015-04-02 15:38:37

标签: c# .net mongodb

是否可以使用.Net驱动程序:

  • 检查某个Mongo实例是否已经是副本的一部分
  • 如果不是
  • ,则创建副本
  • 添加\从现有副本中删除节点

谢谢!

1 个答案:

答案 0 :(得分:0)

是。但是在mongo shell中执行这些操作要容易得多,因为它已经定义了辅助函数。查看replica set tutorials。对于使用mongo shell中的某些函数的每个步骤,例如rs.initiate()rs.add(),您可以通过在shell提示符下输入带括号的函数名来查看函数的代码:

> 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 });
}

由于shell版本,shell中的代码可能略有不同;我的shell是3.0.1。您可以使用此代码作为在C#中编写这些函数的自己版本的指南。您将使用RunCommand方法在服务器上运行replSetReconfigreplSetInitiate等命令。