-
Notifications
You must be signed in to change notification settings - Fork 0
Mongo Shared Cluster
WinChua edited this page Jun 21, 2020
·
3 revisions
- shard: 每一个shard包含了整体数据的一部分, 同时每一个shard都能够被部署成为一个replicate set;
- config server: 整个集群配置的存储;
- mongos: mongos充当了查询操作分发器的角色, 在application已经整个mongod集群之间
- shard key: mongo的shard在collection的level上对数据进行分区, 每一个collection只能够有一个shard key, 同时shard key在分片创建之后, 是不能够被更改的; 对于一个非空collection创建分片之前, 需要在shard key之上创建一个index; 而对于空collection来说, 直接分片就好了;
- chunk: 每一个shard key, 经过hash之后, 会有一个取值范围, mongo根据分片的多少, 对取值区间进行划分, 每一个划分区间称为chunk
- balancer: 为了使每一个chunk中实际包含的数据大小差不多, mongo运行了balancer, 对所有chunk进行检查, 重新分配, 数据迁移;
- Hashed Sharding: 根据shard key的hash value, 将document分布到不同的chunk中, 这样做的好处是, 每一个chunk中数据量的大小基本均衡, 缺点是: 对于一个区间批量查询来说, 查询落到同一个mongod的chunk的概率更小了 ;
- Range Sharding: 粗暴地根据shard key进行区间划分, 连续的区间作为一个chunk, 这样一来, 距离近的key将会更有可能落在同一个shard中, 更加有利于批量的区间查询;
- 充分考虑shard key的选择;
- shard之后不能够重新shard,也不能够unshard
- 对于一个sharded collection来说, 如果某次查询不包含shard key的查询条件, 那么mongos将会做一次broadcast来实现操作
- 由于shard操作是在collection的level上的, 而一个db中可以包含多个collection, 有的collection进行shard,
- 配置configsrv:
1 sharding:
2 clusterRole: configsvr
3 replication:
4 replSetName: cfg0
5 net:
6 bindIp: localhost
启动: mongod --dbpath `pwd`/dbpath0 --config confsrv.cnf
默认端口: 27019
连接configsvr: mongo --host localhost --port 27019
- 配置分片:
rs.status()
rs.initiate()