我正在 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) 我的 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) 当 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。我在 MySQL 方面有很多经验,并且正在使用称为Sequel Pro 的东西连接到远程数据库。我现在正在尝试MongoHub,但似乎无法让它连接到远程数据库。
我尝试了一个基本的 SSH 隧道
ssh -f user@remotehost.com -L 9009:remotehost.com:27017 -N
Run Code Online (Sandbox Code Playgroud)
但这没有用。其他数据库管理工具如何使用 ssh 登录来提供与没有开放端口的数据库的连接?这是我可以自己设置的东西(通过隧道或其他东西)吗?
我可以使用命令行命令关闭 mongoDB 吗?
我使用 MacOSX,但它可能与 linux 类似。
如果没有,有人知道我如何制作一个可以进入 mongo shell 并关闭服务器的脚本吗?
背景:
我有一些 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 的最佳做法是什么?无需投入额外的硬件。
我目前正在编写流程管理软件。我们使用的一个包是 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),那么还有其他区别吗?
谢谢
我正在尝试使用代理 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) 在做今年的预算时,我需要估计明年的容量需求。我们计划需要将我们的 MongoDB 副本集分片为 4 个分片,但我有计划的磁盘容量需求。
整体数据集大小预计为 600GB,但我将 4 个分片中的每个分片计算为 200GB,以考虑分片不平衡的可能性。
我找不到的是我的 (3x)Config Servers 和 (3x)MongoS 服务器需要多少存储空间。我已经浏览了 MongoDB 文档并在 Google 上搜索了“mongos 磁盘容量规划”,但无济于事。任何人都可以向我指出他们的 Config 和 MongoS 服务器需要多少存储空间的文档、指南或至少是个人示例吗?
我有一个连接到名为讨论的 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) mongodb ×10
linux ×2
connection ×1
corruption ×1
database ×1
mac-osx ×1
mysql ×1
nginx ×1
ssh ×1
ubuntu-16.04 ×1
yum ×1