MongoDB 分片配置与数据管理全解析
1. 何时进行分片
决定何时进行分片是一项需要权衡的工作。过早分片会增加部署的操作复杂性,并且一些设计决策后期难以更改;而过晚分片,在不中断服务的情况下对过载系统进行分片会变得困难。
一般来说,分片用于以下几个方面:
- 增加可用的 RAM。
- 增加可用的磁盘空间。
- 减轻服务器负载。
- 实现比单个 mongod
更高的读写吞吐量。
因此,良好的监控对于决定是否需要分片至关重要。需要仔细衡量各项指标,通常人们会更快地遇到某一个瓶颈,所以要先确定部署中需要优先解决的瓶颈,并提前规划好何时以及如何将副本集转换为分片集群。
添加分片时,性能通常会随着分片数量的增加而大致线性提升,直到达到数百个分片。不过,从非分片系统过渡到少量分片时,可能会出现性能下降的情况。这是因为移动数据、维护元数据和路由会带来额外的开销,少量分片的延迟可能更高,吞吐量甚至可能低于非分片系统。所以,建议直接使用三个或更多的分片。
2. 启动服务器
创建集群的第一步是启动所有必要的进程,包括 mongos
、分片和配置服务器。
2.1 配置服务器
配置服务器是集群的核心,它存储着关于哪个服务器存储哪些数据的所有元数据。因此,必须先设置配置服务器,并且要确保其数据的安全性。具体要求如下:
- 启用日志功能。
- 将数据存储在非易失性驱动器上。
- 每个配置服务器应位于单独的物理机器上,最好进行地理分布。
启动配置服务器