其实我是照着大佬的方法配置的,之所以要自己写一篇博客是为了加深记忆,增强理解力。话不多说,开始。
我这里用的方法配置,就只需要下载一次mongodb,配置一次环境变量即可。还有种方式是直接弄多个mongodb运行在不同机器上。我这里选择这种方式实际上是偷懒了。不过无论哪种方式,架构都是一样的。先模仿别人,等自己彻底搞明白了再去按照自己的方式配置。

准备文件夹

我们这里弄两个分片,分别是shard1和shard2。

首先在D盘中创建一个文件夹,我这里是D:\shards

mongodb compass连接集群 mongodb 集群配置_mongodb


同时按照我的方式创建下面几个文件夹。

之后我们分别进入这几个文件夹,创建子文件夹。注意,config我没有用到,可以不用创建。

configServer:

mongodb compass连接集群 mongodb 集群配置_配置文件_02


config里面分别创建config-server1.config文件和config-server2.config文件。

mongodb compass连接集群 mongodb 集群配置_mongodb_03


之后进入data文件夹,创建一个db文件夹,再在db文件夹下面创建两个文件夹分别是server1和server2。

mongodb compass连接集群 mongodb 集群配置_mongodb compass连接集群_04


这两个文件夹是存放数据的文件夹。创建好后,configServer文件夹的准备工作我们就做好了。

接下来是routersvr文件夹:

mongodb compass连接集群 mongodb 集群配置_mongodb_05


config文件夹下面创建配置文件:

mongodb compass连接集群 mongodb 集群配置_数据库_06


这样routersvr文件夹的准备工作也做好了

接下来看shard1文件夹:

mongodb compass连接集群 mongodb 集群配置_数据库_07


在data文件夹下新建db文件夹,db文件夹下新建rs1和rs2文件夹:

mongodb compass连接集群 mongodb 集群配置_mongodb_08


在config文件夹下新建rs1和rs2文件夹:

mongodb compass连接集群 mongodb 集群配置_windows_09


接下来打开shard2文件夹,和shard1基本一样

mongodb compass连接集群 mongodb 集群配置_数据库_10


config下面:

mongodb compass连接集群 mongodb 集群配置_mongodb compass连接集群_11


data\db:

mongodb compass连接集群 mongodb 集群配置_配置文件_12


至此,我们文件的准备基本结束。

现在开始配置

shard配置

shard2

打开rs1.conf,输入以下内容:

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

rs2.conf:

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

shard1

同理:
rs1:

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

rs2:

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

打开router.config,并且输入以下内容:

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

打开config-server1.config并输入:

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

config-server2.config

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

至此,所有的配置我们也基本弄完了,剩下就是一些cmd操作了。

打开cmd(不是shell),直接输入:

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

这个命令的意思是打开shard1的rs1节点

mongodb compass连接集群 mongodb 集群配置_mongodb compass连接集群_13


回车后并不会显示什么东西。但是记住,这个窗口千万别关,关了,就又要重新启动一次。

我们可以打开一个新的cmd窗口,验证该节点是否启动成功

输入mongo -port 10001

mongodb compass连接集群 mongodb 集群配置_配置文件_14


可以看到启动成功。

同理重复操作,启动rs2节点:

mongodb compass连接集群 mongodb 集群配置_数据库_15


之后我们设置节点:

再打开一个cmd,分别按顺序输入以下命令:

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

结果:

mongodb compass连接集群 mongodb 集群配置_windows_16


我们继续配置shard2

和shard1同理,操作一模一样,我就只放结果了:

mongodb compass连接集群 mongodb 集群配置_mongodb compass连接集群_17


mongodb compass连接集群 mongodb 集群配置_mongodb_18


mongodb compass连接集群 mongodb 集群配置_mongodb_19


到这里,两个分片就结束了,千万记得,启动节点的窗口别关闭了。

configServer

接下来是configServer:
打开一个新的cmd窗口,输入:

mongod -configsvr -config D:\shards\configServer\config\config-server1.config

mongodb compass连接集群 mongodb 集群配置_数据库_20


再打开一个新的cmd窗口:

mongod -configsvr -config D:\shards\configServer\config\config-server2.config

mongodb compass连接集群 mongodb 集群配置_mongodb_21


这两个窗口也别关。

继续再打开一个窗口,依次输入以下三个命令:

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

mongodb compass连接集群 mongodb 集群配置_配置文件_22


这里,configServer也完成了,我们继续下一个router。

router

打开一个新的窗口输入:

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

mongodb compass连接集群 mongodb 集群配置_数据库_23


这个窗口千万别关

接下来打开新cmd窗口,分别按顺序输入以下指令:

mongo -port 40001
use admin
db.runCommand({addshard:"shard1/localhost:10001,localhost:10002",allowLocal:true}) //添加分片1
db.runCommand({addshard:"shard2/localhost:20001,localhost:20002",allowLocal:true}) //添加分片2

此时我们可以看分片是否添加成功:

use config
db.shards.find()

mongodb compass连接集群 mongodb 集群配置_mongodb compass连接集群_24


已经添加成功了。

继续:

use admin
db.runCommand({"enablesharding":"test"}) //设置数据库分片存储
db.runCommand({"shardcollection":"test.users","key":{"_id":"hashed"}}) //设置集合片键,根据id进行分片

至此就已经全部配置好了。

测试

我们直接开始测试。打开一个新的cmd窗口。输入:

mongo  -port 40001

开始进行插入操作:

use test
db.users.insert({name:"a1"})

然后连续插入几个数据,看他们分别存在哪个shard内。

mongodb compass连接集群 mongodb 集群配置_mongodb_25


我总共插入了8条数据,shard1里面有4条

mongodb compass连接集群 mongodb 集群配置_windows_26


shard2里面有4条

说明我们分片集群成功了。