MongoDB (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 MongoDB翻译。上次翻译日期:2016-12-15。如果英文版本有所更改,则您可以帮助同步翻译。

Tango-preferences-desktop-locale-modified.png这篇文章或章节的翻译不反映原文。Tango-preferences-desktop-locale-modified.png

原因:Out of sync with English page(在 Talk:MongoDB (简体中文)# 中讨论)

MongoDB (from humongous) 是一个开源的,面向文档的数据库系统,由 MongoDB Inc. (formerly 10gen)开发并提供支持. 它是NoSQL家族中的一员, 替代用表储存数据的经典的关系型数据库, MongoDB的数据储存结构类似于用动态视图(dynamic schemas)储存类JSON文档(JSON-like documents) (MongoDB称这种格式为BSON, 将数据尽早尽快地整合成对应的应用类型.

安装

由于 MongoDB 修改了软件授权协议,官方软件仓库已经删除了此软件包,需要的用户可以选择安装 mongodbAURmongodb-binAUR 软件包。请注意从代码编译 mongodbAUR 需要 ~160GB 磁盘空间,需要花费几个小时时间。

可以选择安装 mongodb-toolsAUR,这个软件包提供了 mongoimport, mongoexport, mongodump, mongorestore 等工具。

Start/Enable 服务 mongodb.service

第一次启动 mongodb 服务时,会为记录和日志文件预先分配空间,在此期间不能使用数据库 shell。

使用

启动 Mongo Shell, 在终端输入:

$ mongo

Troubleshooting

无法启动 MongoDB

检查 systemctl 的服务是否使用了正确的数据库位置:

$ vi /usr/lib/systemd/system/mongodb.service

在 "ExecStart" 中加入 "--dbpath /var/lib/mongodb":

ExecStart=/usr/bin/numactl --interleave=all mongod --quiet --config /etc/mongodb.conf --dbpath /var/lib/mongodb

检查是否存在3G以上的剩余磁盘空间用于记录文件的储存,否则,MongoDB将启动启动失败

$ df -h /var/lib/mongodb/

检查是否存在非空 mongod.lock 锁文件

# ls  -lisa /var/lib/mongodb

锁文件不是空文件, 停止 mongodb.service,运行mongo自带的数据库修复程序,指定dbpath (/var/lib/mongodb/ 是Arch Linux 的默认 dbpath):

# mongod --dbpath /var/lib/mongodb/ --repair

完成后 dbpath 中应该包含修复的文件和空 mongod.lock 文件.

警告: 在特殊情况下,可以删除锁文件,并用损坏的文件重启,数据库也会尝试恢复,但是结果是不可预测的。详情请参考上游文档.

在用root权限运行完修复程序之后,文件的拥有者将变为root用户,然而在Arch Linux里,mongodb可能会被不同用户运行。 需要使用chown命令将文件的拥有者改回正确的用户。点击以下的链接查看更多细节:Further reference

# chown -R mongodb: /var/{log,lib}/mongodb/

最后,从 mongodb 文档 复制配置文件,删除下面两行并 重启 mongodb.service:

/etc/mongodb.conf
processManagement:
   fork: true

transparent_hugepage内核设置警告

在启动 MongoDB 之后,如果看到关于 transparent_hugepage 的警告,可以通过以下链接提供的方式永久禁用 transparent_hugepage内核设置 (参考 FreeDesktop tmpfiles.d 手册):

/etc/tmpfiles.d/local.conf
w /sys/kernel/mm/transparent_hugepage/enabled - - - - never
w /sys/kernel/mm/transparent_hugepage/defrag - - - - never

如果希望只在本次启动时禁用,可以使用SysCtl或者下面的 echo 命令实现:

# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag