目录
前言
一、分片概念
二、搭建集群的步骤
总结
前言
MongoDB分片(Sharding)是一种水平扩展数据库的方法,它允许将数据分散存储在多个服务器上,从而提高数据库的存储容量和处理能力。分片是MongoDB为了应对大数据量和高吞吐量需求而设计的一种分布式架构。
一、分片概念
1.分片键(Shard Key):MongoDB使用分片键来决定数据如何分布在不同的分片上。分片键可以是文档中的一个字段或字段组合,MongoDB会根据分片键的值将数据均匀地分配到各个分片中。
2.分片(Shard):分片是MongoDB集群中的一个组成部分,它是一个独立的MongoDB实例,负责存储一部分数据。每个分片可以包含多个数据块(Chunks),这些数据块是根据分片键的值范围来划分的。
3.配置服务器(Config Servers):配置服务器存储着集群的元数据信息,包括分片的配置信息、数据库和集合的元数据等。配置服务器是集群的控制中心,所有分片和客户端都需要与配置服务器通信来获取必要的信息。
4.查询路由器(Query Routers):查询路由器(也称为mongos)是客户端与MongoDB集群交互的接口。客户端通过查询路由器发送请求,查询路由器会根据分片键将请求路由到相应的分片上,并将结果汇总返回给客户端。
二、搭建集群的步骤
1.配置config副本集
1.1准备数据存放路径
在mongodb下文件创建shard文件
在shard下创建以下文件
分别在rs0和rs1创建以下文件
2.启动分片服务
配置Shard1分片复制集rs0
打开三个cmd窗口分别输入以下命令:
mongod --dbpath D:\mongodb\shard\rs0\db1 --replSet rs0 --port 1000 --shardsvr
mongod --dbpath D:\mongodb\shard\rs0\db2 --replSet rs0 --port 1001 --shardsvr
mongod --dbpath D:\mongodb\shard\rs0\db3 --replSet rs0 --port 1002 --shardsvr
接着新打开一个cmd窗口输入:
//连接任意节点,配置
mongo --port 1000
conf={
"_id":"rs0",
"members":[
{"_id":0,"host":"localhost:1000"},
{"_id":1,"host":"localhost:1001"},
{"_id":2,"host":"localhost:1002"}
]
}
rs.initiate(conf)
进行上面相同的操作配置Shard2分片复制集rs1
四个cmd窗口:
mongod --dbpath D:\mongodb\shard\rs1\db1 --replSet rs1 --port 2000 --shardsvr
mongod --dbpath D:\mongodb\shard\rs1\db2 --replSet rs1 --port 2001 --shardsvr
mongod --dbpath D:\mongodb\shard\rs1\db3 --replSet rs1 --port 2002 --shardsvr
mongo --port 2000
conf={
"_id":"rs1",
"members":[
{"_id":0,"host":"localhost:2000"},
{"_id":1,"host":"localhost:2001"},
{"_id":2,"host":"localhost:2002"}
]
}
rs.initiate(conf)
3.配置Config Server
四个cmd窗口:
mongod --dbpath D:\mongodb\shard\config\config0 --replSet config --port 3000 --configsvr
mongod --dbpath D:\mongodb\shard\config\config1 --replSet config --port 3001 --configsvr
mongo --port 3000
conf={
"_id":"config",
"members":[
{"_id":0,"host":"localhost:3000"},
{"_id":1,"host":"localhost:3001"}
]
}
rs.initiate(conf)
4.启动mongos路由进程
mongos --configdb config/localhost:3000,localhost:3001 --port 4000
5.连接mongos进程,进行配置(mongos)
mongo --port 4000
查看分片信息
use admin
db.runCommand({"listshards":1})
6.addShard添加分片(mongos)
use admin
db.runCommand({
"addShard":"rs0/localhost:1000,localhost:1001,localhost:1002",
"name":"shard1"
})
db.runCommand({
"addShard":"rs1/localhost:2000,localhost:2001,localhost:2002",
"name":"shard2"
})
db.runCommand({"listshards":1})
7 .为数据库启用分片(mongos)
use admin
db.runCommand({"enablesharding":"test"})
8.为数据库启用分片(mongos)
use admin
db.runCommand({"enablesharding":"test"})
9.对集合进行分片
use admin
db.runCommand({"shardcollection":"test.students","key":{"_id":1}})
10. 设置chunk大小(mongos)
use admin
sh.startBalancer()
use config
db.settings.save({_id:"chunksize",value:1})
db.settings.find()
这样分片集群就搭建好了。
11.在java中使用mongodb分片集群
端口号为4000!!!
搭建集群的作用
1.提高性能:通过将数据分散到多个服务器上,可以并行处理更多的查询和写操作,从而提高数据库的性能。
2.扩展存储容量:随着数据量的增加,单个服务器的存储容量可能不足以满足需求。通过分片,可以将数据分散存储在多个服务器上,从而扩展存储容量。
3.提高可用性:分片集群通过数据的副本集(Replica Sets)来实现高可用性。即使某个分片发生故障,其他分片仍然可以提供服务,保证了系统的稳定运行。
总结
以上就是mongodb的集群搭建操作,如有错误,在评论区和我讨论哦,谢谢观看!