在CentOS7上安装MongoDB(简易版)

技术运维MongoDB 380

注意:笔者测试环境CentOS7,为了偷懒和内容的简洁性直接使用的root用户,如果你使用非root用户需要在命令前加上sodu

对上文<MongoDB数据库的安装及基本配置使用(CentOS7)>的简易版的补充内容

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。它是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

1. 添加MongoDB仓库

CentOS默认仓库的包中并未含mongodb-org,所以我们需要用vi编辑器创建一个.repo文件为接下来yum安装做装备

vi /etc/yum.repos.d/mongodb-org.repo

把这些内容搞进去

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

保存并退出

在我们使用yum安装前可以先使用命令

yum repolist

查看本地是否已经包含了mongodb-org包了

. . .
repo id                          repo name
base/7/x86_64                    CentOS-7 - Base
extras/7/x86_64                  CentOS-7 - Extras
mongodb-org-3.2/7/x86_64         MongoDB Repository
updates/7/x86_64                 CentOS-7 - Updates
. . .

如果找到上面的包信息说明已经没有问题了

2. 开始安装MongoDB

yum install mongodb-org

安装过程中会出现两次Is this ok [y/N]:,依次输入YENTER键即可

安装完成后使用systemctl命令启动

systemctl start mongod

同样systemctl reload mongod可以重启服务,systemctl stop mongod可以停止服务

使用tail命令可以检查MongoDB服务的启动情况

tail /var/log/mongodb/mongod.log
. . .
[initandlisten] waiting for connections on port 27017

出现waiting for a connection 说明MongoDB服务已经成功启动了

输入mongo可以使用MongoDB Shell(命令行工具)

mongo

注意: 当你运行MongoDB Shell的时候你可以会遇到一些像下面的警告信息:

** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

解决方法

vi /etc/security/limits.d/20-nproc.conf

在最后一行添加

mongod soft nproc 32000

修改完记得要重启服务

systemctl restart mongod

此时再次连接MongoDB Shell应该不会再出现该错误了

更多关于MongDB Shell的使用帮助可以使用help()命令获得

db.help()
DB methods:
    db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ]
    db.auth(username, password)
    db.cloneDatabase(fromhost)
    db.commandHelp(name) returns the help for the command
    db.copyDatabase(fromdb, todb, fromhost)
    db.createCollection(name, { size : ..., capped : ..., max : ... } )
    db.createUser(userDocument)
    db.currentOp() displays currently executing operations in the db
    db.dropDatabase()
. . .

退出方法

exit
Bye

3. 验证自启动

systemctl is-enabled mongod; echo $?
enabled
0

如果是0就表示MongoDB服务未随机自动,使用命令让服务自动开启

systemctl enable mongod

4. 导入一个示例数据集(非安装必须项)

切换到有写入权限的目录

cd /tmp

curl下载json文件

curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json

使用mongoimport 工具导入数据

mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json

--db 指定的数据库, --collection 指定集合 --file 指定json数据源,执行命令后会显示结果

connected to: localhost
imported 25359 documents

为了验证数据导入情况,我们可以进入MongoDB Shell

mongo

执行一条查询命令

db.restaurants.find().limit( 1 ).pretty()

结果

{
    "_id" : ObjectId("57e0443b46af7966d1c8fa68"),
    "address" : {
        "building" : "1007",
        "coord" : [
            -73.856077,
            40.848447
        ],
        "street" : "Morris Park Ave",
        "zipcode" : "10462"
    },
    "borough" : "Bronx",
    "cuisine" : "Bakery",
    "grades" : [
        {
            "date" : ISODate("2014-03-03T00:00:00Z"),
            "grade" : "A",
            "score" : 2
        },
        {
            "date" : ISODate("2013-09-11T00:00:00Z"),
            "grade" : "A",
            "score" : 6
        },
        {
            "date" : ISODate("2013-01-24T00:00:00Z"),
            "grade" : "A",
            "score" : 10
        },
        {
            "date" : ISODate("2011-11-23T00:00:00Z"),
            "grade" : "A",
            "score" : 9
        },
        {
            "date" : ISODate("2011-03-10T00:00:00Z"),
            "grade" : "B",
            "score" : 14
        }
    ],
    "name" : "Morris Park Bake Shop",
    "restaurant_id" : "30075445"
}

删除集合可以使用drop()命令来完成

db.restaurants.drop()

最后退出MongoDB Shell

exit

Post Comment