MongoDB分片部署(windows)

在MongoDB中,分片(Sharding)是一种将数据水平分割到多个MongoDB实例(称为分片或Shard)上的技术。分片允许单个MongoDB集群扩展到存储非常大的数据集,而不会受到单个服务器的硬件限制。在分片集群中,配置服务器(Config Server)负责存储集群的元数据和配置信息,而路由服务器(Route Server,通常称为mongos)负责处理客户端请求,并将它们路由到正确的分片上。

OS:win10

MongoDB:4.4.24

伪分布式

分片架构


从图中可以看出,分片集群中主要由三个部分组成,即分片服务器( Shard )、路由服务器
( Mongos )以及配置服务器( Config Server )组成。其中,分片服务器有三个,即 Shard1 、
Shard2 、 Shard3 ;路由服务器有两个,即 Mongos1 和 Mongos2 ;配置服务器有三个,即主、副、副。
主要有如下所述三个主要组件:
Shard: 用于存储实际的数据块,实际生产环境中一个shard server 角色可由几台机器组个一个 replica set(副本集群) 承担,防止主机单点故障【3.6版本后必须配置成副本集群】
Config Server: mongod实例,存储了整个 ClusterMetadata ,其中包括 chunk 信息【3.4版本后必须部署成副本集群】。
Query Routers: 前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。
部署分片集群
部署shard【副本集群】

部署两个shard分片块,数据存储的地方。

步骤一:环境准备

分片 节点 端口 路径
1 shard11(主)         4006    


dbpath:D:\shard1\shard11\data

logpath:D:\shard1\shard11\log

shard12(从)     4007    

dbpath:D:\shard1\shard12\data

logpath:D:\shard1\shard12\log

2  shard21(主)  4008 

dbpath:D:\shard2\shard21\data

logpath:D:\shard2\shard21\log

### 设置 MongoDB 分片集群 #### 准备工作 为了确保分片集群能够正常运行,在开始之前需确认已安装并配置好多个MongoDB实例。对于Windows环境而言,可以通过命令`net start MongoDB27021 net start MongoDB27022 net start MongoDB27023 net start MongoDB27031 net start MongoDB27032 net start MongoDB27033`来启动所需的服务[^1]。 #### 创建配置服务器副本集 由于在MongoDB 3版本之后,配置服务器必须作为副本集的一部分来部署,因此需要先建立一个三节点的配置服务器副本集。这一步骤至关重要,因为后续所有的元数据都将保存在此处[^5]。 ```shell mongod --configsvr --replSet configReplSet --dbpath C:\data\configdb --port 27019 --logpath "C:\Program Files\MongoDB\Server\<version>\Log\ConfigSvr.log" --install --serviceName "MongoDBConfig" ``` 完成上述操作后,利用`rs.initiate()`初始化该副本集,并验证其状态。 #### 启动Shard节点 接下来分别启动各个shard成员,这里假设每个shard由三个replica组成: ```shell mongod --shardsvr --replSet shard0 --dbpath C:\data\db\shard0\a --port 27018 --logpath "C:\Program Files\MongoDB\Server\<version>\Log\Shard0A.log" --install --serviceName "MongoDBShard0a" mongod --shardsvr --replSet shard0 --dbpath C:\data\db\shard0\b --port 27019 --logpath "C:\Program Files\MongoDB\Server\<version>\Log\Shard0B.log" --install --serviceName "MongoDBShard0b" mongod --shardsvr --replSet shard0 --dbpath C:\data\db\shard0\c --port 27020 --logpath "C:\Program Files\MongoDB\Server\<version>\Log\Shard0C.log" --install --serviceName "MongoDBShard0c" ``` 重复以上步骤为其他shard创建相应的服务。 #### 初始化路由进程(Mongos) 最后一步是设置mongos路由器,它负责协调客户端请求与实际的数据分布情况之间的交互: ```shell mongos --configdb configReplSet/localhost:27019,localhost:27020,localhost:27021 --logpath "C:\Program Files\MongoDB\Server\<version>\Log\Mongos.log" --install --serviceName "MongoDBMongos" ``` 启动mongos服务并通过命令行连接至mongos端口(默认27017),执行如下指令添加各shard以及定义合适的分片策略[^4]: ```javascript // 添加 shards 到 mongos 路由器中 sh.addShard("shard0/mongodb-shard0-a.example.net:27018,mongodb-shard0-b.example.net:27019,mongodb-shard0-c.example.net:27020") // 对指定集合启用分片功能 sh.enableSharding("testDatabase") // 设定用于分片的关键字段(即片键) sh.shardCollection("testDatabase.testCollection", {"_id": 1}) ``` 至此,已经完成了基于Windows平台下的MongoDB分片集群的基础构建[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值