① sharding原理
构建一个MongoDB的分片集群,需要三个重要的组件:分片服务器(Shard Server)、配置服务器(Config Server)、路由服务器(Route Server):
mongos(路由服务器),数据库集群请求的入口,所有请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它负责把对应的数据请求转发到对应的shard服务器上。Route Server本身不保存数据,启动时从Config Server加载集群信息到缓存中。
config server(配置服务器),存储所有数据库元信息(路由、分片)的配置。mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据。mongos第一次启动或者关掉重启就会从 config server 加载配置信息,以后如果配置服务器信息变化会通知到所有的 mongos 更新自己的状态,这样 mongos 就能继续准确路由。在生产环境通常有多个 config server 配置服务器,因为它存储了分片路由的元数据,防止数据丢失!从MongoDB 3.4开始,必须将配置服务器部署为副本集(CSRS)。
shard(分片),每个Shard Server都是一个mongod数据库实例,用于存储实际的数据块。整个数据库集合分成多个块存储在不同的Shard Server中。一个Shard Server可由几台机器组成一个副本集来承担,防止因主节点单点故障导致整个系统崩溃。
② 搭建
sharding角色 |
安装目录 |
IP和端口 |
config |
/data/mongodb/config/{27020,27021,27022} |
27020(主), 27021(副), 27022(副) |
shard1 |