标签: mongodb

如何在 unix (mac osx) 上在后台运行 mongod?

我想在后台运行 mongod 作为一种始终存在的东西。什么是最好的方法来做到这一点?有点像我可以在启动时运行 MySQL 的方式,它总是在后台运行。也许这只是一些 bash 脚本,但很高兴听到是否有更好的方法。如果它只是 bash - 那会是什么样子?谢谢。

unix mac-osx background-process mongodb

57
推荐指数
3
解决办法
8万
查看次数

如何安装旧版本的 pecl 包

我有这个代码

    $passengerId = new \MongoId(oPassenger->getId());

    return $this->createQueryBuilder('Device')
        ->update()
        ->multiple(true)
        ->field('activated')->set(false)
        ->field('passenger')->unsetField()->equals($passengerId)
        ->field('_id')->notEqual($deviceId)
        ->getQuery()
        ->execute();
Run Code Online (Sandbox Code Playgroud)

它在我的开发服务器上运行良好,但在我的本地机器上崩溃。

pecl list在开发返回时运行

APC     3.1.13  beta
amqp    1.2.0   stable
intl    3.0.0   stable
mongo   1.3.7   stable
Run Code Online (Sandbox Code Playgroud)

和本地回报:

mongo   1.5.6   stable
xdebug  2.2.5   stable
Run Code Online (Sandbox Code Playgroud)

我机器上的崩溃消息是

"name":"MongoException","message":"Invalid object ID"},"code":500}
Run Code Online (Sandbox Code Playgroud)

我试过降级 mongo 的本地版本,但我无法用 pecl 糟糕的文档来解决这个问题。例如我试过这个:

sudo pecl upgrade -f -c channel://pecl.php.net/mongo-1.3.7
Run Code Online (Sandbox Code Playgroud)

但我一直在获取channel does not exist我所有的频道排列。

也在mongod --version本地运行返回db 版本 v2.6.0,在 dev 上返回db 版本 v2.4.3

想法?

php mac-osx pecl pear mongodb

44
推荐指数
1
解决办法
5万
查看次数

关闭文件系统上的 atime

我正在设置一个 mongoDB 副本集,我想做的第一件事就是关闭文件系统上的 atime。经过一番研究,我不反对这样做,但我不得不问,atime有什么用?我搜索了互联网,发现很少有“这个应用程序或这个过程使用时间,如果你把它关掉你会很愚蠢”这样的警告,但是作为一个天生偏执的人,我不得不怀疑。

那么,什么使用 atime,如果我将其关闭,会破坏什么?

linux unix filesystems mongodb

28
推荐指数
4
解决办法
5984
查看次数

如何通过ssh隧道连接到mongodb服务器

这是很容易让我连接到我的远程MySQL服务器上使用AWS sequelpro,但是我用的MongoDB做同样的事情挣扎。

我尝试通过命令行设置 ssh 隧道,如下所示:

ssh -fN -l root -i path/to/id_rsa -L 9999:host.com:27017 host.com
Run Code Online (Sandbox Code Playgroud)

我也试过用 ip 地址替换主机

这个想法是将端口 9999 上的所有 mongodb 连接转发到主机上端口 27101 上的连接。但是当我运行命令时:

mongo --host localhost --port 9999
Run Code Online (Sandbox Code Playgroud)

连接失败,我得到了这个:

MongoDB shell version: 2.6.0
connecting to: localhost:9999/test
channel 2: open failed: connect failed: Connection timed out
channel 3: open failed: connect failed: Connection timed out
2014-05-22T14:42:01.372+0300 DBClientCursor::init call() failed
2014-05-22T14:42:01.374+0300 Error: DBClientBase::findN: transport error: localhost:9999 ns: admin.$cmd query: { whatsmyuri: 1 } at src/mongo/shell/mongo.js:148
exception: connect failed …
Run Code Online (Sandbox Code Playgroud)

ssh database ssh-tunnel ssh-keys mongodb

21
推荐指数
1
解决办法
11万
查看次数

/etc/security/limits.conf 软 nproc 限制似乎被忽略

我的 MongoDB 数据库在负载下遇到问题,日志中出现以下错误:

[initandlisten] pthread_create failed: errno:11 Resource temporarily unavailable
[initandlisten] can't create new thread, closing connection
Run Code Online (Sandbox Code Playgroud)

我得出的结论是,我需要提高 1024 的“ulimit -u”或“最大进程”设置,并且使用率可能已经超过了启动的 Web 前端(不知道如何检查) .

我编辑了 /etc/security/limits.conf 以添加最后两行(前两行已经存在):

*                soft    nofile          350000
*                hard    nofile          350000
*                soft    nproc           30000
*                hard    nproc           30000
Run Code Online (Sandbox Code Playgroud)

然后我重新启动了系统(顺便说一句,我应该这样做,还是重新启动 mongod 服务就足够了?)

重新启动后,查看 mongod 进程的进程限制,似乎软限制已被忽略:

$ cat /proc/2207/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608 …
Run Code Online (Sandbox Code Playgroud)

linux ulimit amazon-web-services limits mongodb

18
推荐指数
1
解决办法
7万
查看次数

如何重置 MongoDB 副本集设置

我想重新开始副本的配置,可以吗?如何重置?

一群人说要删除的数据库内容,但有什么解决办法?

mongodb

17
推荐指数
3
解决办法
9万
查看次数

MongoDB 副本集是否至少需要 2 或 3 个成员?

这里的文档说三个:http : //docs.mongodb.org/manual/tutorial/deploy-replica-set/

“一个副本集需要三个不同的系统……”

而这里的文档说两个:http : //docs.mongodb.org/manual/core/replication/

“大多数副本集由两个或更多 mongod 实例组成......”

有谁知道哪个是正确的?

mongodb

16
推荐指数
1
解决办法
1万
查看次数

Mongodb - 旋转日志的正确方法

Mongo文档说我可以:

  1. 使用 -SIGUSR1 信号并重命名旧日志并切换当前日志
  2. 使用 OS 的 logrotate

我希望操作系统的 logrotate 能够压缩旧文件并删除最旧的文件,但是除了发送 SIGUSR1 之外,没有办法告诉 mongod 进程切换当前日志。

所以我写了

/var/log/mongodb/*.log {
    daily
    rotate 5
    compress
    dateext
    missingok
    notifempty
    sharedscripts
    postrotate
        /usr/bin/killall -SIGUSR1 mongod
        /usr/bin/killall -SIGUSR1 mongos
    endscript
}
Run Code Online (Sandbox Code Playgroud)

到 /etc/logrotate.d/mongo。

现在从 logrotate 和空日志文件中获取命名良好的日志文件,例如mongodb.log.2013-09-18T23-49-44SIGUSR1 切换的痕迹。如何摆脱后者?

logging logrotate mongodb

15
推荐指数
3
解决办法
4万
查看次数

是否可以从 .ns 和 .0, .1, . 恢复 MongoDB 数据库?……文件?

我在 Ubuntu 12.10 上安装了 MongoDB 2.0.4。最近我在从外部连接到数据库时遇到了一些问题,并发现有一些东西阻止了 MongoDB 正确启动。正如几个来源(参见 StackOverflow)所建议的那样,我删除/var/lib/mongodb/mongodb.lock并运行了mongod --repair. 这并没有解决问题,MongoDB 不会运行并不断创建锁定文件,之后它不会注意删除这些文件。通过查看日志,我意识到它无法访问某个名为 的文件夹$tmpSomething,因此(因为名称暗示了一个临时文件夹)我将其删除,然后一切正常......除了我只有一个的事实我以前的数据库在视线中,而其他数据库还在那里,因为我的/var/lib/mongodb/文件夹仍然充满.ns .0 .1 .n重量很大的文件。有没有办法将它们恢复到数据库中?(我已经尝试过使用 mongorestore,但正如我所料,它不处理这些文件)。

谢谢

ubuntu database mongodb

14
推荐指数
1
解决办法
1万
查看次数

什么硬件才能成为一个好的 MongoDB 服务器?从哪里得到它?

假设您现在在 dell.com 上,并且您正在购买一台服务器来为您的小型初创公司运行 MongoDB 数据库。您将不得不每分钟处理数万次写入和读取(但处理小对象)。你会选择 2 个处理器吗?在 RAM 上投资更多?

我听说(如果我错了,请纠正我)MongoDB 在 RAM 上处理了它所能处理的最多的内容,然后将所有内容刷新到磁盘,在这种情况下,我应该投资具有大型 L2 缓存的 CPU,可能 > 40GB 的 RAM和固态硬盘.. 对吗?

使用高端(~11,309 美元,2 个昂贵的处理器,96GB 内存)服务器还是 2x(~6,419 美元,2 个昂贵处理器,12GB 内存)服务器会更好吗?

戴尔还好吗,或者你有更好的建议吗?(我在美国境外,在葡萄牙)

hardware database mongodb

13
推荐指数
3
解决办法
1万
查看次数