Windows下搭建mongodb分片集群

Windows下搭建mongodb分片集群

mongodb版本为3.6.21

mongodb分片

分片是分布式存储的体现,数据存储于不同的复制集,
可以处理更加庞大的数据。

每个分片就是一个复制集,每个分片之间的数据不同,
数据分布于各个分片之间。

分片主要包含有三个组件

shard:实际存储数据的模块;

config-server:存储分片的集群信息;

router-server:前段路由,提供外部访问入口。

它们的关系如下图:
Windows下搭建mongodb分片集群_第1张图片

实例

分片1

创建目录和文件

配置文件

D:\mongoShards\shard1\config\rs1.conf

dbpath=D:\mongoShards\shard1\data\db\rs1
logpath=D:\mongoShards\shard1\log\rs1.log
journal=true
port=10001
replSet=shard1

D:\mongoShards\shard1\config\rs2.conf

dbpath=D:\mongoShards\shard1\data\db\rs2
logpath=D:\mongoShards\shard1\log\rs2.log
journal=true
port=10002
replSet=shard1

数据目录

D:\mongoShards\shard1\data\db\rs1

D:\mongoShards\shard1\data\db\rs2

日志目录

D:\mongoShards\shard1\log

启动节点

节点1

mongod --shardsvr --config D:\mongoShards\shard1\config\rs1.conf

Windows下搭建mongodb分片集群_第2张图片
节点2

mongod --shardsvr --config D:\mongoShards\shard1\config\rs2.conf

Windows下搭建mongodb分片集群_第3张图片

设置

mongo --port 10001
rs.initiate()
rs.add("localhost:10002")

Windows下搭建mongodb分片集群_第4张图片

分片2

创建目录和文件

配置文件

D:\mongoShards\shard2\config\rs1.conf

dbpath=D:\mongoShards\shard2\data\db\rs1
logpath=D:\mongoShards\shard2\log\rs1.log
journal=true
port=20001
replSet=shard2

D:\mongoShards\shard2\config\rs2.conf

dbpath=D:\mongoShards\shard2\data\db\rs2
logpath=D:\mongoShards\shard2\log\rs2.log
journal=true
port=20002
replSet=shard2

数据目录

D:\mongoShards\shard2\data\db\rs1

D:\mongoShards\shard2\data\db\rs2

日志目录

D:\mongoShards\shard2\log

启动节点

节点1

mongod --shardsvr --config D:\mongoShards\shard2\config\rs1.conf

节点2

mongod --shardsvr --config D:\mongoShards\shard2\config\rs2.conf

设置

mongo --port 20001
rs.initiate()
rs.add("localhost:20002")

Windows下搭建mongodb分片集群_第5张图片

configsvr(config-server)

创建目录和文件

配置文件

D:\mongoShards\configsvr\config\config-server1.config

dbpath=D:\mongoShards\configsvr\data\db\server1
logpath=D:\mongoShards\configsvr\log\server1.log
journal=true
port=30001
replSet=config-server

D:\mongoShards\configsvr\config\config-server2.config

dbpath=D:\mongoShards\configsvr\data\db\server2
logpath=D:\mongoShards\configsvr\log\server2.log
journal=true
port=30002
replSet=config-server

数据目录

D:\mongoShards\configsvr\data\db\server1

D:\mongoShards\configsvr\data\db\server2

日志目录

D:\mongoShards\configsvr\log

启动节点

(注意mongod后添加了"–configsvr",标识为配置服务。)

mongod --configsvr --config D:\mongoShards\configsvr\config\config-server1.config
mongod --configsvr --config D:\mongoShards\configsvr\config\config-server2.config

设置

mongo --port 30001
rs.initiate()
rs.add("localhost:30002")

Windows下搭建mongodb分片集群_第6张图片

routersvr(router-server)

创建目录和文件

配置文件

D:\mongoShards\routersvr\config\router-server.config

port=40001
logpath=D:\mongoShards\routersvr\log\server.log

日志目录

D:\mongoShards\routersvr\log

启动(mongos)

(这里的命令为mongos,config-server是上边配置服务复制集的名字。)

mongos --configdb "config-server/localhost:30001,localhost:30002" --config D:\mongoShards\routersvr\config\router-server.config

配置分片

访问router-server

mongo --port 40001

(要在admin库配置)

use admin

添加分片

添加分片1

db.runCommand({addshard:"shard1/localhost:10001,localhost:10002",allowLocal:true})

Windows下搭建mongodb分片集群_第7张图片
添加分片2

db.runCommand({addshard:"shard2/localhost:20001,localhost:20002",allowLocal:true})

Windows下搭建mongodb分片集群_第8张图片

查看分片

(切换到config库)

use config
db.shards.find()

Windows下搭建mongodb分片集群_第9张图片

设置分片

设置数据库分片存储

(切换到admin数据库)

use admin
db.runCommand({"enablesharding":"test"})

Windows下搭建mongodb分片集群_第10张图片

设置集合片键

(根据"_id"的hash进行分片存储)

db.runCommand({"shardcollection":"test.users","key":{"_id":"hashed"}})

Windows下搭建mongodb分片集群_第11张图片

测试分片

插入数据

use test

(users是上边设置集合片键中的"test.users")

db.users.insert({"name": "abc"})

上边insert执行三次,插入三条数据。

db.users.find({})

Windows下搭建mongodb分片集群_第12张图片

查看数据分布情况

db.users.stats()

分片shard1中两条数据
Windows下搭建mongodb分片集群_第13张图片
分片shard2中一条数据
Windows下搭建mongodb分片集群_第14张图片
参考资料:

菜鸟教程:MongoDB 分片
bfdnmy:windows下mongodb分片设置与集群搭建
小透明的一天:windows下mongodb集群搭建

你可能感兴趣的