MongoDB分片篇
来源:互联网 发布:报网络教育有用吗 编辑:程序博客网 时间:2024/06/15 12:13
本篇文章介绍在一台Windows机器上配置分片集群,这里使用的mongodb的版本是v3.4.6, 如果版本太老下面的配置步骤可能无效甚至shell命令语法会报错
1.模拟多台机器
分片需要多台机器,这里为了在一台机器上来模拟多台机器,需要使用多个MongoDB, 如图,复制MongoDB的安装文件复制多份
2. 以副本集方式启动3台配置服务器
这里分别使用MongoDB4、MongoDB5、MongoDB6作为配置服务器, 启动之前最好将dbpath对应的目录中的文件全部删除,放置配置副本集失败
D:\Java\MongoDB4\Server\bin>mongod --configsvr --port 30000 --dbpath=D:\Java\MongoDB4\DB --replSet configdbSetD:\Java\MongoDB5\Server\bin>mongod --configsvr --port 30001 --dbpath=D:\Java\MongoDB5\DB --replSet configdbSetD:\Java\MongoDB6\Server\bin>mongod --configsvr --port 30002 --dbpath=D:\Java\MongoDB6\DB --replSet configdbSet// 配置副本集时最好是清空所有服务器的数据,即dbpath目录D:\Java\MongoDB4\Server\bin>mongo 127.0.0.1:30000>config = { _id:'configdbSet', members:[ {_id:0,host:'127.0.0.1:30000',priority:1}, {_id:1,host:'127.0.0.1:30001',priority:2}, {_id:2,host:'127.0.0.1:30002',priority:3} ]}>rs.initiate(config)
3. 启动mongos进程
// 启动mongos如果使用--logpath 好像启动不起来D:\Java\MongoDB7\Server\bin>mongos --port 27017 --configdb configdbSet/127.0.0.1:30000,127.0.0.1:30001,127.0.0.1:30002
4. 以副本集的方式启动3台分片服务器
这里以MongoDB、MongoDB2、MongoDB3作为分片服务器,启动时最好将dbpath对应的目录下的文件全删掉
D:\Java\MongoDB\Server\bin>mongod --shardsvr --port 20000 --replSet mySet --dbpath=D:\Java\MongoDB\DB D:\Java\MongoDB2\Server\bin>mongod --shardsvr --port 20001 --replSet mySet --dbpath=D:\Java\MongoDB2\DB D:\Java\MongoDB3\Server\bin>mongod --shardsvr --port 20002 --replSet mySet --dbpath=D:\Java\MongoDB3\DBD:\Java\MongoDB\Server\bin>mongo 127.0.0.1:20000> config = { _id:'mySet', members:[ {_id:0,host:'127.0.0.1:20000'}, {_id:1,host:'127.0.0.1:20001'}, {_id:2,host:'127.0.0.1:20002'} ]}> rs.initiate(config)
5. 连接mongos
D:\Java\MongoDB7\Server\bin>mongo 127.0.0.1:27017// 将三台分片服务器添加到分片集群中mongs>sh.addShard("mySet/127.0.0.1:20000,127.0.0.1:20001,127.0.0.1:20002")// 配置需要分片的数据库> sh.enableSharding("test")// 配置分片数据库的集合对应的片键(索引)> sh.shardCollection("test.users", {"name": 1})// 切换到分片的数据库> use test// 向文档中插入多条文档> for(i = 0; i < 100000; i++) { db.users.insert({"name": "name"+i, "age": i}); }// 用于测试看文档是否按块拆分到三台分片服务器上> sh.status()
集群相关的所有配置信息都保存在config数据库上
- shards: 跟踪记录集群内所有的分片信息
- databases: 跟踪记录集群内的所有数据库的信息
- collections:跟踪记录所有分片集合的信息
- chunks: 记录所有块的信息
- changelog:跟踪记录集群中的操作
- tags:用于将指定块分到指定的分片服务器上
- settings: 均衡器相关的信息
D:\Java\MongoDB7\Server\bin>mongo 127.0.0.1:27017mongos> use configswitched to db configmongos> show collectionschangelogchunkscollectionsdatabaseslockpingslocksmigrationsmongosshardstagsversionmongos> db.shards.find().pretty(){ "_id" : "mySet", "host" : "mySet/127.0.0.1:20000,127.0.0.1:20001,127.0.0.1:20002", "state" : 1}mongos> db.databases.find(){ "_id" : "test", "primary" : "mySet", "partitioned" : true }mongos> db.collections.findOne(){ "_id" : "test.users", "lastmodEpoch" : ObjectId("59a1203c9cdd0bcdfccff4d9"), "lastmod" : ISODate("1970-02-19T17:02:47.296Z"), "dropped" : false, "key" : { "username" : 1 }, "unique" : false}mongos> db.chunks.find().pretty(){ "_id" : "test.users-username_MinKey", "lastmod" : Timestamp(1, 1), "lastmodEpoch" : ObjectId("59a1203c9cdd0bcdfccff4d9"), "ns" : "test.users", "min" : { "username" : { "$minKey" : 1 } }, "max" : { "username" : "username1" }, "shard" : "mySet"}{ "_id" : "test.users-username_\"username1\"", "lastmod" : Timestamp(1, 2), "lastmodEpoch" : ObjectId("59a1203c9cdd0bcdfccff4d9"), "ns" : "test.users", "min" : { "username" : "username1" }, "max" : { "username" : "username6" }, "shard" : "mySet"}{ "_id" : "test.users-username_\"username6\"", "lastmod" : Timestamp(1, 3), "lastmodEpoch" : ObjectId("59a1203c9cdd0bcdfccff4d9"), "ns" : "test.users", "min" : { "username" : "username6" }, "max" : { "username" : { "$maxKey" : 1 } }, "shard" : "mySet"}
相关文章
关于MongoDB分布式高可用集群实现(Linux): http://blog.csdn.net/foreverfriends/article/details/70227911
阅读全文
0 0
- MongoDB分片篇
- MongoDB 分片
- mongodb 分片
- mongodb分片
- Mongodb分片
- Mongodb分片
- MongoDB 分片
- MongoDB分片
- MongoDB分片
- mongodb分片
- mongodb分片
- MongoDB分片
- mongodb分片
- MongoDB分片
- mongodb分片
- MongoDB 分片
- MongoDB分片
- MongoDB 分片
- 如何修改oracle数据库字符集
- [转]写给Krpano小白们的最最最入门级教程(三)
- idea 解决Tomcat控制台乱码问题
- 性能分析2~jstat命令
- jdbc 工具类 jdbc java数据库连接
- MongoDB分片篇
- hdu6170
- 踩坑日记--maven包冲突
- hdu1232 并查集
- Python连接Oracle数据库
- iOS之sqlite和FMDB
- 1.IDA-基本操作(改变Image Base地址、打开、保存IDA的不同方式)
- Java内存区域与内存溢出异常(一)
- Android 对话框相关总结