我已手动为MongoDB配置了副本集。
一旦我在3个节点上启动守护进程,并且在它们启动并运行之后,从我已识别为“主要”的节点运行以下命令:
mongo
use admin
创建副本集配置:
cfg = {
_id: 'csReplicaSet',
members: [
{ _id: 0, host: 'node1IpAddress:27017'},
{ _id: 1, host: 'node2IpAddress:27017'},
{ _id: 2, host: 'node3IpAddress:27017', arbiterOnly: true}
]
}
rs.initiate(cfg)
我想知道如何在mongo可识别的JavaScript文件中执行这些步骤。我想自动执行这些步骤。
答案 0 :(得分:3)
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();