【MongoDB】Re05 分片集群(Win平台搭建)


 

分片副本集1 (3實例)  主1 從1 裁1

分片副本集2 (3實例)  主1 從1 裁1

配置副本集(3實例) 主1 從2

路由(2配置)

 

用Windows平台搭建

 

配置目錄設置:

├─config
│      CFG-ARBITER.cfg
│      CFG-PRIMARY.cfg
│      CFG-REPLICA.cfg
│      ROUTER1.cfg
│      ROUTER2.cfg
│      RS1-ARBITER.cfg
│      RS1-PRIMARY.cfg
│      RS1-REPLICA.cfg
│      RS2-ARBITER.cfg
│      RS2-PRIMARY.cfg
│      RS2-REPLICA.cfg

數據存儲設置:

├─data
│  ├─CFG-RS
│  │  ├─ARBITER
│  │  ├─PRIMARY
│  │  └─REPLICA
│  ├─RS-01
│  │  ├─ARBITER
│  │  ├─PRIMARY
│  │  └─REPLICA
│  └─RS-02
│      ├─ARBITER
│      ├─PRIMARY
│      └─REPLICA

日志目錄設置:

├─log
│  │  cfg-arbiter.log
│  │  cfg-primary.log
│  │  cfg-replica.log
│  │  router1.log
│  │  rs-01-arbiter.log
│  │  rs-01-primary.log
│  │  rs-01-replica.log
│  │  rs-02-arbiter.log
│  │  rs-02-primary.log
│  │  rs-02-replica.log

pid目錄

├─pid
│      cfg-arbiter.pid
│      cfg-primary.pid
│      cfg-replica.pid
│      router1.pid
│      rs-01-arbiter.pid
│      rs-01-primary.pid
│      rs-01-replica.pid
│      rs-02-arbiter.pid
│      rs-02-primary.pid
│      rs-02-replica.pid

MongoDB源

└─source
    │  LICENSE-Community.txt
    │  mongo.cfg
    │  MPL-2
    │  README
    │  THIRD-PARTY-NOTICES
    │  
    ├─bin
    │      Install-Compass.ps1
    │      mongo.exe
    │      mongo.pdb
    │      mongod.exe
    │      mongod.pdb
    │      mongos.2022-02-03T02-19-37.mdmp
    │      mongos.2022-02-03T02-20-29.mdmp
    │      mongos.exe
    │      mongos.pdb
    │      vcredist_x64.exe

 

配置樣本:

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true path: "D:\\MongoDB ShardsCluster\\log\\rs-01-primary.log" # 指定好日志輸出位置(每個實例都區分)

# Where and how to store data.
storage:
  dbPath: "D:\\MongoDB ShardsCluster\\data\\RS-01\\PRIMARY" # 指定好數據存放位置(每個實例都區分)
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# how the process runs
processManagement:
  # fork: true  # fork and run in background
  pidFilePath: "D:\\MongoDB ShardsCluster\\pid\\rs-01-primary.pid" # 進程號存放文件(每個實例都區分)  # location of pidfile
  # timeZoneInfo: /usr/share/zoneinfo

# network interfaces 27017
net:
  port: 27101 # 這里副本集1的 主:270101 從:27102 裁:27103,副本集2的 主:27201 從:27202 裁:27203,配置集 主:27301 從 27302 + 270303
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.


#security:

#operationProfiling:

#replication:
replication:
  #副本集的名稱 副本集1 shards_rs_1 副本集2 shards_rs_2 配置集就寫配置集 shards_config (名稱自定義,建議是見名知義) replSetName: "shards_rs_1"
#sharding:
sharding: 
  #分片角色 副本集1和2都是這個角色,不要改成別的東西, 配置集則改成【configsvr】 clusterRole: "shardsvr"
## Enterprise-Only Options

#auditLog:

#snmp:

路由配置則不一樣:

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true path: "D:\\MongoDB ShardsCluster\\log\\router1.log" # (路由1,2 區分)

# Where and how to store data.
# storage:
  # dbPath: "D:\\MongoDB ShardsCluster\\Router\\Node01\\data"
  # journal:
    #enabled: true
#  engine:
#  wiredTiger:

# how the process runs
processManagement:
  # fork: true  # fork and run in background
  pidFilePath: "D:\\MongoDB ShardsCluster\\pid\\router1.pid" #(路由1,2 區分) # location of pidfile
  # timeZoneInfo: /usr/share/zoneinfo

# network interfaces 27017
net:
  port: 27401 # 路由1 27401 路由2 27402
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.


#security:

#operationProfiling:

#replication:

#sharding:
sharding: #指定配置節點副本集 路由1和路由2都寫一樣的 configDB: shards_config/192.168.124.9:27301,192.168.124.9:27302,192.168.124.9:27303
## Enterprise-Only Options

#auditLog:

#snmp:

 

配置和目錄都建好之后,安裝服務到Windows服務列表中

先把副本集處理好

# 分片副本集和配置副本集的服務安裝
"D:\MongoDB ShardsCluster\source\bin\mongod.exe" --config "D:\MongoDB ShardsCluster\config\RS1-PRIMARY.cfg" --serviceName "MongoDB-RS1-PRIMARY" --serviceDisplayName "MongoDB-RS1-PRIMARY" --install
"D:\MongoDB ShardsCluster\source\bin\mongod.exe" --config "D:\MongoDB ShardsCluster\config\RS1-REPLICA.cfg" --serviceName "MongoDB-RS1-REPLICA" --serviceDisplayName "MongoDB-RS1-REPLICA" --install
"D:\MongoDB ShardsCluster\source\bin\mongod.exe" --config "D:\MongoDB ShardsCluster\config\RS1-ARBITER.cfg" --serviceName "MongoDB-RS1-ARBITER" --serviceDisplayName "MongoDB-RS1-ARBITER" --install

"D:\MongoDB ShardsCluster\source\bin\mongod.exe" --config "D:\MongoDB ShardsCluster\config\RS2-PRIMARY.cfg" --serviceName "MongoDB-RS2-PRIMARY" --serviceDisplayName "MongoDB-RS2-PRIMARY" --install
"D:\MongoDB ShardsCluster\source\bin\mongod.exe" --config "D:\MongoDB ShardsCluster\config\RS2-REPLICA.cfg" --serviceName "MongoDB-RS2-REPLICA" --serviceDisplayName "MongoDB-RS2-REPLICA" --install
"D:\MongoDB ShardsCluster\source\bin\mongod.exe" --config "D:\MongoDB ShardsCluster\config\RS2-ARBITER.cfg" --serviceName "MongoDB-RS2-ARBITER" --serviceDisplayName "MongoDB-RS2-ARBITER" --install

"D:\MongoDB ShardsCluster\source\bin\mongod.exe" --config "D:\MongoDB ShardsCluster\config\CFG-PRIMARY.cfg" --serviceName "MongoDB-CFG-PRIMARY" --serviceDisplayName "MongoDB-CFG-PRIMARY" --install
"D:\MongoDB ShardsCluster\source\bin\mongod.exe" --config "D:\MongoDB ShardsCluster\config\CFG-REPLICA.cfg" --serviceName "MongoDB-CFG-REPLICA" --serviceDisplayName "MongoDB-CFG-REPLICA" --install
"D:\MongoDB ShardsCluster\source\bin\mongod.exe" --config "D:\MongoDB ShardsCluster\config\CFG-ARBITER.cfg" --serviceName "MongoDB-CFG-ARBITER" --serviceDisplayName "MongoDB-CFG-ARBITER" --install

# 啟動配置
NET START "MongoDB-RS1-PRIMARY"
NET START "MongoDB-RS1-REPLICA"
NET START "MongoDB-RS1-ARBITER"

NET START "MongoDB-RS2-PRIMARY"
NET START "MongoDB-RS2-REPLICA"
NET START "MongoDB-RS2-ARBITER"

NET START "MongoDB-CFG-PRIMARY"
NET START "MongoDB-CFG-REPLICA"
NET START "MongoDB-CFG-ARBITER"

如果出現錯誤了,可以及時停止服務並卸載

# 停止服務
NET STOP "MongoDB-RS1-PRIMARY"
NET STOP "MongoDB-RS1-REPLICA"
NET STOP "MongoDB-RS1-ARBITER"

NET STOP "MongoDB-RS2-PRIMARY"
NET STOP "MongoDB-RS2-REPLICA"
NET STOP "MongoDB-RS2-ARBITER"

NET STOP "MongoDB-CFG-PRIMARY"
NET STOP "MongoDB-CFG-REPLICA"
NET STOP "MongoDB-CFG-ARBITER"

# 刪除服務
SC DELETE "MongoDB-RS1-PRIMARY"
SC DELETE "MongoDB-RS1-REPLICA"
SC DELETE "MongoDB-RS1-ARBITER"

SC DELETE "MongoDB-RS2-PRIMARY"
SC DELETE "MongoDB-RS2-REPLICA"
SC DELETE "MongoDB-RS2-ARBITER"

SC DELETE "MongoDB-CFG-PRIMARY"
SC DELETE "MongoDB-CFG-REPLICA"
SC DELETE "MongoDB-CFG-ARBITER"

 

創建客戶端的快捷方式 

# 副本集1 主節點登陸
"D:\MongoDB ShardsCluster\source\bin\mongo.exe" --port=27101

# 副本集2 主節點登陸
"D:\MongoDB ShardsCluster\source\bin\mongo.exe" --port=27201

# 配置集 主節點登陸
"D:\MongoDB ShardsCluster\source\bin\mongo.exe" --port=27301

# 路由1和路由2
"D:\MongoDB ShardsCluster\source\bin\mongo.exe" --port=27401
"D:\MongoDB ShardsCluster\source\bin\mongo.exe" --port=27402

 

登陸主節點進行副本初始化配置

# RS1-PRIMARY 添加副本節點 和仲裁節點
rs.initiate()
rs.conf()
rs.add("192.168.124.9:27102")
rs.addArb("192.168.124.9:27103")

# RS2-PRIMARY 添加副本節點 和仲裁節點
rs.initiate()
rs.add("192.168.124.9:27202")
rs.addArb("192.168.124.9:27203")

# CFG-PRIMARY 配置副本集主節點追加從節點
rs.initiate()
rs.add("192.168.124.9:27302")
rs.add("192.168.124.9:27303")

 

確認副本集都創建無誤后再開始啟動路由:

路由配置,注意路由是用的mongos.exe,副本集是用mongod.exe

"D:\MongoDB ShardsCluster\source\bin\mongos.exe" --config "D:\MongoDB ShardsCluster\config\ROUTER1.cfg" --serviceName "MongoDB-ROUTER1" --serviceDisplayName "MongoDB-ROUTER1" --install
"D:\MongoDB ShardsCluster\source\bin\mongos.exe" --config "D:\MongoDB ShardsCluster\config\ROUTER2.cfg" --serviceName "MongoDB-ROUTER2" --serviceDisplayName "MongoDB-ROUTER2" --install

NET START "MongoDB-ROUTER1"
NET START "MongoDB-ROUTER2"

NET STOP "MongoDB-ROUTER1"
NET STOP "MongoDB-ROUTER2"

SC DELETE "MongoDB-ROUTER1"
SC DELETE "MongoDB-ROUTER2"

 

進入任意路由進行分片添加

(發現直接寫IP地址添加會報錯說節點不屬於副本集,所以改成主機名的了)

sh.addShard("shards_rs_1/DESKTOP-P46A09B:27101,DESKTOP-P46A09B:27102,DESKTOP-P46A09B:27103")
sh.addShard("shards_rs_2/DESKTOP-P46A09B:27201,DESKTOP-P46A09B:27202,DESKTOP-P46A09B:27203")

 


免責聲明!

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



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