MongoDB之Sharding 分片
来源:互联网 发布:简乐互动java游戏 编辑:程序博客网 时间:2024/05/16 07:47
MongoDB 的数据分块称为 chunk。每个 chunk 都是 Collection 中一段连续的数据记录,通常最大尺寸是 200MB,超出则生成新的数据块。
要构建一个 MongoDB Sharding Cluster,需要三种角色:
Shard Server :即存储实际数据的分片,每个 Shard 可以是一个 mongod 实例,也可以是一组 mongod 实例 构成的Replica Set。为了实现每个 Shard 内部的 auto-failover,MongoDB 官方建议每个Shard 为一组 Replica Set。
Config Server: 为了将一个特定的collection 存储在多个 shard 中,需要为该 collection 指定一个 shard key, 例如{age: 1} ,shard key 可以决定该条记录属于哪个 chunk。Config Servers 就是用来存储: 所有 shard 节点的配置信息、每个 chunk 的 shard key 范围、chunk在各 shard 的分布情况、 该集群中所有DB 和 collection 的 sharding 配置信息。
Route Process :这是一个前端路由,客户端由此接入,然后询问 Config Servers 需要到哪个 Shard 上查询或保存记录,再连接相应的 Shard 进行操作,最后将结果返回给客户端。客户端只需要将原本 发给 mongod 的查询或更新请求原封不动地发给 Routing Process,而不必关心所操作的记录 存储在哪个 Shard 上。
1 启动 Shard Server
mongod --shardsvr --port 20000 --dbpath /data/shard/s0 --fork –logpath /data/shard/log/s0.log –directoryperdb
mongod --shardsvr --port 20001 --dbpath /data/shard/s1 --fork --logpath /data/shard/log/s1.log –directoryperdb
2 启动 Config Server
mongod --configsvr --port 30000 --dbpath /data/shard/config --fork --logpath
/data/shard/log/config.log –directoryperdb
3启动 Route Process
Mongos --port 40000 --configdb localhost:30000 --chunkSize 1 --fork --logpath /data/shard/log/route.log
mongos 启动参数中,chunkSize 这一项是用来指定 chunk 的大小的,单位是 MB,默认大小 为 200MB,为了方便测试Sharding 效果,我们把 chunkSize 指定为 1MB。
4 配置 Sharding
使用 MongoDB Shell 登录到 mongos,添加 Shard 节点 。
添加 Shard Server
db.runCommand({ addshard:"localhost:20000" })
db.runCommand({ addshard:"localhost:20001" })
设置分片存储的数据库
db.runCommand({ enablesharding:"test" })
设置分片的集合名称 ,且必 须指定 Shard Key,系统会自动创建索引
db.runCommand({ shardcollection: "test.users", key: { _id:1 }})
5 验证 Sharding 正常工作
已经对 test.users 表进行了分片的设置,下面我们们插入一些数据看一下结果 。
6 管理维护 Sharding
6.1 列出所有的 Shard Server
db.runCommand({ listshards: 1 })
6.2 查看 Sharding 信息
printShardingStatus()6.3 判断是否是 Sharding
6.4 对现有的表进行 Sharding使用admin进行分片处理。
db.runCommand({ shardcollection: "test.users_2", key: { _id:1 }})
再查看表的状态
db.users_2.stats()
6.5 新增 Shard Server
use admindb.runCommand({ addshard:"localhost:20002" })
6.6移除 Shard Server
use admin;db.runCommand({"removeshard" : "localhost:20002"})
PS: http://sheperd.blog.163.com/blog/static/195255119201191264016847/
- MongoDB之Sharding 分片
- mongodb的sharding(分片)
- MongoDB---Sharding分片
- MongoDB Sharding 分片技术
- Mongodb Sharding 分片
- MongoDB Sharding分片管理
- MongoDB Sharding 分片技术
- mongodb-sharding 分片
- mongodb—分片(sharding)
- MongoDB 分片(Sharding)
- MongoDB学习之旅二十六:MongoDB Sharding分片
- Nosql Mongodb之旅(27)—MongoDB Sharding分片
- MongoDB分片实战(二):Sharding
- mongodb sharding cluster(分片集群)
- MongoDB 自动分片 auto sharding
- 第八章:MongoDB sharding 分片
- MongoDB分片实战(二):Sharding
- mongodb 3.4 配置sharding分片
- Sublime Text 2 入门及技巧
- 从零开始使用Docker构建Java Web开发运行环境
- Spring-----4、使用Spring容器
- 【LeetCode】Two Sum
- 《UNIX环境高级编程》读书笔记之线程(1)
- MongoDB之Sharding 分片
- 关于编写性能高效的javascript事件的技术
- 黑马程序员---定义一个包含私有成员变量和函数的类
- Python timeit模块
- 用指向基类对象的指针输出数据
- ASP.NET页面间传值的几种方式
- fedora下安装matlab
- Apple Watch人机交互指南:UI元素--标签、图像、Groups
- 实现登录的Struts2应用程序