部署分片集群
简介:
在单机环境下,高频率的查询会给服务器 CPU 和 I/O 带来巨大的负担,基于这个原因,MongoDB 提供了分片机制用于解决大数据集的分布式部署,从而提高系统的吞吐量。
分片服务器有:
数据分片:分片机服务器将数据分成多个部分,每个部分称为一个分片。 每个分片可以独立存储和处理,提高了数据的并发访问能力和处理速度。
分布式存储:每个分片存储在不同的服务器上,通过将数据分散存储在多个服务器上,分片机服务器能够提供更大的存储容量和更高的数据可靠性。
负载均衡:分片机服务器使用负载均衡算法将数据请求均匀地分配给不同的服务器,以避免某些服务器过载。 这样可以提高系统的稳定性和可用性。
可扩展性:由于分片机服务器将数据分布在多个服务器上,当系统需要扩展时,可以通过增加服务器和分片来实现。 这种架构的可扩展性非常好,可以根据需求灵活地扩展系统容量和性能。
容错性:分片机服务器提供了数据备份和冗余机制,即使某个服务器发生故障,系统仍然可以保持正常运行
配置服务器:
即Config Server。在生产环境中,通过需要多个配置服务器,因为它存储了分片集群的元数据,并且这些数据是不允许丢失的,因此,需要配置多个配置服务器以防数据丢失,尽管其中一台分片服务器宕机,我们还有其它配置服务器,从而保证MongoDB分片集群依然能够正常工作。所以从这个MongoDB3.4版本开始,配置服务器必须部署副本集,因此我们需要配置三个配置服务器组成的副本集。
配置服务器存储着分片集群的持久化元数据,而路由器服务器存储着分片集群的非持久化元数据,这些数据均为内存缓存的数据。当路由器服务器初次启动或关闭重启时,就会从配置服务器中加载分片集群的元数据。若是配置服务器的信息发生变化,则会通知所有路由服务器更新自己的状态,这样路由服务器就能继续准确的协调客户端于分片集群的交互工作。
部署shard
步骤一:环境准备
每个分片都应该安装MongoDB实例,需要将bin文件复制到每个分片中,并创建data文件以及log文件存放数据库数据和日志数据
步骤二 启动分片服务(实例)
启动分片集群1(shard2和shard11)
shard1
然后进入数据库bin目录中,启动cmd
D:\mongo.hql\shard1\bin>mongod --shardsvr --replset shard1 -port 4006 -dbpath D:\mongo.hql\shard1\sha rd11\data --logpath D:\mongo.hql\shard1\shard11\log\shard11.log
{"t":{"$date":"2024-04-16T10:30:37.973Z"},"s":"I" c":"CONTROL","id":20697, "ctx":"main","msg";
"Renamed existing log file" "attr": i"oldLogPath":"D:\\mongo.hqL\\shard1\\shardi1\\log\\shard11.log", newLogPath":"D:\\mongo.hql\\shard1\\shard11\\log\\shard11.log.2024-04-16T10-30-37"}}
--shardsvr为分片生明
当命令一直保持运行状态则说明服务运行成功,此服务为一次性服务,不要关闭此此窗口,最小化即可
shard11:
D:\mongo.hql\shard1\bin>mongod --shardsvr --replset shard1 -port 4006 -dbpath D:\mongo.hql\shard1\sha rd11\data --logpath D:\mongo.hql\shard1\shard11\log\shard11.log
{"t":{"$date":"2024-04-16T10:30:37.973Z"},"s":"I" "c":"CONTROL" id" :20697,"ctx":"main","msg":
"Renamed existing log file attr" si"oldLogpath":"D:\\mongo .hql\\shaxd1\\shardi1\\log\\shard11.1og", newLogPath":"D:\\mongo.hql\\shard1\\shard11\\log\\shard11.log.2024-04-16T10-30-37"}}
再次输入数据库bin目录中,启动cmd
D:\mongo.hql\shard1\bin>mongod --shardsvr --replset shard1 -port 4007 -dbpath D:\mongo.hql\shard1\shard2\data -logpath D:\mongo.hql\shard1\shard2\iog\shard2.log
启动分片集群2(shard22和shard23)
shard22
D:\mongo.hql\shard2\bin>mongod --shardsvr --repl5et shard2 -port 4008 -dbpath D:\mongo.hql\shard2\shard22\data -logpath D:\mongo.hql\shard2\shard22\log\shard2.log
shard23
D:\mongo,hql\shard2\bin>mongod --shardsvr --replSet shard2 -port 4009 -dbpath D:\mongo.hql\shard2\shard23\data -lagpath D:\mongo,hql\shard2\shard23\log\shard2.log
步骤三:配置分片(shard)集群
进入到shard1集群任何一个节点中
config={_id:"shard1",members:[{_id:8,host:"localhost:4006" ,priorty:1},{_id:1,host: "localhost :4007",priorty:2}]}
"_id" : "shard1","members" :[
"host" "Localhost:4006"
"priorty":1
"_id"
"host" "localhost:4087",
"priorty" : 2
CSDN@2301_81438789
rs,initiate(config)
进入到shard2集群任何一个节点中
> config1={_id:"shard2" ,members: [{_id:8,host:"localhost:4008",priority:2},{_id:1,host:"localhost:4009",priority:1}]}
"_id" : "shard2","members" :[
"_id":0 "host" :"localhost:4008",
"priority" : 2
"_id" :1.
"host" :"localhost:4009","priority" : 1}
>rs.initiate(config1)
> rs.initiate(config1){ "ok" : 1}
shard2:SECONDARY>
到这里,部署分片集群就配置 好了。