标签: mongodb

损坏的 WiredTiger MongoDB 文件

我正在 ext4 文件系统上使用 WiredTiger 引擎运行 MongoDB。我做的最后一件事是开始构建索引,但后来发生了一些事情,我需要取消索引构建并重新启动机器。我通过在运行索引构建的 MongoDB 控制台中按 Ctrl+C 来完成此操作。它很好地问我是否要终止索引构建,我说是,然后我等待它关闭,这花了几秒钟,所以看起来一切都很好。然后(我猜是 13 秒后)我使用 关闭了服务器systemctl

相关日志:

2015-06-04T22:41:56.176Z I -        [conn1]   Index Build: 5950100/253027947 2%
2015-06-04T22:41:59.022Z I -        [conn1]   Index Build: 5968100/253027947 2%
2015-06-04T22:42:02.002Z I -        [conn1]   Index Build: 5999700/253027947 2%
2015-06-04T22:42:05.086Z I -        [conn1]   Index Build: 6043300/253027947 2%
2015-06-04T22:42:08.114Z I -        [conn1]   Index Build: 6067900/253027947 2%
2015-06-04T22:42:11.006Z I -        [conn1]   Index Build: 6096800/253027947 2%
2015-06-04T22:42:14.007Z I -        [conn1]   Index Build: 6153800/253027947 2%
2015-06-04T22:42:16.588Z I COMMAND  [conn3] going to kill op: …
Run Code Online (Sandbox Code Playgroud)

corruption mongodb

5
推荐指数
0
解决办法
5039
查看次数

如何将 mongodb 3.4.2 降级到 2.6.11?

我的 CentOS 沙箱服务器上安装了 mongodb 2.6.11。

Dec 03 22:24:38 Updated: mongodb-org-mongos-2.6.11-1.x86_64
Dec 03 22:25:07 Updated: mongodb-org-tools-2.6.11-1.x86_64
Dec 03 22:25:08 Updated: mongodb-org-shell-2.6.11-1.x86_64
Dec 03 22:26:39 Updated: mongodb-org-server-2.6.11-1.x86_64
Dec 03 22:29:37 Updated: mongodb-org-2.6.11-1.x86_64
Run Code Online (Sandbox Code Playgroud)

我想将该沙箱升级到最新的 mongodb 版本。所以,我按照这里的说明进行操作:

https://docs.mongodb.com/master/tutorial/install-mongodb-on-red-hat/
Run Code Online (Sandbox Code Playgroud)

特别是,我必须创建一个 /etc/yum.repos.d/mongodb-org-3.4.repo 文件。那工作得很好。

# mongod -version
db version v3.4.2
Run Code Online (Sandbox Code Playgroud)

现在,我想说服自己,如果需要,我可以将 mongodb 降级回 2.6.11 版。

当我尝试降级时,出现错误:

# yum downgrade mongodb-org
Error: Package: mongodb-org-3.4.1-1.el6.x86_64 (mongodb-org-3.4)
      Requires: mongodb-org-mongos = 3.4.1
      Installed: mongodb-org-mongos-3.4.2-1.el6.x86_64 (@mongodb-org-3.4)
          mongodb-org-mongos = 3.4.2-1.el6
      Available: mongodb-org-mongos-2.6.0-0.1.rc0.x86_64 (mongodb)
          mongodb-org-mongos = 2.6.0-0.1.rc0
      . . . . . 
      Available: mongodb-org-mongos-2.6.12-1.x86_64 …
Run Code Online (Sandbox Code Playgroud)

yum mongodb

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

即使设置了限制,MongoDB 也“打开了太多文件”

当 MongoDB 启动时,即使在编辑/etc/security/limits.conf并将限制设置为unlimited.

Mar 09 18:29:13 ns524052 mongod[1298]: 2017-03-09T18:29:13.199+0100 I CONTROL  [initandlisten]     distarch: x86_64
Mar 09 18:29:13 ns524052 mongod[1298]: 2017-03-09T18:29:13.199+0100 I CONTROL  [initandlisten]     target_arch: x86_64
Mar 09 18:29:13 ns524052 mongod[1298]: 2017-03-09T18:29:13.199+0100 I CONTROL  [initandlisten] options: { net: { port: 29000 }, security: { authorization: "enabled" }, storage: { dbPath: "/home/databases/mongo" }, systemLog: { quiet: true } }
Mar 09 18:29:13 ns524052 mongod[1298]: 2017-03-09T18:29:13.235+0100 I -        [initandlisten] Detected data files in /home/databases/mongo created by the 'wiredTiger' storage …
Run Code Online (Sandbox Code Playgroud)

mongodb ubuntu-16.04

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

无法连接到远程数据库

我在玩MongoDB。我在 MySQL 方面有很多经验,并且正在使用称为Sequel Pro 的东西连接到远程数据库。我现在正在尝试MongoHub,但似乎无法让它连接到远程数据库。

我尝试了一个基本的 SSH 隧道

ssh -f user@remotehost.com -L 9009:remotehost.com:27017 -N
Run Code Online (Sandbox Code Playgroud)

但这没有用。其他数据库管理工具如何使用 ssh 登录来提供与没有开放端口的数据库的连接?这是我可以自己设置的东西(通过隧道或其他东西)吗?

mysql ssh connection mongodb

4
推荐指数
1
解决办法
2005
查看次数

使用命令行命令关闭 MongoDB,是否可能?

我可以使用命令行命令关闭 mongoDB 吗?
我使用 MacOSX,但它可能与 linux 类似。
如果没有,有人知道我如何制作一个可以进入 mongo shell 并关闭服务器的脚本吗?

mac-osx mongodb

4
推荐指数
1
解决办法
4989
查看次数

MongoDB 防止持续断电的最佳实践

背景:

我有一些 AIO 应用程序机器,(运行带有 rails + mongodb + 铬的 ubuntu)在移动教练的一台机器上用于显示信息,偶尔用户可能会将某些数据中的卡盘更改为 mongodb。

现在,机器的电源是恒定的,教练司机可以随时关闭机器。机器有2个分区,第一个是/的aufs,另一个是mongodb的ext4 /data目录。但是在停电的瞬间,db没有数据输入。

问题:

每次机器断电重启(每隔几个小时),mongodb都会在其目录下留下一个mongod.lock文件。在 /etc/rd.local 中,我试图在每次启动时删除锁定文件,但有时它仍然拒绝启动。这导致我的应用程序启动失败。

根据官方文档:http : //www.mongodb.org/display/DOCS/Durability+and+Repair,我仍然有一些无法启动的情况。

在上述常规电源故障情况下运行 mongodb 的最佳做法是什么?无需投入额外的硬件。

linux mongodb

4
推荐指数
2
解决办法
2125
查看次数

mongod fork 与 nohup

我目前正在编写流程管理软件。我们使用的一个包是 mongo。

与启动 mongo 有什么区别

mongod --fork --logpath=/my/path/mongo.log --logappend
Run Code Online (Sandbox Code Playgroud)

nohup mongod >> /my/path/mongo.log 2>&1 < /dev/null &
Run Code Online (Sandbox Code Playgroud)

?

我的第一个想法是 --fork 可以产生更多的进程和/或线程,有人建议我 --fork 可以用于更改有效用户(降级权限)。但是我们都在同一个用户下运行(进程管理器和mongod),那么还有其他区别吗?

谢谢

linux mongodb

4
推荐指数
1
解决办法
6747
查看次数

nginx反向代理到mongodb rest接口

我正在尝试使用代理 MongoDB 的 REST 接口的 HTTP 身份验证设置反向代理。到目前为止,我有这个:

server {
        listen 80;
        server_name tld.example.com;
        charset utf-8;
        access_log /home/jill/logs/nginx.access.log main;

        # Redirect all HTTP traffic to HTTPS URL
        rewrite ^(.*) https://tld.example.com$1 permanent;
}

server {
        listen 443;
        server_name tld.example.com;

        ssl on;
        ssl_prefer_server_ciphers on;
        ssl_protocols           TLSv1 SSLv3;
        ssl_ciphers             HIGH:!ADH:!MD5:@STRENGTH;
        ssl_session_cache       shared:TLSSL:16m;
        ssl_session_timeout     10m;
        ssl_certificate /path/to/cert/tld.example.com.bundle.crt;
        ssl_certificate_key /path/to/cert/tld.example.com.key;

        gzip on;
        gzip_vary on;
        gzip_comp_level 6;

        keepalive_timeout 300;
        keepalive_requests 500;

        location / {
                proxy_pass https://127.0.0.1:28017;

                proxy_redirect     off;

                proxy_max_temp_file_size 0;

                proxy_connect_timeout      90;
                proxy_send_timeout         90;
                proxy_read_timeout         90;

                proxy_buffer_size …
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy mongodb

4
推荐指数
1
解决办法
4786
查看次数

MongoDB 分片配置和 MongoS 存储

在做今年的预算时,我需要估计明年的容量需求。我们计划需要将我们的 MongoDB 副本集分片为 4 个分片,但我有计划的磁盘容量需求。

整体数据集大小预计为 600GB,但我将 4 个分片中的每个分片计算为 200GB,以考虑分片不平衡的可能性。

我找不到的是我的 (3x)Config Servers 和 (3x)MongoS 服务器需要多少存储空间。我已经浏览了 MongoDB 文档并在 Google 上搜索了“mongos 磁盘容量规划”,但无济于事。任何人都可以向我指出他们的 Config 和 MongoS 服务器需要多少存储空间的文档、指南或至少是个人示例吗?

capacity-planning mongodb

4
推荐指数
1
解决办法
805
查看次数

MongoDB Auth,可以在 shell 中进行身份验证,但不能通过命令行进行身份验证

我有一个连接到名为讨论的 MongoDB 数据库的应用程序。我创建了一个用户

蒙戈外壳:

> use discussions
switched to db discussions
> db.auth("discussions","XXXXXXXXX")
1
> show users
{
        "_id" : "discussions.discussions",
        "user" : "discussions",
        "db" : "discussions",
        "roles" : [
                {
                        "role" : "dbOwner",
                        "db" : "discussions"
                }
        ]
}
Run Code Online (Sandbox Code Playgroud)

所以这是为了确认我在数据库上确实有一个帐户,并且它是 dbOwner。根据文档,它具有 READ、WRITE 等权限。

配置文件启用了“auth = true”属性,并且自更改以来该服务已被退回不止一次。

但是,问题是当我尝试从 shell 外部连接到数据库时,我总是收到错误消息:

mongo  discussions -u 'discussions' -p 'XXXXXXXXX'
MongoDB shell version: 2.6.3
connecting to: discussion
2014-08-05T01:00:39.026+0400 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed …
Run Code Online (Sandbox Code Playgroud)

database database-administration mongodb

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