shard - 产生原因
当一个数据库
或集合
中数据量过大
时,一台机器
可能无法满足用户对其存储量
和读写吞吐量
需求。考虑分割
数据库和集合中的数据,将其分摊到多个服务器。
shard - 概念
-
动词
将数据库拆分,将其分散在不同的机器上的过程
-
名词
服务器中实际存储的,数据库(或集合)分割成的 数据集。
shard - 实现原理
- Query Routers:
- 定义:路由服务器,即mongos。
- 功能:起
路由
的功能,本身不保存数据
,供客户端连接
,使得整个集群从客户端角度看上去像单一数据库。 - 启动:在启动时
从配置服务器加载集群信息
.开启mongos进程需要知道配置服务器的地址,指定configdb选项。 - 使用:为确保高可用性,一般会配置至少一台备份mongos路由。
- Config Server:
- 定义:配置服务器,一个独立的mongod进程
- 功能:启用日志功能,
保存集群和分片的元数据
,保存的只是数据的分布表(各分片包含了哪些数据的信息)(不需要太多的空间和资源,配置服务器的1KB空间相当于真是数据的200MB)。 - 启动:像启动普通的mongod一样启动配置服务器,指定configsvr选项。
- 使用:为了保持集群的高可用,一般会配置至少一台备份配置服务器。配置服务器必须开启1个或则3个,开启2个则会报错。
- 特点:当服务不可用,则变成只读,无法分块、迁移数据。
- Shard:
- 定义:服务器中实际存储的,数据库(或集合)分割成的 数据集
- 功能:解决 “数据库数据量过大,超过服务器
存储量
和读写吞吐量
能力” 的问题 - 使用:实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障。
- 分片服务器
- 定义:保存分片数据的服务器,是一个独立普通的mongod进程
- 功能:保存shard数据信息。
- 使用:为保持高可用型,往往有很多副本。
- 均衡器
- 功能:通过数据迁移保持分片均衡。周期性的检查分片是否存在不均衡,如果不均衡则开启块的迁移。
- 使用:
- config.locks集合里的state表示均衡器是否找正在运行,0表示非活动状态,2表示正在均衡。
- 均衡迁移数据的过程会增加系统的负载:目标分片必须查询源分片的所有文档,将文档插入目标分片中,再清除源分片的数据。可以关闭均衡器(不建议)。
- 关闭均衡器会导致各分片数据分布不均衡,磁盘空间得不到有效的利用。
shard - 启动过程
这些服务,因为在后台运行,所以用配置文件启动
- 启动Shard Server(不一定在最开始启动)
- 启动Config Server(先于Route Process启动)
- 启动Route Process
- 配置Sharding
参考文献
http://www.mongodb.org.cn/tutorial/21.html shard - MongoDB中文教程
https://www.cnblogs.com/zhoujinyi/p/4635444.html MongoDB 分片的原理、搭建、应用 - 博客园