mongoDB在windows單機環境下配置分片及複製集

1.什麼是分片:相似服務器中代理模式;python

2.什麼是複製集:

經過不一樣的機器保存副本用於保證數據的不會由於單點損失而丟失,
主要用於應對數據丟失,機器損壞帶來的風險;同時能夠提升讀取能力,用戶的讀取服務器和寫入服務器在不一樣的地方,並且不一樣服務器爲不一樣的用戶提供服務,提升整個系統的負載。
3.分片的結構 數據庫

4.什麼是chunk:數據在shard中存儲的單位
主要有兩個用途:服務器

splitting:當chunk大小超過配置的chunk size,mongoDB的後臺進程會把它切割成更小的chunk; 可是這個操做十分消耗IO資源spa

balancing:主要負責chunk的遷移,從而均衡各個shard server的負載;3d

5.部署複製集及分片:
(1)安裝MongoDB:目錄D:\Program Files\MongoDB\Server\4.0\bin
(2)建立數據目錄:
data

log代理

(3)cmd進入bin目錄下,建立實例,分別運行:

mongod --port 3000 --shardsvr --replSet rs-a --dbpath "E:\SQL\MongoDB\shard\data\rs-a-0" --logpath "E:\SQL\MongoDB\shard\log\rs-a-0.log"  

mongod --port 3001 --shardsvr --replSet rs-a --dbpath "E:\SQL\MongoDB\shard\data\rs-a-1" --logpath "E:\SQL\MongoDB\shard\log\rs-a-1.log"  

mongod --port 3002 --shardsvr --replSet rs-a --dbpath "E:\SQL\MongoDB\shard\data\rs-a-2" --logpath "E:\SQL\MongoDB\shard\log\rs-a-2.log"
複製代碼

這裏 --shardsvr要求使用分片,--replSet要是使用複製集,複製集名稱爲 rs-a,這是咱們便建立了包含三個複製集的一個分片,注意複製集名字要一致,同時 --logpath的參數要求是一個文件而不是目錄 上面只是建立了三個能夠分片和使用複製集的服務器,咱們須要對其初始化設置複製集中的primary和secondary;
(4)登陸mongos: mongo --port 3000

mongo --port 3000
rs.initiate()
rs.isMaster()
rs.status()
添加其餘爲slave
rs.add("localhost:3001")
rs.add("localhost:3002")
帶有分片的複製集便創建完成,使用rs.status()查看信息 
複製代碼

(5)配置config server複製集(MongoDB版本3.4以上必須爲複製集,即mongos 要求config server是複製集而且在前面加上覆制集的名稱,此處配置包含2個實例的複製集)同建立複製集rs-conf:日誌

mongod --port 27019 --configsvr --replSet rs-conf --dbpath "E:\SQL\MongoDB\shard\data\config0" --logpath "E:\SQL\MongoDB\shard\log\config0.log"

mongod --port 27020 --configsvr --replSet rs-conf --dbpath "E:\SQL\MongoDB\shard\data\config1" --logpath "E:\SQL\MongoDB\shard\log\config1.log"
複製代碼
mongo --port 27019
rs.initiate()
rs.isMaster()
rs.status()
添加其餘爲slave
rs.add("localhost:27020")
使用rs.status()查看信息 
複製代碼

(6)配置router server

mongos --configdb rs-conf/localhost:27019,localhost:27020 --logpath "E:\SQL\MongoDB\shard\log\mongos.log" --port 27010
複製代碼

(7)登陸mongos:

mongo --port 27010

mongos> sh.addShard("rs-a/localhost:3000,localhost:3001,localhost:3002")
mongos> sh.status()
爲數據庫添加sharding abled
mongos> sh.enableSharding("testSharding") 
複製代碼


問題:在啓動mongos路由服務的時候,碰到一開就自動關閉,而後打印日誌:code

發現是碰到端口占用,換了端口就能夠了。 搞了一下午,原本覺得很簡單的事,沒想着中間碰到各種問題,有一個比較重要的就是MongoDB3.4版本以後的配置分片和3.2版本的命令都不同,主要就是須要基於複製集建立sharding
相關文章
相關標籤/搜索