我一直在将 mongodb 作为副本集运行,最近尝试将其移动到分片集群。
我有点不确定的一件事是我应该如何启动 mongos 进程。以前,我在安装 mongodb 时使用了 10gen rpm,它为 mongod 服务安装了一个 init.d 脚本。我想让 mongos 以类似的方式运行,但不确定我到底应该怎么做。这是编写自定义 init 脚本的情况吗?
我使用的是 Debian 6 和 Mongodb 2.4
[我之前曾在 mongodb google 群组中发布过这个问题,但由于没有收到任何回复,所以我将其复制到了这里 - 我也会在这里添加任何回复]
答案1
您在回答中链接了相关的官方请求,并且服务器-3748确实解释了为什么这些目前不存在的一些原因。
最基本的原因是,mongos
如果没有至少一个配置服务器启动并运行,您将无法启动,否则它将拒绝启动,这使得它成为初始化脚本(外部依赖项)的不良候选者。通常,如果没有好的方法来检查失败的原因,您希望避免服务无法启动。
然而,给人们一个脚本而不是让他们自己修改/编写脚本仍然是有益的,因此存在 Jira 问题。
我建议的方法是将任何脚本基于现有的mongod
init 脚本,然后对其进行修改mongod
以在mongos
适当的位置进行替换。以下是该脚本在 Debian 中的当前版本:
https://github.com/mongodb/mongo/blob/master/debian/init.d
您需要更改的事情:
> DAEMON=/usr/bin/mongos
> DESC=mongos-router
>
> NAME=mongos
>
> CONF=/etc/mongos.conf
> PIDFILE=/var/run/$NAME.pid
> ENABLE_MONGODB=yes
这样做的好处是,在您安装了 10gen 包之后,用户就已经设置好了,并且您可以mongod
在系统上参考脚本。
您将需要为您的 mongos 创建具有适当值的配置文件,并且可能还有一些其他内容需要调整 - 关键是在将任何内容永久化之前进行测试。
一旦通过测试确认脚本可以正常工作,就可以使用以下命令永久添加它update-rc.d
答案2
嗯,好像有一张未结票据只要求这个,所以我猜它不是官方提供的。如果我找到任何用户贡献的脚本或编写自己的脚本,我会更新此答案。