# MongoDB (简体中文)

翻译状态： 本文是英文页面 MongoDB 的翻译，最后翻译时间：2016-12-15，点击这里可以查看翻译后英文页面的改动。

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

## 安装

从 官方软件仓库 安装 mongodb。

Start/Enable `mongodb.service`.

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

## 使用

启动 Mongo Shell， 在终端输入:

    $ mongo

## Troubleshooting

### 无法启动 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/

### 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

Category:

- Database management systems (简体中文)