




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式。关于Mongodb的特点,这里就不多介绍了,大家可以去看看官方说明:/manual/ 今天主要来说说Mongodb的三种集群方式的搭建:Replica Set / Sharding / Master-Slaver。这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此类推或者查看官方文档。OS是Ubuntu_x64系统,客户端用的是Java客户端。Mongodb版本是mongodb-linux-x86_64-2.2.2.tgzReplica Set 中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的。其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致。如下图: Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点。主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。 默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。这个设置叫做Read Preference Modes,同时Java客户端提供了简单的配置方式,可以不必直接对数据库进行操作。 仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。我开始也不相信必须要有仲裁节点,但是自己也试过没仲裁节点的话,主节点挂了备节点还是备节点,所以咱们还是需要它的。介绍完了集群方案,那么现在就开始搭建了。1.建立数据文件夹一般情况下不会把数据目录建立在mongodb的解压目录下,不过这里方便起见,就建在mongodb解压目录下吧。plainview plaincopy1. mkdir-p/mongodb/data/master2. mkdir-p/mongodb/data/slaver3. mkdir-p/mongodb/data/arbiter4. #三个目录分别对应主,备,仲裁节点2.建立配置文件由于配置比较多,所以我们将配置写到文件里。plainview plaincopy1. #master.conf2. dbpath=/mongodb/data/master3. logpath=/mongodb/log/master.log4. pidfilepath=/mongodb/master.pid5. directoryperdb=true6. logappend=true7. replSet=testrs8. bind_ip=309. port=2701710. oplogSize=1000011. fork=true12. noprealloc=trueplainview plaincopy1. #slaver.conf2. dbpath=/mongodb/data/slaver3. logpath=/mongodb/log/slaver.log4. pidfilepath=/mongodb/slaver.pid5. directoryperdb=true6. logappend=true7. replSet=testrs8. bind_ip=319. port=2701710. oplogSize=1000011. fork=true12. noprealloc=trueplainview plaincopy1. #arbiter.conf2. dbpath=/mongodb/data/arbiter3. logpath=/mongodb/log/arbiter.log4. pidfilepath=/mongodb/arbiter.pid5. directoryperdb=true6. logappend=true7. replSet=testrs8. bind_ip=329. port=2701710. oplogSize=1000011. fork=true12. noprealloc=true参数解释:dbpath:数据存放目录logpath:日志存放路径pidfilepath:进程文件,方便停止mongodbdirectoryperdb:为每一个数据库按照数据库名建立文件夹存放logappend:以追加的方式记录日志replSet:replica set的名字bind_ip:mongodb所绑定的ip地址port:mongodb进程所使用的端口号,默认为27017oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%fork:以后台方式运行进程noprealloc:不预先分配存储3.启动mongodb进入每个mongodb节点的bin目录下javaview plaincopy1. ./monood-fmaster.conf2. ./mongod-fslaver.conf3. ./mongod-farbiter.conf注意配置文件的路径一定要保证正确,可以是相对路径也可以是绝对路径。4.配置主,备,仲裁节点可以通过客户端连接mongodb,也可以直接在三个节点中选择一个连接mongodb。plainview plaincopy1. ./mongo30:27017#ip和port是某个节点的地址2. useadmin3. cfg=_id:testrs,members:_id:0,host:30:27017,priority:2,_id:1,host:31:27017,priority:1,4. _id:2,host:32:27017,arbiterOnly:true;5. rs.initiate(cfg)#使配置生效 cfg是可以任意的名字,当然最好不要是mongodb的关键字,conf,config都可以。最外层的_id表示replica set的名字,members里包含的是所有节点的地址以及优先级。优先级最高的即成为主节点,即这里的30:27017。特别注意的是,对于仲裁节点,需要有个特别的配置arbiterOnly:true。这个千万不能少了,不然主备模式就不能生效。 配置的生效时间根据不同的机器配置会有长有短,配置不错的话基本上十几秒内就能生效,有的配置需要一两分钟。如果生效了,执行rs.status()命令会看到如下信息:plainview plaincopy1. 2. set:testrs,3. date:ISODate(2013-01-05T02:44:43Z),4. myState:1,5. members:6. 7. _id:0,8. name:30:27017,9. health:1,10. state:1,11. stateStr:PRIMARY,12. uptime:200,13. optime:Timestamp(1357285565000,1),14. optimeDate:ISODate(2013-01-04T07:46:05Z),15. self:true16. ,17. 18. _id:1,19. name:31:27017,20. health:1,21. state:2,22. stateStr:SECONDARY,23. uptime:200,24. optime:Timestamp(1357285565000,1),25. optimeDate:ISODate(2013-01-04T07:46:05Z),26. lastHeartbeat:ISODate(2013-01-05T02:44:42Z),27. pingMs:028. ,29. 30. _id:2,31. name:32:27017,32. health:1,33. state:7,34. stateStr:ARBITER,35. uptime:200,36. lastHeartbeat:ISODate(2013-01-05T02:44:42Z),37. pingMs:038. 39. ,40. ok:141. 如果配置正在生效,其中会包含如下信息:plainview plaincopy1. stateStr:RECOVERING同时可以查看对应节点的日志,发现正在等待别的节点生效或者正在分配数据文件。 现在基本上已经完成了集群的所有搭建工作。至于测试工作,可以留给大家自己试试。一个是往主节点插入数据,能从备节点查到之前插入的数据(查询备节点可能会遇到某个问题,可以自己去网上查查看)。二是停掉主节点,备节点能变成主节点提供服务。三是恢复主节点,备节点也能恢复其备的角色,而不是继续充当主的角色。二和三都可以通过rs.status()命令实时查看集群的变化。Sharding和Replica Set类似,都需要一个仲裁节点,但是Sharding还需要配置节点和路由节点。就三种集群搭建方式来说,这种是最复杂的。部署图如下:1.启动数据节点plainview plaincopy1. ./mongod-fork-dbpath./data/set1/-logpath./log/set1.log-replSettest#32. ./mongod-fork-dbpath./data/set2/-logpath./log/set2.log-replSettest#43. ./mongod-fork-dbpath./data/set3/-logpath./log/set3.log-replSettest#5决策不存储数据2.启动配置节点plainview plaincopy1. ./mongod-configsvr-dbpath./config/set1/-port20001-fork-logpath./log/conf1.log#02. ./mongod-configsvr-dbpath./config/set2/-port20002-fork-logpath./log/conf2.log#13.启动路由节点plainview plaincopy1. ./mongos-configdb0:20001,1:20002-port27017-fork-logpath./log/root.log#9 这里我们没有用配置文件的方式启动,其中的参数意义大家应该都明白。一般来说一个数据节点对应一个配置节点,仲裁节点则不需要对应的配置节点。注意在启动路由节点时,要将配置节点地址写入到启动命令里。4.配置Replica Set 这里可能会有点奇怪为什么Sharding会需要配置Replica Set。其实想想也能明白,多个节点的数据肯定是相关联的,如果不配一个Replica Set,怎么标识是同一个集群的呢。这也是人家mongodb的规定,咱们还是遵守吧。配置方式和之前所说的一样,定一个cfg,然后初始化配置。plainview plaincopy1. ./mongo3:27017#ip和port是某个节点的地址2. useadmin3. cfg=_id:testrs,members:_id:0,host:3:27017,priority:2,_id:1,host:4:27017,priority:1,4. _id:2,host:5:27017,arbiterOnly:true;5. rs.initiate(cfg)#使配置生效5.配置Shardingplainview plaincopy1. ./mongo9:27017#这里必须连接路由节点2. sh.addShard(test/3:27017)#test表示replicaset的名字当把主节点添加到shard以后,会自动找到set里的主,备,决策节点3. db.runCommand(enableSharding:diameter_test)#diameter_testisdatabasename4. db.runCommand(shardCollection:diameter_test.dcca_dccr_test,key:_avpSessionId:1) 第一个命令很容易理解,第二个命令是对需要进行Sharding的数据库进行配置,第三个命令是对需要进行Sharding的Collection进行配置,这里的dcca_dccr_test即为Collection的名字。另外还有个key,这个是比较关键的东西,对于查询效率会有很大的影响,具体可以查看Shard Key Overview 到这里Sharding也已经搭建完成了,以上只是最简单的搭建方式,其中某些配置仍然使用的是默认配置。如果设置不当,会导致效率异常低下,所以建议大家多看看官方文档再进行默认配置的修改。Master-Slaver这个是最简答的集群搭建,不过准确说也不能算是集群,只能说是主备。并且官方已经不推荐这种方式,所以在这里只是简单的介绍下吧,搭建方式也相对简单。pl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年北京银行招聘考试(行政能力测验)历年参考题库含答案详解
- 2025广东佛山市南海区狮山高级中学招聘临聘教师3人笔试备考试题及答案解析
- 化工行业工伤预防管理规范
- 2.3.2长江 课件 商务星球版地理八年级上册
- 教师招聘之《小学教师招聘》能力检测附答案详解(典型题)
- 基于2025年的中医药康养旅游示范基地建设文化内涵研究报告
- 呼伦贝尔能源重化工工业园区谢尔塔拉产业区污水处理工程初步设计说明书带答案详解
- 教师招聘之《小学教师招聘》考前冲刺模拟题库提供答案解析含完整答案详解【易错题】
- 教师招聘之《小学教师招聘》通关检测卷及参考答案详解【b卷】
- 押题宝典教师招聘之《小学教师招聘》考试题库(模拟题)附答案详解
- 中国多发性骨髓瘤诊治指南(2024年修订)解读课件
- 果树栽培工专业技能考核试卷及答案
- 空调电费知识培训内容课件
- 2025排污许可条例试题及答案
- 2025年秋期新教材部编人教版三年级上册道德与法治教学计划+进度表
- 水工结构理论知识培训课件
- 粮库业务知识培训课件
- 医师临床“三基”训练综合试卷(含答案)
- 《建筑基坑工程监测技术标准》(50497-2019)
- 数字经济学导论-全套课件
- 山大初试913环境学概论
评论
0/150
提交评论