mongodb 的 ubuntu 新贵脚本

Erh*_*n A 11 mongodb instance ubuntu

我是 linux 和 mongodb 的新手。我已经在 ubuntu 上安装了 mongodb,但我想在不同的端口上再运行一个实例。正如我从其他问题和论坛中了解到的,必须有新贵脚本。 /sf/ask/511007661/

但是我在我的服务器上找不到或找不到新贵脚本。如果我创建一个新贵脚本,我应该在哪里找到它作为服务启动。

或者是否有任何其他适当且简单的方法可以在同一服务器但不同端口上启动另一个 mongodb 实例。

小智 8

您是从 10gen 存储库运行还是从默认的 Debian/Ubuntu 存储库运行?我建议使用官方 10gen 存储库。

查看此链接 - [10gen MongoDB How-To Install on Ubuntu:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/。最好在此更改之前卸载以前的 mongodb 安装,这也需要您修改存储库源(在 /etc/apt/source.list 中),但这也在上面的链接中进行了详细说明。我建议在 sysvinit 上使用 upstart,并且在 How-To 中概述了处理过程。

使用 10gen Ubuntu 设置,配置文件位于 /etc/mongodb.conf 中。

有几种方法可以运行单独的 mongod 进程,一种方法是从 cli 运行它 -

sudo -u mongodb mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001 &
Run Code Online (Sandbox Code Playgroud)

这将产生(使用'ps')

mongodb   2210  3.3  1.5 259012 15300 pts/0    Dl   11:48   0:00 mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001
Run Code Online (Sandbox Code Playgroud)

您可以通过 cli -> mongod --port 3001 进行连接

另一种方法是创建 /etc/mongodb.conf 的副本 -

sudo cp /etc/mongodb.conf /etc/mongodbnew.conf and editing the following lines in the new file - 


# mongodbnew.conf

dbpath=/var/lib/mongodbnew

#where to log
logpath=/var/log/mongodb/mongodbnew.log

port = 27018
Run Code Online (Sandbox Code Playgroud)

我已将 dbpath(存储 mongodb 文件的位置)从 /var/lib/mongodb 更改为 /var/lib/mongodbnew;日志路径已从 mongodb.log 更改为 mongodbnew.log,端口已从默认值 27017 更改为 27018(您还必须删除 # 以取消注释该行)。

我还更改了第一行以反映此配置文件的新名称。

您还必须创建数据目录,因为它不存在,没有它,mongod 进程将不会启动并确保所有者和组是 mongodb -

sudo mkdir /var/lib/mongodbnew
sudo chown -R mongodb:mongodb mongodbnew/
Run Code Online (Sandbox Code Playgroud)

此外,创建和更改日志文件的权限 -

sudo touch /var/log/mongodb/mongodbnew.log && sudo chown mongodb:mongodb /var/log/mongodb/mongodbnew.log
Run Code Online (Sandbox Code Playgroud)

要从 cli 启动新的 mongod 进程(在后台),请键入

sudo -u mongodb /usr/bin/mongod --config /etc/mongodbnew.conf &
Run Code Online (Sandbox Code Playgroud)

将以下内容发送到屏幕 -

“所有输出到:/var/log/mongodb/mongodbnew.log”

检查 mongod 进程是否使用“ps”运行 -

sysadmin@ubuntu:/var/lib$ ps auwx | grep mongo | egrep -v 'grep|sudo'
mongodb    921 11.3  1.5 627672 15608 ?        Ssl  10:56   4:30 /usr/bin/mongod --config /etc/mongodb.conf
mongodb   2137  7.8  1.5 627672 15880 pts/0    Sl   11:36   0:00 /usr/bin/mongod --config /etc/mongodbnew.conf
Run Code Online (Sandbox Code Playgroud)

要验证您是否可以连接,请运行 Mongo shell -

$ mongo --port 27018
MongoDB shell version: 2.0.5
connecting to: 127.0.0.1:27018/test
> 
Run Code Online (Sandbox Code Playgroud)

使用 lsof,您现在应该看到您的两个 mongod 进程,原始绑定到 27017,新的绑定到 27018。

$ sudo lsof -i :27017
COMMAND PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  921 mongodb    6u  IPv4   9066      0t0  TCP *:27017 (LISTEN)
sysadmin@ubuntu:/var/lib$ sudo lsof -i :27018
COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  2137 mongodb    6r  IPv4  11923      0t0  TCP *:27018 (LISTEN)
Run Code Online (Sandbox Code Playgroud)

为保证两个进程在启动时运行,复制原来的init配置文件——

sudo cp /etc/init/mongodb.conf /etc/init/mongodbnew.conf
Run Code Online (Sandbox Code Playgroud)

这应该导致两个文件,例如 -

$ ls -lart /etc/init/mongo*
-rw-r--r-- 1 root root 536 May  8 15:51 /etc/init/mongodb.conf
-rw-r--r-- 1 root root 554 Jun 11 11:43 /etc/init/mongodbnew.conf
Run Code Online (Sandbox Code Playgroud)

使用 vi 或任何您喜欢的样式编辑新的 mongodbnew.conf 文件 -


## Ubuntu upstart file at /etc/init/mongodbnew.conf

limit nofile 20000 20000

kill timeout 300 # wait 300s between SIGTERM and SIGKILL.

pre-start script
    mkdir -p /var/lib/mongodbnew/
    mkdir -p /var/log/mongodbnew/
end script

start on runlevel [2345]
Run Code Online (Sandbox Code Playgroud)

在运行级别停止 [06]

script
  ENABLE_MONGODB="yes"
  if [ -f /etc/default/mongodbnew ]; then . /etc/default/mongodbnew; fi
  if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec                /usr/bin/mongod -- --config /etc/mongodbnew.conf; fi
Run Code Online (Sandbox Code Playgroud)

结束脚本

我已经在 Ubuntu 12.04 上对此进行了测试,它似乎运行良好,包括重新启动后。我显然没有在生产中运行它。抱歉,如果上面有任何错字,但有很多信息,我可能错过了一些东西。

最后,这里有一个关于副本集的链接,它可以帮助您,因为它提供了从 cli 启动多个 mongod 实例的示例 - http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial