目录
1. 概述
2. 使用场景
3. 优缺点
4. 节点作用
5. 部署规划
6. 内存配额
7. 配置文件
8. 配置集群分片
9. 开启认证
10. 集群验证
11. 总结
概述
MongoDB 集群分片是一种水平扩展数据库的方法,通过将数据分布在多个物理服务器上,提高系统的性能和可扩展性。分片的核心思想是将数据分成多个部分(称为“分片”),每个分片存储在不同的服务器上,从而分散负载,提高查询和写入性能。
使用场景
大规模数据存储:当单个 MongoDB 实例无法处理大量数据时,可以使用分片来分布数据,提高存储容量。
高并发访问:在高并发读写场景下,分片可以分散负载,提高系统的响应速度和吞吐量。
地理分布:当数据需要在全球范围内访问时,分片可以将数据分布到不同的地理位置,减少网络延迟。
实时分析:在需要实时处理大量数据的场景下,分片可以提高查询性能,支持实时分析和报表生成。
优缺点
优点
高可扩展性:通过增加更多的分片服务器,可以轻松扩展存储和计算能力。
高可用性:每个分片可以配置为副本集,提供数据冗余和故障恢复能力。
负载均衡:数据和查询负载可以均匀分布在多个分片上,提高整体性能。
灵活的数据分布:可以根据业务需求选择合适的分片键,优化数据分布和查询性能。
缺点
复杂性:分片架构比单实例架构更复杂,需要更多的管理和维护工作。
配置和管理成本:需要配置路由服务器、配置服务器和分片服务器,增加了初始设置和运维成本。
数据迁移:在分片键选择不当或数据增长过快时,可能需要重新平衡数据,导致额外的开销。
查询性能:跨分片的聚合查询和联合查询可能会影响性能,需要优化查询策略。
节点作用
mongos(路由服务器)
作用:作为客户端应用程序和分片集群之间的接口,负责路由查询和写入操作到正确的分片。
特点:无状态,可以横向扩展,提高系统的并发处理能力。
shard(分片服务器)
作用:存储实际的数据,每个分片可以是一个独立的 MongoDB 实例或副本集。
特点:数据分布在多个分片上,每个分片负责一部分数据,提高存储和查询性能。
config server(配置服务器)
作用:存储集群的元数据信息,如分片键、分片分布、路由信息等。
特点:通常使用副本集形式部署,确保高可用性和数据冗余。
下载地址
MongoDB Community Downloads | MongoDB
配置hosts解下
vim /etc/hosts
10.10.10.21 mon1
10.10.10.22 mon2
10.10.10.23 mon3
集群规划
10.10.10.21 mon1:mongos(30000)\config(27017-主)\shard1(40001-主)\shard2(40002-从)\shard3(40003-从)
10.10.10.22 mon2:mongos(30000)\config(27017-从)\shard1(40001-从)\shard2(40002-主)\shard3(40003-从)
10.10.10.23 mon3:mongos(30000)\config(27017-从)\shard1(40001-从)\shard2(40002-从)\shard3(40003-主)
3台机,每台机5个组件,分别mongos 1 个,config server 1 个,shard server 3 个
部署
解压(三台机器)
mongosh:
wget https://downloads.mongodb.com/compass/mongosh-2.3.1-linux-x64.tgz
tar xvf mongosh-2.3.1-linux-x64.tgz
mongodb:
tar xvf mongodb-linux-x86_64-rhel70-7.0.14.tgz
mv mongodb-linux-x86_64-rhel70-7.0.14 mongodb
创建相关目录(三台机器)
[root@easyliao012 monogocluster]# mkdir -p /monogocluster/shard{1,2,3}/{config,log,data}
[root@easyliao012 monogocluster]#mkdir -p /monogocluster/mongos/{config,log,data}
[root@easyliao012 monogocluster]# mkdir -p /monogocluster/config/{config,log,data}
内存配置
shard 和 config 服务器的 WiredTiger 缓存大小的分配建议:
1. Shard