IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

白话MongoDB(三)

NinGoo.net 2011-06-21 23:59:26 累计浏览 2,363 次
本机暂存

    通过源代码编译安装好MongoDB之后,接下来需要配置运行。在MongoDB的安装目录,有几个子目录,bin下面是可执行文件,包括

  • mongod:数据库服务端,类似mysqld,每个实例启动一个进程,可以fork为Daemon运行
  • mongo:客户端命令行工具,类似sqlplus/mysql,其实也是一个js解释器,支持js语法
  • mongodump/mongorestore:将数据导入为bson格式的文件/将bson文件恢复为数据库,类似xtracbackup
  • mongoexport/mongoimport:将collection导出为json/csv格式数据/将数据导入数据库,类似mysqldump/mysqlimport
  • bsondump:将bson格式的文件转储为json格式的数据
  • mongos:分片路由,如果使用了sharding功能,则应用程序连接的是mongos而不是mongod
  • mongofiles:GridFS管理工具
  • mongostat:实时监控工具
  •     最简单的,通过执行mongod即可以启动MongoDB数据库服务,mongod支持很多的参数,但都有默认值,其中最重要的是需要指定数据文件路径,或者确保默认的/data/db存在并且有访问权限,否则启动后会自动关闭服务。Ok,那也就是说,只要确保dbpath就可以启动MongoDB服务了:

    $ ./mongod --dbpath /tmp
    Fri Apr  1 00:34:46 [initandlisten] MongoDB starting : pid=31978 port=27017 dbpath=/tmp 32-bit 
    
    ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
    **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
    **       with --dur, the limit is lower
    
    Fri Apr  1 00:34:46 [initandlisten] db version v1.8.0, pdfile version 4.5
    Fri Apr  1 00:34:46 [initandlisten] git version: 9c28b1d608df0ed6ebe791f63682370082da41c0
    Fri Apr  1 00:34:46 [initandlisten] build sys info: Linux ning 2.6.36-ningoo #1 SMP
    Wed Nov 17 21:45:13 CST 2010 i686 BOOST_LIB_VERSION=1_42
    Fri Apr  1 00:34:46 [initandlisten] waiting for connections on port 27017
    Fri Apr  1 00:34:46 [websvr] web admin interface listening on port 28017

        mongod的主要参数有:

        dbpath: 数据文件存放路径,每个数据库会在其中创建一个子目录。用于防止同一个实例多次运行的mongod.lock也保存在此目录中。

         logpath:错误日志文件

         logappend: 错误日志采用追加模式(默认是覆写模式)

         bind_ip: 对外服务的绑定ip,一般设置为空,及绑定在本机所有可用ip上,如有需要可以单独指定

         port: 对外服务端口。Web管理端口在这个port的基础上+1000

         fork: 以后台Daemon形式运行服务

         journal:开启日志功能,通过保存操作日志来降低单机故障的恢复时间,在1.8版本后正式加入,取代在1.7.5版本中的dur参数。

         syncdelay: 执行sync的间隔,单位为秒。

         directoryperdb: 每个db存放在单独的目录中,建议设置该参数。

         maxConns: 最大连接数

         repairpath: 执行repair时的临时目录。在如果没有开启journal,异常宕机后重启,必须执行repair操作。

        在源代码中,mongod的参数分为一般参数,windows参数,replication参数,replica set参数,以及隐含参数。上面列举的都是一般参数。如果要配置replication,replica set等,还需要设置对应的参数,这里先不展开,后续会有专门的文章来讲述。执行mongo -help可以看到对大多数参数的解释。但有一些隐含参数,则只能通过看代码来获得(见db.cpp po::options_description hidden_options(“Hidden options”);),隐含参数一般要么是还在开发中,要么是准备废弃,因此在生产环境中不建议使用。

        可能你已经注意到,mongod的参数中,没有设置内存大小相关的参数,是的,mongodb使用os mmap机制来缓存数据文件数据,自身目前不提供缓存机制。这样好处是代码简单,mmap在数据量不超过内存时效率很高。但是数据量超过系统可用内存后,则写入的性能可能不太稳定,容易出现大起大落,不过在最新的1.8版本中,这个情况相对以前的版本已经有了一定程度的改善,具体请参考realzyy的测试

        这么多参数,全面写在命令行中则容易杂乱而不好管理。因此,mongod也和mysqld一样支持将参数写入到一个配置文本文件中,然后通过config参数来引用此配置文件:

    ./mongod --config /etc/mongo.cnf

        至此,已经成功的运行了一个单机的mongodb实例。原图已失效

    同分类推荐文章

    1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
    2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
    3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

    查看更多 数据库 文章 →

    建议继续学习

    1. 什么是全栈工程师? (累计阅读 14,038)
    2. SQL vs NoSQL:数据库并发写入性能比拼 (累计阅读 8,003)
    3. 让Vim(gVim)更好的支持python语法缩进(强烈推荐) (累计阅读 7,414)
    4. vim(gvim)自动在新标签页中打开文件 (累计阅读 6,292)
    5. MongoDB与内存 (累计阅读 6,122)
    6. nosql数据库选型 (累计阅读 5,902)
    7. Nodejs和MongoDB初体验 (累计阅读 5,868)
    8. 谈谈与数据打交道的工作 (累计阅读 5,497)
    9. Squid 限制用户并发连接数 (累计阅读 5,238)
    10. 手把手教你把Vim改装成一个IDE编程环境 (累计阅读 5,055)