没有合适的资源?快使用搜索试试~ 我知道了~
在MongoDB(版本3.2.9)中,分片集群(shardedcluster)是一种水平扩展数据库系统性能的方法,能够将数据集分布式存储在不同的分片(shard)上,每个分片只保存数据集的一部分,MongoDB保证各个分片之间不会有重复的数据,所有分片保存的数据之和就是完整的数据集。分片集群将数据集分布式存储,能够将负载分摊到多个分片上,每个分片只负责读写一部分数据,充分利用了各个shard的系统资源,提高数据库系统的吞吐量。数据集被拆分成数据块(chunk),每个数据块包含多个doc,数据块分布式存储在分片集群中。MongoDB负责追踪数据块在shard上的分布信息,每个分片存储哪些数据块,
资源推荐
资源详情
资源评论
MongoDB分片管理分片管理
在MongoDB(版本 3.2.9)中,分片集群(sharded cluster)是一种水平扩展数据库系统性能的方法,能够将数据集分布式存
储在不同的分片(shard)上,每个分片只保存数据集的一部分,MongoDB保证各个分片之间不会有重复的数据,所有分片保
存的数据之和就是完整的数据集。分片集群将数据集分布式存储,能够将负载分摊到多个分片上,每个分片只负责读写一部分
数据,充分利用了各个shard的系统资源,提高数据库系统的吞吐量。
数据集被拆分成数据块(chunk),每个数据块包含多个doc,数据块分布式存储在分片集群中。MongoDB负责追踪数据块在
shard上的分布信息,每个分片存储哪些数据块,叫做分片的元数据,保存在config server上的数据库 config中,一般使用3台
config server,所有config server中的config数据库必须完全相同。通过mongos能够直接访问数据库config,查看分片的元数
据;mongo shell 提供 sh 辅助函数,能够安全地查看分片集群的元数据信息。
对任何一个shard进行查询,只会获取collection在当前分片上的数据子集,不是整个数据集。Application 只需要连接到
mongos,对其进行的读写操作,mongos自动将读写请求路由到相应的shard。MongoDB通过mongos将分片的底层实现对
Application透明,在Application看来,访问的是整个数据集。
一,主分片
在分片集群中,不是每个集合都会分布式存储,只有使用sh.shardCollection()显式将collection分片后,该集合才会分布式存
储在不同的shard中。对于非分片集合(un-sharded collection),其数据只会存储在主分片(Primary shard)中,默认情况
下,主分片是指数据库最初创建的shard,用于存储该数据库中非分片集合的数据。每个数据库都有一个主分片。
Each database in a sharded cluster has a primary shard that holds all the un-sharded collections for that database. Each
database has its own primary shard.
例如,一个分片集群有三个分片:shard1,shard2,shard3,在分片shard1创建一个数据库blog。如果将数据库bolg分片,那
么MongoDB会自动在shard2,shard3上创建一个结构相同的数据库blog,数据库blog的Primary Shard是Shard1。
图示,Collection2的主分片是ShardA。
使用 movePrimary命令变更数据库默认的Primary shard,非分片集合将会从当前shard移动到新的主分片。
db.runCommand( { movePrimary : "test", to : "shard0001" } )
在使用movePrimary命令变更数据库的主分片之后,config server中的配置信息是最新的,mongos缓存的配置信息变得过时
了。MongoDB提供命令:flushRouterConfig 强制mongos从config server获取最新的配置信息,刷新mongos的缓存。
db.adminCommand({"flushRouterConfig":1})
二,分片的元数据
不要直接到config server上查看分片集群的元数据信息,这些数据非常重要,安全的方式是通过mongos连接到config数据查
看,或者使用sh辅助函数查看。
使用sh辅助函数查看
sh.status()
连接到mongos查看config数据库中的集合
mongos> use config
1,shards 集合保存分片信息
db.shards.find()
shard的数据存储在host指定的 replica set 或 standalone mongod中。
{
"_id" : "shard_name",
"host" : "replica_set_name/host:port",
"tag":[shard_tag1,shard_tag2]
}
剩余6页未读,继续阅读
资源评论
weixin_38621441
- 粉丝: 7
- 资源: 933
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于java的三国之家网站设计与实现.docx
- 基于java的图书管理系统V2设计与实现.docx
- 基于java的宿舍管理系统设计与实现.docx
- 基于java的停车场管理系统设计与实现.docx
- 基于java的图书管理系统V3设计与实现.docx
- 基于java的乡村养老服务管理系统设计与实现.docx
- 基于java的图书管理系统设计与实现.docx
- 基于java的项目申报系统设计与实现.docx
- 基于java的校车调度管理系统设计与实现.docx
- 基于java的校园便利平台设计与实现.docx
- 基于java的校园闲置物品交易系统设计与实现.docx
- 基于java的校园一卡通设计与实现.docx
- 基于java的协同过滤电影推荐系统设计与实现.docx
- 基于java的学院个人信息管理系统设计与实现.docx
- 基于java的医院病历管理系统设计与实现.docx
- 基于java的智慧养老中心管理系统设计与实现.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功