MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。mysql
在高负载的状况下,添加更多的节点,能够保证服务器性能。本文是讲述把MongoDB社区版安装到新睿云CentOS7服务器上,按照AGPL的要求,社区版自用免费,若是要分发是必须使用企业版的。git
1、添加MongoDB资料库
mongodb-org默认状况下该软件包不存在CentOS7的源仓库中。因此咱们须要把其先放到仓库中。github
使用vi编辑器为建立.repo文件yum,为CentOS的软件包管理实用程序:sql
sudo vi/etc/yum.repos.d/mongodb-org.repomongodb
而后,访问MongoDB文档的“在Red Hat上安装”部分,并添加资料库该文件的最新稳定版本的信息:shell
/etc/yum.repos.d/mongodb-org.repo数据库
[mongodb-org-3.4]json
name=MongoDB Repository服务器
baseurl=https://repo.mongodb.org/yum/...$releasever/mongodb-org/3.4/x86_64/app
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/stati...
保存并关闭文件。
在继续以前,咱们应该验证MongoDB资料库yum实用程序中存在。该repolist命令显示已启用的列表仓库:
yum repolist
Output
...
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
...
随着MongoDB Repository到位,让咱们继续安装。
2、安装MongoDB数据库
咱们能够mongodb-org从第三方安装软件包资料库使用该yum实用程序。
sudo yum install mongodb-org
有两个Is this ok[y/N]:提示。第一个容许安装MongoDB软件包,第二个容许导入GPG密钥。MongoDB的发布者对其软件进行签名,并yum使用密钥来确认所下载软件包的完整性。在每一个提示下,键入Y,而后ENTER按键。
接下来,使用该systemctl实用程序启动MongoDB服务:
sudo systemctl start mongod
尽管咱们不会在本教程中使用它们,可是您也可使用reload和stop命令更改MongoDB服务的状态。
该reload命令要求mongod进程读取配置文件/etc/mongod.conf,并应用任何更改而无需从新启动。
sudo systemctl reload mongod
该stop命令将暂停全部正在运行的mongod进程。
sudo systemctl stop mongod
该systemctl实用程序在执行start命令后没有提供结果,可是咱们能够经过mongod.log使用如下tail命令查看文件末尾来检查服务是否已启动:
sudo tail/var/log/mongodb/mongod.log
Output
...
[initandlisten]waiting for connections on port 27017
等待链接的输出确认MongoDB已成功启动,咱们可使用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.
MongoDB是一个线程化的应用程序。它能够启动其余流程来处理其工做量。该警告指出,要使MongoDB最有效,它的进程数是受权的加速应该是它在任何给定时间能够打开的文件数量的一半。要解决警告,请经过编辑文件processes来更改soft rlimit值:mongod20-nproc.conf
sudo vi/etc/security/limits.d/20-nproc.conf
将如下行添加到文件末尾:
/etc/security/limits.d/20-nproc.conf
...
mongod soft nproc 32000
为了使新限制适用于MongoDB,请使用systemctl实用程序将其从新启动:
sudo systemctl restart mongod
以后,当您链接到MongoDB Shell时,该警告应该再也不存在。
若是要与MongoDB进行交互,您截图使用db.help()方法的输出,该方法提供了db对象的方法列表。
db.help()
Output
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()
...
让mongod进程在后台运行,可是使用如下exit命令退出shell:
exit
Output
Bye
3、验证MongoDB启动
若是数据库安装失败,应用程序没法运行,因此咱们将确保MongoDB守护程序已经启动。
使用该systemctl实用工具检查其启动状态:
systemctl is-enabled mongod;echo$?
输出为零表示已启用守护程序,这样符合咱们的预期。可是,若是数据安装不彻底或者失败则启动程序能够不会出现或者残缺不全。
Output
...
enabled
0
若是启动程序启动但运行的不完成,请使用该systemctl实用工具启用它:
sudo systemctl enable mongod
如今,咱们有了一个正在运行的MongoDB实例,它将在系统重启后自动启动。
4、导入示例数据集(可选)
与其余数据库服务器不一样,MongoDB的数据库中没有数据test测试数据集。所以咱们将从“MongoDB入门”文档的“导入示例数据集”部分下载示例数据集。JSON文档集合,咱们将使用它们来练习与MongoDB的交互并避免对敏感数据形成伤害。
进入可写的目录:
cd/tmp
使用curl命令和MongoDB中的连接下载JSON文件:
curl-LO https://raw.githubusercontent...
该mongoimport命令会将数据插入测试数据库。该--db标志定义了要使用的数据库,而--collection标志则指定了将信息存储在数据库中的位置,而且--file标志告诉命令在哪一个文件上执行导入操做:
mongoimport--db test--collection restaurants--file/tmp/primer-dataset.json
输出确认从primer-dataset.json文件中导入数据:
Output
connected to:localhost
imported 25359 documents
放置好样本数据集以后,咱们将对其进行查询。
从新启动MongoDB Shell:
mongo
Shell test默认选择数据库,这是咱们导入数据的地方。
使用方法查询餐厅集合,find()以显示数据集中全部餐厅的列表。因为该集合包含超过25,000个条目,所以请使用可选limit()方法将查询的输出减小到指定的数量。此外,该pretty()方法使信息更人性化-可读的与换行符和缩进。
db.restaurants.find().limit(1).pretty()
Output
{
"_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"
}
您能够继续使用样本数据集来熟悉本身使用MongoDB或使用如下db.restaurants.drop()方法将其删除:
db.restaurants.drop()
最后,使用如下exit命令退出shell:
exit
Output
Bye
按照本文示例您能够配置而且应用MongoDB,若是您想进一步的深刻了解更多数据库的使用办法能够阅读《postgresql和mysql:性能、语法、功能有哪些差别?》