MongoDB4.0 WINDOWS環境下 副本集、分片部署


部署開始:

創建路徑 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM