MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。本文是讲述把MongoDB社区版安装到新睿云CentOS7服务器上,按照AGPL的要求,社区版自用免费,如果要分发是必须使用企业版的。
一、添加MongoDB资料库
mongodb-org默认情况下该软件包不存在CentOS7的源仓库中。所以我们需要把其先放到仓库中。
使用vi编辑器为创建.repo文件yum,为CentOS的软件包管理实用程序:
sudo vi/etc/yum.repos.d/mongodb-org.repo
然后,访问MongoDB文档的“在Red Hat上安装”部分,并添加资料库该文件的最新稳定版本的信息:
/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
保存并关闭文件。
在继续之前,我们应该验证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到位,让我们继续安装。
二、安装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
三、验证MongoDB启动
如果数据库安装失败,应用程序无法运行,所以我们将确保MongoDB守护程序已经启动。
使用该systemctl实用工具检查其启动状态:
systemctl is-enabled mongod;echo$?
输出为零表示已启用守护程序,这样符合我们的预期。但是,如果数据安装不完全或者失败则启动程序可以不会出现或者残缺不全。
Output
...
enabled
0
如果启动程序启动但运行的不完成,请使用该systemctl实用工具启用它:
sudo systemctl enable mongod
现在,我们有了一个正在运行的MongoDB实例,它将在系统重启后自动启动。
四、导入示例数据集(可选)
与其他数据库服务器不同,MongoDB的数据库中没有数据test测试数据集。因此我们将从“MongoDB入门”文档的“导入示例数据集”部分下载示例数据集。JSON文档集合,我们将使用它们来练习与MongoDB的交互并避免对敏感数据造成伤害。
进入可写的目录:
cd/tmp
使用curl命令和MongoDB中的链接下载JSON文件:
curl-LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
该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,如果您想进一步的深入了解更多数据库的使用办法可以阅读