原文地址:http://www.cnblogs.com/65702708/archive/2011/04/17/2018974.html
要构建一个 MongoDB Sharding Cluster(集群),需要三种角色:
Shard Server: mongod 实例,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障
Config Server: mongod 实例,存储了整个 Cluster Metadata,其中包括 chunk 信息。
Route Server: mongos 实例,前端路由,客户端由此接入,且让整个集群看上去像单一数据库
MongoDB架构
- 分别在3台机器运行一个mongod实例(称为mongod shard11,mongod shard12,mongod shard13)组织replica set1,作为cluster的shard1
- 分别在3台机器运行一个mongod实例(称为mongod shard21,mongod shard22,mongod shard23)组织replica set2,作为cluster的shard2
- 每台机器运行一个mongod实例,作为3个config server
- 每台机器运行一个mongs进程,用于客户端连接
现在开始配置:
系统环境:Ubuntu10.2
MongoDB版本:Mongodb1.81
由于没有现实中没有实际这么多台服务,这个配置我就只在一台Ubuntu服务器中完成配置,其它机器配置应该是一样。在有真实机器的环境中注意各个服务器之间的MongoDB的版本一定要一致,不然可能会出现rs.initiate(config)不能正确添加的问题
首先分配shard
1. mongodb端口 10001和10011 为一组shard,和一组Replica Set
步骤:
1)$ mkdir -p /usr/MonogoData/shard1_10001
2)$ mkdir -p/usr/MonogoData/shard1_10011
3)
$ ~/liaoyong/down/mongodb1.8.2/bin/mongod --fork --shardsvr --port 10001 --dbpath /usr/MonogoData/shard1_10001/ --logpath /usr/MonogoData/shard1_10001/log.log --replSet shard1 --rest
$ ~/liaoyong/down/mongodb1.8.2/bin/mongod --fork --shardsvr --port 10011 --dbpath /usr/MonogoData/shard1_10011/ --logpath /usr/MonogoData/shard1_10011/log.log --replSet shard1 --rest
运行完成后,进入任意一个MongoDB端口,配置Replica Set
$ ~/liaoyong/down/mongodb1.8.2/bin/mongo --prot 10001
config={_id:'shard1',members:[{_id:0,host:'192.168.0.182:10001'},{_id:1,host:'192.168.0.182:10011'}]}
rs.initiate(config)
rs.status()
这样,第1个shard就配置好了。
接下来配置第2组shard
1)$ mkdir -p /usr/MonogoData/shard3_10003
2)$ mkdir -p/usr/MonogoData/shard3_10033
3)
$ ~/liaoyong/down/mongodb1.8.2/bin/mongod --fork --shardsvr --port 10003 --dbpath /usr/MonogoData/shard3_10003/ --logpath /usr/MonogoData/shard3_10003/log.log --replSet shard3 --rest
$ ~/liaoyong/down/mongodb1.8.2/bin/mongod --fork --shardsvr --port 10033 --dbpath /usr/MonogoData/shard3_10033/ --logpath /usr/MonogoData/shard3_10033/log.log --replSet shard3 --rest
运行完成后,进入任意一个MongoDB端口,配置Replica Set
$ ~/liaoyong/down/mongodb1.8.2/bin/mongo --prot 10003
config={_id:'shard3',members:[{_id:0,host:'192.168.0.182:10003'},{_id:1,host:'192.168.0.182:10033'}]}
rs.initiate(config)
rs.status()
好了,现在开始配置1台Mongodb Config
$ mkdir -p /usr/MonogoData/Config_20001
$ ~/liaoyong/down/mongodb1.8.2/bin/mongod --fork --configsvr --port 20001 --dbpath /usr/MonogoData/config_20001/ --logpath /usr/MonogoData/config_20001/log.log --rest
$ ps aux | grep mongodb | grep -v grep
查看是否mongodb的进程都起来了
下面接着配置Mongs
$ mkdir -p /usr/MonogoData/master
$ ~/liaoyong/down/mongodb1.8.2/bin/mongos --fork --port 40000 --logpath /usr/data/master/log.log --chunkSize 1
--configdb "192.168.0.182:20001"
进入Mongos
$ ~/liaoyong/down/mongodb1.8.2/bin/mongo --port 40000
>use admin
>db.runCommand({ addshard:'shard1/192.168.0.182:10001,192.168.0.182:10011' })
>db.runCommand({ addshard:'shard3/192.168.0.182:10003,192.168.0.182:10033' })
>db.runCommand({listshards:1})
接下来进行切片
db.runCommand({ enablesharding:'liaoyongdb' }) #指定切片数据库
db.runCommand({shardcollection:'liaoyongdb.test',key:{_id:1}}) #指定切片数据的表
printShardingStatus()
好了,到这里集群就已经配置好了
我这里由于是同一台电脑,我插入了1百w数据的时候,内存都用完了,下面就是大家自己试试了。
希望能帮助大家共同学习MongoDB。
分享到:
相关推荐
通过分析这个项目,你可以更深入地理解这两者如何协同工作,例如观察如何配置 MongoDB,如何定义 DAO,以及 Controller 如何调用 DAO 方法进行数据操作。 总的来说,SpringMVC 和 MongoDB 的结合提供了灵活的数据...
MonogoDB数据库百度云02
java操作mongo数据的第三方jar包,就和oracle的第三方jar包一样
Express: ?web application framework for?Node.js?...Express4.x配置文件 Ejs模板使用 Bootstrap界面框架 路由功能 Session使用 页面提示 页面访问控制 开发环境: Ubuntu MonogoDB: v2.6.4 nodej
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 ... 【项目质量】: 所有源码都经过严格测试,...
1. **连接管理**:Robo 3T支持创建、编辑和管理多个MongoDB服务器的连接配置。用户可以输入主机名、端口号、数据库名、用户名和密码等信息,以便快速连接到MongoDB实例。 2. **数据浏览**:一旦连接成功,用户可以...
开发者可以选择使用注解来覆盖默认配置,这种方法被称为“异常配置”。以下是JPA注解的一些主要类别和用途: 1. **实体**: - `@Entity`:标记一个类为JPA实体,使得它可以被用于JPA服务。 - `@Table`:指定实体...
在这个文件中,有一个方法是parseThinkWhere,这个方法负责解析查询条件并生成MongoDB能够理解的查询语句。根据上述内容,parseThinkWhere方法的switch语句中缺少了对_complex的处理,因此它不支持复合查询。 在...
查询数据则可以使用`find()`方法,支持各种条件查询: ```java FindIterable<Document> results = collection.find(eq("name", "John")); for (Document doc : results) { System.out.println(doc.toJson()); } ``...
Document updateDocument = new Document("$set", new Document("key", "newValue")); collection.updateMany(query, updateDocument); ``` 删除操作同样简单: ```java collection.deleteMany(query); ``` ...
MonogoDB连接配置见默认为mongodb://localhost:27017/dealport 编译 LESS CSS 和 Javascript 包,运行 linter 等(使用 grunt)并启动服务器: npm start 配置 有关有效的配置键及其默认值,请参阅 lib/server-...
2. 分布式架构:支持分片(sharding)和复制集(replication),可以实现水平扩展,提高系统的可用性和性能。 3. 自动分片:MongoDB能够自动将数据分散到多个节点,实现负载均衡。 4. 强大的查询语言:MongoDB提供...
Oracle的特点包括强大的性能、高可用性和安全性,支持分布式数据库、实时应用集群和大数据处理。其PL/SQL编程语言为开发者提供了丰富的数据库操作能力。 3. Redis Redis是一个内存中的数据结构存储系统,常作为...
`MongoDB.Bson.dll` 包含了 Bson(Binary JSON)相关的类和方法,用于序列化和反序列化对象到 MongoDB 的 BSON(二进制JSON)格式。BSON 是 MongoDB 内部存储数据的一种高效方式,它类似于 JSON,但支持更多的数据...
MongoDB 是一种流行的开源、非关系型数据库管理系统,属于 NoSQL 数据库的一种。它采用了分布式文件存储机制,由 C++ 语言编成,为 Web 应用提供了高性能、可扩展的数据存储解决方案。MongoDB 兼具关系数据库和非...
5. **查询数据**:查询数据通常使用`Find`方法,它可以返回一个`IAsyncCursor`,你可以遍历它来获取结果: ```csharp var filter = Builders<BsonDocument>.Filter.Eq("name", "John"); var users = await ...