分类: Sybase
2012-05-29 23:13:07
MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。
使用 "./mongo --help" 可查看相关连接参数,下面将从常见的操作,如插入,查询,修改,删除等几个方面阐述MongoDB shell的用法。
MongoDB安装、配置完后,必须先启动它,然后才能使用它。怎么启动它呢?下面分别展示了3种方式来启动实例。
MongoDB默认存储数据目录为/data/db/ (或者 c:\data\db), 默认端口27017,默认HTTP 端口28017。当然你也可以修改成不同目录,只需要指定dbpath参数: /Apps/mongo/bin/mongod --dbpath=/data/db
[root@localhost ~]# /Apps/mongo/bin/mongod --dbpath=/data/db Sun Apr 8 22:41:06 [initandlisten] MongoDB starting : pid=13701 port=27017 dbpath=/data/db 32-bit …… Sun Apr 8 22:41:06 [initandlisten] waiting for connections on port 27017 Sun Apr 8 22:41:06 [websvr] web admin interface listening on port 28017 |
如果是一个专业的DBA,那么实例启动时会加很多的参数以便使系统运行的非常稳定,这样就可能会在启动时在mongod后面加一长串的参数,看起来非常混乱而且不好管理和维护,那么有什么办法让这些参数有条理呢?MongoDB也支持同mysql一样的读取启动配置文件的方式来启动数据库,配置文件的内容如下:
[root@localhost bin]# cat /etc/mongodb.cnf dbpath=/data/db/ |
启动时加上”-f”参数,并指向配置文件即可
[root@localhost bin]# ./mongod -f /etc/mongodb.cnf Mon May 28 18:27:18 [initandlisten] MongoDB starting : pid=18481 port=27017 dbpath=/data/db/ 32-bit …… Mon May 28 18:27:18 [initandlisten] waiting for connections on port 27017 Mon May 28 18:27:18 [websvr] web admin interface listening on port 28017 |
大家可以注意到上面的两种方式都慢在前台启动MongoDB进程,但当启动MongoDB进程的session窗口不小心关闭时,MongoDB进程也将随之停止,这无疑是非常不安全的,幸好MongoDB提供了一种后台Daemon方式启动的选择,只需加上一个”--fork”参数即可,这就使我们可以更方便的操作数据库的启动,但如果用到了”--fork”参数就必须也启用” --logpath”参数,这是强制的
[root@localhost ~]# /Apps/mongo/bin/mongod --dbpath=/data/db --fork --fork has to be used with --logpath [root@localhost ~]# /Apps/mongo/bin/mongod --dbpath=/data/db --logpath=/data/log/r3.log --fork all output going to: /data/log/r3.log forked process: 19528 [root@localhost ~]# |
最简单的,通过执行mongod即可以启动MongoDB数据库服务,mongod支持很多的参数,但都有默认值,其中最重要的是需要指定数据文件路径,或者确保默认的/data/db存在并且有访问权限,否则启动后会自动关闭服务。Ok,那也就是说,只要确保dbpath就可以启动MongoDB服务了
mongod的主要参数有:
l dbpath:
数据文件存放路径,每个数据库会在其中创建一个子目录,用于防止同一个实例多次运行的mongod.lock也保存在此目录中。
l logpath
错误日志文件
l logappend
错误日志采用追加模式(默认是覆写模式)
l bind_ip
对外服务的绑定ip,一般设置为空,及绑定在本机所有可用ip上,如有需要可以单独指定
l port
对外服务端口。Web管理端口在这个port的基础上+1000
l fork
以后台Daemon形式运行服务
l journal
开启日志功能,通过保存操作日志来降低单机故障的恢复时间,在1.8版本后正式加入,取代在1.7.5版本中的dur参数。
l syncdelay
系统同步刷新磁盘的时间,单位为秒,默认是60秒。
l directoryperdb
每个db存放在单独的目录中,建议设置该参数。与MySQL的独立表空间类似
l maxConns
最大连接数
l repairpath
执行repair时的临时目录。在如果没有开启journal,异常down机后重启,必须执行repair操作。
在源代码中,mongod的参数分为一般参数,windows参数,replication参数,replica set参数,以及隐含参数。上面列举的都是一般参数。如果要配置replication,replica set等,还需要设置对应的参数,这里先不展开,后续会有专门的章节来讲述。执行mongod --help可以看到对大多数参数的解释,但有一些隐含参数,则只能通过看代码来获得(见db.cpp po::options_description hidden_options(“Hidden options”);),隐含参数一般要么是还在开发中,要么是准备废弃,因此在生产环境中不建议使用。
可能你已经注意到,mongod的参数中,没有设置内存大小相关的参数,是的,MongoDB使用os mmap机制来缓存数据文件数据,自身目前不提供缓存机制。这样好处是代码简单,mmap在数据量不超过内存时效率很高。但是数据量超过系统可用内存后,则写入的性能可能不太稳定,容易出现大起大落,不过在最新的1.8版本中,这个情况相对以前的版本已经有了一定程度的改善。
这么多参数,全面写在命令行中则容易杂乱而不好管理。因此,mongod支持将参数写入到一个配置文本文件中,然后通过config参数来引用此配置文件:
./mongod --config /etc/mongo.cnf