设为首页 收藏本站
查看: 747|回复: 0

[经验分享] MongoDb环境部署(转)

[复制链接]
YunVN网友  发表于 2015-7-9 10:01:22 |阅读模式
  http://www.iyunv.com/yoolonet/archive/2011/08/27/2155701.html
  
MongoDb系列文章

     最近在开发一个系统用到MongoDb做为数据存储,对自己在实际开发中的应用和问题,记录下来整理成这一系列的文章。希望对MongoDb入门的朋友有所帮助,也欢迎大家拍砖。  简单介绍下,MongoDb是Nosql数据库的一种。对于大数据量,高并发,弱事物的互联网应用,MongoDb则是一个非常好的选择。
  它的的设计哲学是,“Databases are specializing – the “one size fits all” approach no longer applies.” 这里我就废话少说了。
  网上有很多MongoDb的介绍,和资料比我讲的的要好。我这里只说下我在项目中的应用。毕竟,实践是检验真理的一切标准。
    在整个系列中,存储的数据结构是
  {"time":“时间”,"userid":"用户id","sessionid":“SessionID”,“ip”:"用户访问Ip","title":“访问网页标题”,"url":"访问网页Url"}
    在这一些列文章中,每个例子都会用客户端shell和C#驱动讲解一遍。
    驱动在官网山下载(http://www.mongodb.org/display/DOCS/CSharp+Language+Center)
第I部分  环境部署
    第1节:MongoDb环境的部署
第II部分 基本文档操作
    第1节:命名规范
    第2节:基本数据类型介绍
    第3节:插入和批量插入,插入原理
    第4节:Find查询
    第5节:查询条件,$where查询,Or查询,$not,内嵌查询
    第6节:正则查询
    第7节:upsert,$set,$inc,$puch,$addToSet,$each,$ne
    第8节:FindAndModify
    第9节:游标的使用
    第10节:聚合查询,count,distinct,group
    第11节:MapReduce
    第12节:索引
第III部分 高级文档操作
    第1节:GridFS
    第2节:db.eval
    第3节:存储Javascript
    第4节:DBref数据库引用
第IV部分 管理
    第1节:Linux和Windows启动和停止MongoDb
    第2节:监控
    第3节:备份和修复
    第4节:主从复制
    第5节:分片
第V部分 综合篇
    第1节:shell命令工作原理
    第2节:实际开发中遇到的异常及解决方案
    第3节:基于Mongodb C#驱动的基础框架设计(附源码)
  作者: Yoolo
  出处:http://www.iyunv.com/yoolonet
  本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  
  第一节 部署
  MongoDB环境的部署很简单。已经用过的人肯定会和我有相同的想法。首先在官网上下载对应的版本(http://www.mongodb.org/downloads),要分清是自己的是32位还是64位的。
      MongoDb的版本号,偶数的版本是稳定版,奇数是开发版。例如,1.2开头的是稳定版(1.2.0 , 1.2.1 , 1.2.2 等等) ,1.3开头的开发版(1.3.0 , 1.3.1 ,1.3.2 等等)。
  我本机的开发环境是Win7(32bit,双核),公司的开发环境CentOS(Linux的一个版本,64bit,CPU 4颗)
  
  在Windows下
  1:解压下载的压缩文件。(我的是在E:\nosql\mongodb)
2:新建一个目录,来存放数据库文件,默认值是/data/db/,(windows 下是:C:\data\db) 作为数据存储目录
3:cmd 进入到MongoDb解压的目录(我的是在E:\nosql\mongodb),
>cd E:\nosql\mongodb\bin
>mongod help  可以查看mongodb的一些参数,下面是我列出的三个常用参数db存储路径,日志存储路径,日志存储方式
  --dbpath arg          directory for datafiles
  --logpath arg         log file to send write to instead of stdout - has to be
                      a file, not directory
      
  --logappend           append to logpath instead of over-writing
  
>mongod --dbpath E:\nosql\mongodb\data --logpath=E:\nosql\mongodb\log\mongodb.log --logappend
会在cmd窗口显示all output going to: E:\nosql\mongodb\log\mongodb.log
  在浏览器输入:http://localhost:27017/,可以看到如下提示:
You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number
  如此,MongoDB数据库服务已经成功启动了。
  在浏览器输入:http://localhost:28017/,是mongodb系统的一个监控界面。如果你指定了--port端口号,则要用比它大1000的端口号才可以进入mongodb
的监控界面。
  4:打开另外个cmd窗口,启动一个mongodb的客户端
>cd E:\nosql\mongodb\bin
>mongo
MongoDB shell version: 1.8.3-rc0
connecting to: test
>
  >show dbs //查看系统数据库,这些是我本地的dbs
admin   (empty)
local   (empty)
loginlog        0.125GB
logintest       0.0625GB
mymongodb       0.03125GB
testDb  0.999755859375GB
>help  //查看当前执行角色的帮助信息
  
  在CentOS下部署Mongodb,我是通过SecureCRT连接到公司的CentOS服务器。它的部署在Windows上的部署操作是一样的。
先去官方下载对应的版本,然后解压到对应的目录。我的目录是/root/soft,列出解压后的文件
  [iyunv@app-vwsc-01 soft]# ls
mongodb-linux-x86_64-1.8.2 mongodb-linux-x86_64-1.8.2.tar  nagios-nrpe_2.8.1.tar.gz  nagios-plugins-1.4.15  nagios-plugins-1.4.15.tar.gz  nrpe-2.8.1
[iyunv@app-vwsc-01 soft]# cd mongodb-linux-x86_64-1.8.2/bin
[iyunv@app-vwsc-01 bin]# ls
bsondump  mongo  mongod  mongodump  mongoexport  mongofiles  mongoimport  mongorestore  mongos  mongosniff  mongostat
[iyunv@app-vwsc-01 bin]# ./mongod --dbpath /root/mongodbpro/data/db --logpath /root/mongodbpro/data/log/mongodb.log --logappend  //启动mongod的服务器
all output going to: /root/mongodbpro/data/log/mongodb.log   //这个时候Mongodb服务已经启动
  现在启动一个Mongodb的客户端
[iyunv@app-vwsc-01 bin]# ./mongo
MongoDB shell version: 1.8.2
connecting to: test
> show dbs //查看当前数据库
  
  到目前,在Win7和CentOS上全部部署完毕,但是需要几点需要注意下:
  1:在我们启动Mongodb的服务后,Win7环境下,Mongodb所有的日志信息都写入mongodb.log文件了。(这个文件是我自定义的)
** 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
  Sat Aug 27 16:48:17 [initandlisten] db version v1.8.3-rc0, pdfile version 4.5
Sat Aug 27 16:48:17 [initandlisten] git version: 81147c1ca4cc10d9a81a0a2afdf364ab1ca8867d
Sat Aug 27 16:48:17 [initandlisten] build sys info: windows (5, 1, 2600, 2, 'Service Pack 3') BOOST_LIB_VERSION=1_35
Sat Aug 27 16:48:18 [initandlisten] waiting for connections on port 27017
Sat Aug 27 16:48:18 [websvr] web admin interface listening on port 28017
Sat Aug 27 16:49:02 [initandlisten] connection accepted from 127.0.0.1:1398 #1
Sat Aug 27 17:04:10 [conn1] terminating, shutdown command received
Sat Aug 27 17:04:10 dbexit: shutdown called
Sat Aug 27 17:04:10 [conn1] shutdown: going to close listening sockets...
Sat Aug 27 17:04:10 [conn1] closing listening socket: 188
Sat Aug 27 17:04:10 [conn1] closing listening socket: 196
Sat Aug 27 17:04:10 [conn1] shutdown: going to flush diaglog...
Sat Aug 27 17:04:10 [conn1] shutdown: going to close sockets...
Sat Aug 27 17:04:10 [conn1] shutdown: waiting for fs preallocator...
Sat Aug 27 17:04:10 [conn1] shutdown: closing all files...
Sat Aug 27 17:04:10 closeAllFiles() finished
Sat Aug 27 17:04:10 [conn1] shutdown: removing fs lock...
Sat Aug 27 17:04:10 dbexit: really exiting now
  在上面会有一个警告,意思是说,32位下,MongoDB只能处理2GB的数据,因为我用的是32位Mongodb,而且Mongodb是使用内存映射文件存储引擎,要是在64位机器上使用稳定的版本,就不会又这个警告了。
  我们要养成查看日志的习惯,这个对于监控Mongodb很有用。
  
2:关闭Mongodb服务,这里先提供这个方法,以后再会说到。
> use admin  //切换到admin
switched to db admin
> db.shutdownServer()  //执行shutdownServer()
Sat Aug 27 18:02:57 DBClientCursor::init call() failed
Sat Aug 27 18:02:57 query failed : admin.$cmd { shutdown: 1.0 } to: 127.0.0.1
server should be down...
Sat Aug 27 18:02:57 trying reconnect to 127.0.0.1
Sat Aug 27 18:02:58 reconnect 127.0.0.1 failed couldn't connect to server 127.0.0.1
Sat Aug 27 18:02:58 Error: error doing query: unknown shell/collection.js:150
>exit  //然后退出就行
  2:Win7下启动cmd窗口,我建议大家用Windows PowerShell,这个比cmd窗口要好用多了。
3:我在有些命令后加上 ”//解释“,这个是不属于命令,只作为我的一个解释。
4:下节我将说下Mongodb的基本操作和C#驱动的选择,哪里写的有问题也希望大家帮提出来。
  
  如果要看更多,请访问我之前的MongoDb系列文章   
  作者: Yoolo
  出处:http://www.iyunv.com/yoolonet/archive/2011/08/27/2155701.html
  本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-84676-1-1.html 上篇帖子: Mongodb之NoSql简介 下篇帖子: MongoDB增删改查
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表