启动mongodb单服务器作为副本集,通过supervisord启用oplog



我想用命令启动一个mongod实例mongod --config config/mongod.conf一旦上述进程开始运行,我还必须调用mongodb/bin/mongo --eval rs.initiate()现在的问题是,我正在通过主管开始mongod我想一个接一个地执行以上两个操作。supervisord只需要一个命令就可以启动进程,这是第一个命令。我没有其他地方可以运行rs.initiate((。如果我把这两个命令都放在shell脚本中,那么控件将被第一个命令本身卡住。

也许您可以将这些命令组合成一个命令。即

mongod --config config/mongod.conf && sleep 5 && mongodb/bin/mongo --eval rs.initiate()

sleep命令假设5秒就足够让mongod出现并可用于rs.initiate((。假设你正在启动一个副本集,我假设你没有数据?如果是这样,启动应该相对较快。此外,如果您正在尝试制作单节点复制副本集,您可能需要考虑。。。

rs.initiate (
{
_id: "somereplicasetname",
version: 1,
members:
[
{ _id: 0, host: "somehostname:27017" }
]
}
)

这样您就不需要进一步配置启动的复制集了。id值(当前显示为somereplicasetname(预计将与配置文件mongod.conf中的副本集名称匹配,并且somehostname预计将解析为当前主机。

顺便说一句,我想你已经认识到你只需要初始化一次副本集,而不是每次启动mongod进程。。

最新更新