我已经为MongoDB手动配置了一个副本集。
在三个节点上启动守护程序后,在它们启动并运行之后,从我标识为“主要”的节点上运行以下命令:
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文件中执行这些步骤。我想自动化这些步骤。
最佳答案
将您的初始化脚本传递给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
节点已在包括--replSet csReplicaSet
参数的相同IP地址上启动。除非您要从头开始重建副本集(并且没有现有的副本集配置),否则您只需要执行一次此初始化序列。我还建议您阅读Writing Scripts for the
mongo
shell上的手册部分。它包括一些有用的提示,例如如何打开与其他MongoDB服务器的新连接,以及一些shell帮助程序的JavaScript equivalents(例如use <db>
)。自动化生产部署
如果您正在寻找自动构建生产MongoDB集群的方法,则应研究诸如Chef或Puppet之类的配置管理工具的配方。作为MMS(MongoDB管理服务)的一部分,还有一个Automation feature即将发布;自动化功能目前正在Beta测试中。
关于通过js文件配置MongoDB副本集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24823466/