微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决启动 mongodb 单服务器作为副本集以通过 supervisord 启用 oplog

我想用命令启动一个 mongod 实例 mongod --config config/mongod.conf 一旦上述过程开始运行,我也必须调用 mongodb/bin/mongo --eval rs.initiate() 现在的问题是我正在通过 supervisord 启动 mongod 我想一个一个地执行上述两个操作。 supervisord 只需要 1 个命令来启动进程,这是第一个命令。我没有其他地方可以运行 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 进程时..

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。