部署開始:
創建路徑 D:\Program Files\MongoDB\MySet下
config Data log 文件夾
config文件夾下准備配置文件:
分片1的副本集1
storage:
dbPath: D:/Program Files/MongoDB/MySet/Data/shard11
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: D:/Program Files/MongoDB/MySet/log/shard11.log
net:
port: 13211
bindIp: 192.168.33.52
replication:
oplogSizeMB: 10240
replSetName: shard1
sharding:
clusterRole: shardsvr
分片1的副本集2
storage:
dbPath: D:\Program Files\MongoDB\MySet\Data\shard12
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: D:\Program Files\MongoDB\MySet\log\shard12.log
net:
port: 13212
bindIp: 192.168.33.52
replication:
oplogSizeMB: 10240
replSetName: shard1
sharding:
clusterRole: shardsvr
分片1的副本集3
storage:
dbPath: D:\Program Files\MongoDB\MySet\Data\shard13
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: D:\Program Files\MongoDB\MySet\log\shard13.log
net:
port: 13213
bindIp: 192.168.33.52
replication:
oplogSizeMB: 10240
replSetName: shard1
sharding:
clusterRole: shardsvr
分片2的副本集1
storage:
dbPath: D:\Program Files\MongoDB\MySet\Data\shard21
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: D:\Program Files\MongoDB\MySet\log\shard21.log
net:
port: 13221
bindIp: 192.168.33.52
replication:
oplogSizeMB: 10240
replSetName: shard2
sharding:
clusterRole: shardsvr
分片2的副本集2
storage:
dbPath: D:\Program Files\MongoDB\MySet\Data\shard22
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: D:\Program Files\MongoDB\MySet\log\shard22.log
net:
port: 13222
bindIp: 192.168.33.52
replication:
oplogSizeMB: 10240
replSetName: shard2
sharding:
clusterRole: shardsvr
分片2的副本集3
storage:
dbPath: D:\Program Files\MongoDB\MySet\Data\shard23
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: D:\Program Files\MongoDB\MySet\log\shard23.log
net:
port: 13223
bindIp: 192.168.33.52
replication:
oplogSizeMB: 10240
replSetName: shard2
sharding:
clusterRole: shardsvr
配置節點1
storage:
dbPath: D:\Program Files\MongoDB\MySet\Data\config1
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: D:\Program Files\MongoDB\MySet\log\config1.log
net:
port: 13201
bindIp: 192.168.33.52
replication:
oplogSizeMB: 10240
replSetName: rscfg
sharding:
clusterRole: configsvr
配置節點2
storage:
dbPath: D:\Program Files\MongoDB\MySet\Data\config2
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: D:\Program Files\MongoDB\MySet\log\config2.log
net:
port: 13202
bindIp: 192.168.33.52
replication:
oplogSizeMB: 10240
replSetName: rscfg
sharding:
clusterRole: configsvr
配置節點3
storage:
dbPath: D:\Program Files\MongoDB\MySet\Data\config3
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: D:\Program Files\MongoDB\MySet\log\config3.log
net:
port: 13203
bindIp: 192.168.33.52
replication:
oplogSizeMB: 10240
replSetName: rscfg
sharding:
clusterRole: configsvr
路由節點
systemLog:
destination: file
logAppend: true
path: D:\Program Files\MongoDB\MySet\log\route.log
net:
port: 13200
bindIp: 192.168.33.52
sharding:
configDB: rscfg/192.168.33.52:13201,192.168.33.52:13202,192.168.33.52:13203
配置文件准備完成,打開一個cmd窗口
切換到mongo的bin路徑
cd /d D://
cd D:\Program Files\MongoDB\Server\4.0\bin
找到配置文件地址進行服務的安裝,服務名和服務展示名都需要加上,不然會提示服務名已存在,分片11,12,13,21,22,23,配置1,2,3 這9個節點都是由mongod進程寄宿,路由節點由mongos進程寄宿
mongod -config "D:\Program Files\MongoDB\MySet\config\shard11.cfg" --serviceName "MongoDB_Shard11" --install --serviceDisplayName "MongoDB_Shard11"
mongod -config "D:\Program Files\MongoDB\MySet\config\shard12.cfg" --serviceName "MongoDB_Shard12" --install --serviceDisplayName "MongoDB_Shard12"
mongod -config "D:\Program Files\MongoDB\MySet\config\shard13.cfg" --serviceName "MongoDB_Shard13" --install --serviceDisplayName "MongoDB_Shard13"
mongod -config "D:\Program Files\MongoDB\MySet\config\shard21.cfg" --serviceName "MongoDB_Shard21" --install --serviceDisplayName "MongoDB_Shard21"
mongod -config "D:\Program Files\MongoDB\MySet\config\shard22.cfg" --serviceName "MongoDB_Shard22" --install --serviceDisplayName "MongoDB_Shard22"
mongod -config "D:\Program Files\MongoDB\MySet\config\shard23.cfg" --serviceName "MongoDB_Shard23" --install --serviceDisplayName "MongoDB_Shard23"
mongod -config "D:\Program Files\MongoDB\MySet\config\config1.cfg" --serviceName "MongoDB_Config1" --install --serviceDisplayName "MongoDB_Config1"
mongod -config "D:\Program Files\MongoDB\MySet\config\config2.cfg" --serviceName "MongoDB_Config2" --install --serviceDisplayName "MongoDB_Config2"
mongod -config "D:\Program Files\MongoDB\MySet\config\config3.cfg" --serviceName "MongoDB_Config3" --install --serviceDisplayName "MongoDB_Config3"
mongos -config "D:\Program Files\MongoDB\MySet\config\route.cfg" --serviceName "MongoDB_Route" --install --serviceDisplayName "MongoDB_Route"
所有節點都安裝完成后,找到log文件夾下的log文件,如果出現提示,當前可以使用命令行“XXXXX”啟動服務,那就成功安裝服務了
開啟服務,shard1分片的副本集群
net start MongoDB_Shard11
net start MongoDB_Shard12
net start MongoDB_Shard13
開起之后需要進行初始化以及副本集設置
cd /d D://
cd D:\Program Files\MongoDB\Server\4.0\bin
連接到副本集的任意一個節點
mongo 192.168.33.52:13211
初始化副本集
rs.initiate( {_id : "shard1",members: [{ _id: 0, host: "192.168.33.52:13211" },{ _id: 1, host: "192.168.33.52:13212" },{ _id: 2, host: "192.168.33.52:13213" }]})
查看副本集初始化狀態
rs.conf()
查看副本集是否是主節點
db.isMaster()
退出當前查詢窗口
exit
shard2副本集相關設置,同上
net start MongoDB_Shard21
net start MongoDB_Shard22
net start MongoDB_Shard23
cd /d D://
cd D:\Program Files\MongoDB\Server\4.0\bin
mongo 192.168.33.52:13221
rs.initiate( {_id : "shard2",members: [{ _id: 0, host: "192.168.33.52:13221" },{ _id: 1, host: "192.168.33.52:13222" },{ _id: 2, host: "192.168.33.52:13223" }]})
rs.conf()
db.isMaster()
//需要讀寫分離寫下面這個(同時代碼中設置好ReadPreference.Secondary)
//db.getMongo().setSlaveOk()
exit
配置節點副本集相關設置(新版本的配置節點不能使用mirro模式,需要也形成副本集才能由路由節點調用),同上
net start MongoDB_Config1
net start MongoDB_Config2
net start MongoDB_Config3
cd /d D://
cd D:\Program Files\MongoDB\Server\4.0\bin
mongo 192.168.33.52:13201
rs.initiate( {_id : "rscfg",members: [{ _id: 0, host: "192.168.33.52:13201" },{ _id: 1, host: "192.168.33.52:13202" },{ _id: 2, host: "192.168.33.52:13203" }]})
rs.conf()
db.isMaster()
//需要讀寫分離寫下面這個(同時代碼中設置好ReadPreference.Secondary)
//db.getMongo().setSlaveOk()
exit
開啟路由節點的服務
net start MongoDB_Route
cd /d D://
cd D:\Program Files\MongoDB\Server\4.0\bin
連接路由節點
mongo 192.168.33.52:13200
配置分片shard1,shard2
use admin
db.runCommand({addshard:"shard1/192.168.33.52:13211,192.168.33.52:13212,192.168.33.52:13213"})
db.runCommand({addshard:"shard2/192.168.33.52:13221,192.168.33.52:13222,192.168.33.52:13223"})
查看一下分片列表,確認分片是否配置成功
db.runCommand({ listshards:1 })
對Monitor庫啟用分片
db.runCommand({enablesharding:"Monitor"})
對多張表設置片鍵,片鍵設置模式為 第一個字段為大粒度的局部字段比如類型、月份,第二個字段為常查詢字段,粒度細,能夠增加隨機度
這里設置的前提為未創建表,設置片鍵后會自動創建索引,已有表,字段又無索引的會提示錯誤
db.runCommand( { shardcollection : "Monitor.LoadTable",key : {server_type: 1,time:1}} )
db.runCommand( { shardcollection : "Monitor.LogInfo",key : {server_type: 1,time:1}} )
db.runCommand( { shardcollection : "Monitor.LogError",key : {server_type: 1,time:1}} )
db.runCommand( { shardcollection : "Monitor.RequestLog",key : {server_type: 1,time:1}} )
到此為止配置完成,可連接路由節點使用,未測試failover是否生效
刪除服務的語句,預留以防需要重新部署
sc delete MongoDB_Shard11
sc delete MongoDB_Shard12
sc delete MongoDB_Shard13
sc delete MongoDB_Shard21
sc delete MongoDB_Shard22
sc delete MongoDB_Shard23
sc delete MongoDB_Config1
sc delete MongoDB_Config2
sc delete MongoDB_Config3
sc delete MongoDB_Route
停止服務的語句,預留以防需要重新部署
net stop MongoDB_Shard11
net stop MongoDB_Shard12
net stop MongoDB_Shard13
net stop MongoDB_Shard21
net stop MongoDB_Shard22
net stop MongoDB_Shard23
net stop MongoDB_Config1
net stop MongoDB_Config2
net stop MongoDB_Config3
net stop MongoDB_Route