2.3 启动数据库
MongoDB安装、配置完后,必须先启动,然后才能使用它。怎样启动呢?下面介绍3种方式启动实例。
2.3.1 命令行方式
MongoDB默认存储数据目录为/data/db/(或者C:/data/db),默认端口为27017,默认HTTP 端口为28017。当然,也可以改成其他目录,只需要指定“dbpath”参数,如下面的代码所示:
[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
2.3.2 配置文件方式
如果是专业的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
2.3.3 Daemon方式
大家可能注意到,前面的两种方式都是在前台启动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 ~]#
2.3.4 mongod参数方式
最简单的就是通过执行mongod启动MongoDB数据库服务。mongod支持很多的参数,但都有默认值,其中最重要的是,需要指定数据文件路径,或者确保默认的/data/db存在并且有访问权限,否则启动后会自动关闭服务。也就是说,只要确保dbpath就可以启动MongoDB服务了。
mongod的主要参数见表2-3。
在源代码中,mongod的参数分为一般参数、Windows参数、Replication参数、Replica Set参数、隐含参数。表2-3中列举的都是一般参数。如果要配置Replication、Replica Set等,还需要设置对应的参数,这里先不展开,将在第11章讲述。执行“mongod --help”可以看到对大多数参数的解释,但有一些隐含参数只能通过查看源代码来获得。隐含参数要么是还在开发中,要么是准备废弃,因此在生产环境中不建议使用。
可能你已经注意到,mongod的参数中没有设置内存大小相关的参数。是的,MongoDB使用os mmap机制来缓存数据文件数据,自身目前不提供缓存机制。这样做的好处是代码简单,mmap在数据量不超过内存时效率很高。但是数据量超过系统可用内存后,写入的性能可能不太稳定,容易出现大起大落。最新的1.8版本中,这种情况已经有了一定程度的改善。
这么多参数全部写在命令行中容易杂乱、不好管理,因此,mongod支持将参数写到一个配置文本文件中,然后通过“config”参数来引用此配置文件,如下面的代码所示:
./mongod --config /etc/mongo.cnf