一、简介
MongoDB是用C++实现的开源文档型数据库,其介于关系数据库与非关系数据库之间,是非关系数据库中功能最丰富,最像关系数据库的,其特征概括起来如下:
(1)面向文档存储(类似于JSON的BSON)
(2)支持全文索引
(3)支持复制和高可用
(4)支持自动分片(水平扩展)
(5)支持Map/Reduce
(6)支持丰富的查询
默认端口号是27017,其数据存储在文件中,默认路径为/data/db,为提高效率使用内存映射文件进行管理。
关键点:
(1)MongoDB中三元素是数据库、集合、文档,其分别对应于关系数据库中的数据库、表、行。
(2)最好安装64位的MongoDB,因为32位支持的最大文件尺寸为2G,而64位则无此限制。
(3)防火墙或者SELinux要放行27017端口。
更新多信息可以
参看。
MongoDB支持很多种操作系统,本系列文章以64位CentOS和MongoDB 2.4.2为例。
二、安装
1、配置YUM
创建一个文件(/etc/yum.repos.d/10gen.repo)用于保持repository信息,该文件中具体配置信息如下:
#vi /etc/yum.repos.d/10gen.repo
[10gen]
name=10gen Repository
baseurl=
gpgcheck=0
enabled=1
2、安装包
以root或sudo执行如下命令来安装最新的稳定版本和相关工具:
#yum install mongo-10gen mongo-10gen-server
执行完上面命令后,就成功安装好MongoDB了,NB!
mongo-10gen-server包括mongod和mongos守护进程以及相关配置和初始化脚本。
mongo-10gen包括所有MongoDB工具。
3、版本选择
步骤2中默认会安装最新的稳定版本,如果需要选择指定Release版本,可以执行如下命令:
#yum install mongo-10gen-2.2.3 mongo-10gen-server-2.2.3
需要注意的是:用上面方式能安装指定版本,但是如果yum发现有新的稳定版本,它会更新mongo-10gen和mongo-10gen-server,用如下方式能阻止其狗拿耗子的“毛病”:
编辑/etc/yum.conf,添加如下语句即可:
#vi /etc/yum.conf
exclude=mongo-10gen, mongo-10gen-server
三、配置
上面步骤中的安装包用/etc/mongod.conf文件结合来配置MongoDB。初始脚本在这里/etc/rc.d/init.d/mongod。
MongoDB实例存储数据文件在/var/lib/mongo目录下,日志文件在/var/log/mongo目录下,并用mongod用户账号来运行它。
需要注意的是:如果你改变运行MongoDB进程的用户,你需要修改用户对/var/lib/mongo和/var/log/mongo目录的访问控制权限。
四、控制
1、启动
以root或者sudo执行以下命令来启动mongod进程:
#service mongod start
可以通过日志文件/var/log/mongo/mongod.log的内容来确认mongod进程是否成功启动。
以root用户权限执行如下命令来确保MongoDB在系统重启时随机启动:
#chkconfig mongod on
2、停止
以root或者sudo执行以下命令来停止mongod进程:
#service mongod stop
3、重启
以root或者sudo执行以下命令来重启mongod进程:
#service mongod restart
通过/var/log/mongo/mongod.log文件来观察进程状态,观察从服务器来的错误和重要信息。
4、mongos
mongos没有控制脚本,其仅仅用于分片部署,并且通常不与mongod运行在同一机器上。你可以参考mongodb脚本来生成自己的mongos控制脚本。
五、使用
mongo-10gen包中包括了mongo这个工具,它是mongo shell。你能通过执行如下命令来连接到MongoDB实例:
#mongo
MongoDB shell version: 2.4.2
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
Questions? Try the support group
这其实是MongoDB一个控制台客户端。
缺省情况下,连接到localhost,在mongo提示符下,执行以下命令来插入记录到test库的test集合中,然后返回文档:
> db.test.save({a:1})
> db.test.find()
{ "_id" : ObjectId("51766dd916fd17c43aa2204c"), "a" : 1 }
阅读(4907) | 评论(1) | 转发(1) |