MongoDB副本集通过js文件配置

时间:2014-07-18 11:00:53

标签: mongodb

我已手动为MongoDB配置了副本集。

一旦我在3个节点上启动守护进程,并且在它们启动并运行之后,从我已识别为“主要”的节点运行以下命令:

  1. mongo

    • 这会让我进入mongo shell
  2. use admin

  3. 创建副本集配置:

    cfg = {
        _id: 'csReplicaSet',
        members: [
            { _id: 0, host: 'node1IpAddress:27017'},
            { _id: 1, host: 'node2IpAddress:27017'},
            { _id: 2, host: 'node3IpAddress:27017', arbiterOnly: true}
        ]
    }
    
  4. rs.initiate(cfg)

  5. 我想知道如何在mongo可识别的JavaScript文件中执行这些步骤。我想自动执行这些步骤。

2 个答案:

答案 0 :(得分:3)

将您的init脚本传递给mongo shell

以编程方式,你几乎就在那里。您可以将指令保存到JavaScript文件,并在mongo命令行上运行。你也应该捕获&如果出现错误,请打印rs.initiate()的结果:

例如。内容initreplica.js

var cfg = { _id: 'csReplicaSet',
    members: [
        { _id: 0, host: 'node1IpAddress:27017'},
        { _id: 1, host: 'node2IpAddress:27017'},
        { _id: 2, host: 'node3IpAddress:27017', arbiterOnly: true}
    ]
};

var error = rs.initiate(cfg);
printjson(error);

使用以下命令行从

运行此命令
 mongo node1IpAddress:27017/admin initreplica.js

请注意,这假设您的三个mongod节点已在相同的IP地址上启动,包括--replSet csReplicaSet参数。除非从头开始重建副本集(并且没有现有的副本集配置),否则您只需要执行一次此初始化序列。

我还建议您阅读Writing Scripts for the mongo shell上的手册部分。它包含一些有用的提示,例如如何打开与其他MongoDB服务器的新连接以及use <db>等一些shell帮助程序的JavaScript equivalents

自动化生产部署

如果您正在寻找自动构建生产MongoDB集群的方法,您应该查看配置管理工具(如Chef或Puppet)的配方。即将推出Automation feature作为MMS(MongoDB管理服务)的一部分;自动化功能目前正在进行beta测试。

答案 1 :(得分:0)

我只是这样运行

mongo --port 27018 init_replica.set.js

这是来自

的init脚本
config = { _id: "m101", members:[
          { _id : 0, host : "MYHOST:27017" ,priority : 0, slaveDelay : 5 },
          { _id : 1, host : "MYHOST:27018"},
          { _id : 2, host : "MYHOST:27019"} ]
};
rs.initiate(config);
rs.status();