`
jorwen_fang
  • 浏览: 51835 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MongoDB学习笔记(十一 ):集群-分片模式

阅读更多

MongoDB的分片主要是指将集合拆分成小块并分别存在不同服务器上的过程。MongoDB支持自动分片,可摆脱手动分片管理上的困难。 


在以下情况下需要运用分片: 
1.服务器的磁盘不够用。 
2.单个Mongod不能满足写数据的性能需求。 
3.单个Mongod内存不够用,需要将大数据放入内存中提高性能。 

 

 


Shard Server: mongod实例,用于存储实际的数据块,实际生产环境中一个Shard Server角色可由几台机器组个一个Replica Set承担,防止主机单点故障。 

Config Server: mongod实例,存储了整个Cluster Metadata,其中包括Chunk信息。 

Route Server: mongos实例,前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。 
范例:

 



1.启动数据节点

1../mongod --fork --dbpath ../data/set1/ --logpath ../log/set1.log --replSet test #192.168.4.43./mongod --fork --dbpath ../data/set2/ --logpath ../log/set2.log --replSet test #192.168.4.44./mongod --fork --dbpath ../data/set3/ --logpath ../log/set3.log --replSet test #192.168.4.45 决策 不存储数据

2.启动配置节点

1../mongod --configsvr --dbpath ../config/set1/ --port 20001 --fork --logpath ../log/conf1.log #192.168.4.30./mongod --configsvr --dbpath ../config/set2/ --port 20002 --fork --logpath ../log/conf2.log #192.168.4.31

3.启动路由节点

1../mongos --configdb 192.168.4.30:20001,192.168.4.31:20002 --port 27017 --fork --logpath ../log/root.log #192.168.4.29

这里我们没有用配置文件的方式启动,其中的参数意义大家应该都明白。一般来说一个数据节点对应一个配置节点,仲裁节非必须的。点则不需要对应的配置节点。注意在启动路由节点时,要将配置节点地址写入到启动命令里。 

4.配置Replica Set

1../mongo 192.168.4.43:27017   #ip和port是某个节点的地址>use admin>cfg={ _id:"testrs", members:[ {_id:0,host:'192.168.4.43:27017',priority:2}, {_id:1,host:'192.168.4.44:27017',priority:1}, {_id:2,host:'192.168.4.45:27017',arbiterOnly:true}] };>rs.initiate(cfg)             #使配置生效

5.配置Sharding

1../mongo 192.168.4.29:27017   #这里必须连接路由节点>sh.addShard("test/192.168.4.43:27017") #test表示replica set的名字 当把主节点添加到shard以后,会自动找到set里的主,备,决策节点>db.runCommand({enableSharding:"diameter_test"})    #diameter_test is database name>db.runCommand( { shardCollection: "diameter_test.dcca_dccr_test",key:{"__avpSessionId":1}})

第一个命令很容易理解,第二个命令是对需要进行Sharding的数据库进行配置,第三个命令是对需要进行Sharding的Collection进行配置,这里的dcca_dccr_test即为Collection的名字。另外还有个key,这个是比较关键的东西,对于查询效率会有很大的影响 

到这里Sharding也已经搭建完成了,以上只是最简单的搭建方式,其中某些配置仍然使用的是默认配置。如果设置不当,会导致效率异常低下,所以建议大家多看看官方文档再进行默认配置的修改。

  • 大小: 17.2 KB
  • 大小: 303.2 KB
分享到:
评论

相关推荐

    mongodb学习笔记

    在本篇 MongoDB 学习笔记中,我们将聚焦于 MongoDB 的集群和分片(sharding)配置,这是实现大规模数据存储和处理的关键特性。 1. **MongoDB 集群**: - 集群是由多个独立的 MongoDB 实例组成的,它们共同提供高...

    MongoDB学习笔记

    3. 分片集群的理论、搭建过程、测试结果、优势剖析、分片键选择和集群管理:分片是MongoDB中实现数据水平扩展的关键技术。 五、数据库管理 1. 导入导出:可以将数据导出为JSON格式,也可以从JSON导入数据。 2. 数据...

    mongoDB学习笔记及工具.zip

    本压缩包“mongoDB学习笔记及工具.zip”包含了一些资源,帮助你深入理解和掌握MongoDB的相关知识。 1. **笔记(note.txt)**: 这个文件可能是对MongoDB的基础概念、安装过程、基本操作和进阶特性的详细记录。笔记...

    mongodb学习笔记和mongodb权威指南

    书中可能还会涉及复制集的设置和管理,用于实现高可用性和数据冗余,以及分片技术,用于在大型集群上水平扩展数据库。 `mongodb学习手册`可能是一个全面的教程,旨在引导初学者逐步了解MongoDB。它可能从安装和启动...

    数据库学习笔记包括:Oracle、MySQL、MongoDB、Redis,Neo4j的在完善.zip

    本压缩包中的学习笔记涵盖了五大主流数据库系统:Oracle、MySQL、MongoDB、Redis以及Neo4j,它们各自拥有独特的特性和用途,适用于不同的场景。 1. Oracle数据库: Oracle是一款关系型数据库管理系统(RDBMS),在...

    java中间件学习笔记

    - **分片集群**:当数据量过大时,分片集群能将数据分散在多个节点上,以提高查询性能。分片关键在于选择合适的片键,管理区块,并制定分片策略。 2. **SpringBoot操作MongoDB**:SpringBoot简化了与MongoDB的集成...

    MongoDB学习笔记(一) MongoDB介绍与安装方法

    MongoDB 是一种高性能、开源、无模式的文档型数据库,属于 NoSQL 数据库中的热门选择。...如果你希望深入了解,可以进一步学习其复制集、分片、数据备份与恢复、安全配置以及更复杂的查询和聚合操作。

    mongodb-university-m101js:MongoDB for Node.js开发人员-认证

    课程将介绍如何设置和管理分片集群,以及如何决定何时和如何分片。 8. **安全与认证**:学习者将学习MongoDB的安全特性,如用户认证、角色权限和网络安全性,确保数据库的安全运行。 9. **故障排查与监控**:课程...

    mongoDb源码和笔记

    最后,MongoDB的复制集和分片集群技术也是其高可用性和可扩展性的基石。源码中会涉及复制状态同步、仲裁节点选举和数据迁移的实现。 通过深入研究这些源码和笔记,开发者不仅可以提升对MongoDB的理解,还能学习到...

    免费的mongoDB

    该指南可能深入讲解了MongoDB的核心特性,包括复制集、分片集群、数据备份与恢复策略、安全性和权限管理等。复制集是MongoDB高可用性的关键,它允许多个副本同步数据,以确保服务的连续性。而分片集群则支持水平扩展...

    mongodb基础语句大全

    对于大型应用,MongoDB支持集群和分片以实现水平扩展。分片允许将数据分布在多个服务器上,提高读写性能。 10. 复制集: 为了实现高可用性,MongoDB提供了复制集功能。复制集中的多个节点互相备份,当主节点故障...

    mongodb官网文档集合

    “Recommended Production Architectures”部分介绍了在生产环境中部署MongoDB的推荐架构,包括主从复制、分片集群和地理冗余方案。这部分内容对于规划和实现高可用性和可扩展性的数据库系统非常有帮助。 #### ...

    MongoDB入门的一些资料

    1. **架构设计**:解释MongoDB的分布式架构,包括主从复制和分片集群。 2. **性能调优**:内存管理、磁盘I/O优化、连接池设置等。 3. **应用程序集成**:如何在各种编程语言(如Python、Java、Node.js等)中使用...

    Redis学习笔记.pdf

    Redis集群的建立和管理可以进一步提升数据库的高可用性和扩展性,支持数据分片和负载均衡。 在分布式系统中,Redis可用于实现分布式Session管理,提高系统的可扩展性和灵活性。通过合理的配置和使用Redis的特性,...

    mongoDB-academy-M101JS:管理 mongoDB 学院 M101JS 课程作业的存储库

    学员将学习如何配置和管理复制集,以及如何在大型集群中实现分片。 7. **安全与认证**:课程还将涵盖 MongoDB 的安全性,如用户认证、角色管理、访问控制以及防火墙规则等。 8. **性能调优**:通过监控工具和日志...

    我的学习资料打包,包括ES,MongoDB,Oracle,TS,NodeJS相关的学习过程

    学习MongoDB,你需要了解其基本操作,如CRUD(创建、读取、更新、删除),掌握集合、文档、分片、副本集的概念,以及如何使用聚合框架进行数据分析。 3. **Oracle**:Oracle是世界上最广泛使用的商业关系型数据库...

    MongoDB_online_course

    课程会讲解如何配置和管理分片集群,以及路由数据的机制。 8. **聚合管道(Aggregation Pipeline)**:学习使用聚合框架进行复杂的数据分析,包括阶段(Stages)、操作符(Operators)和聚合函数(Aggregation ...

    redis学习笔记

    Redis 集群则进一步扩展了这一概念,支持数据的分布式存储和多节点间的自动数据分片,提供更高的可用性和扩展性。 对于 Java 开发者来说,Jedis 是常用的 Redis 客户端库,它可以方便地在 Java 应用程序中与 Redis ...

Global site tag (gtag.js) - Google Analytics