mongodb分片實戰

2021-09-21 05:19:35 字數 1874 閱讀 9654

分片技術其實就是乙個分布式的過程,但是mongodb的負載和其他的負載有所不同,在整個mongodb分布式的集群中一共有如下角色:

mongos:mongos就是乙個路由伺服器,它會根據管理員設定的「片鍵」將資料分攤到自己管理的mongod集群,負責和客戶端直接互動

config:資料和片的對應關係以及相應的配置資訊儲存在"config伺服器"上

mongodb:負責存放資料的地方,如果不做分片的話,我們會直接連線mongodb

資訊大概如下圖所示:

埠介紹:

mongodb1 27017

mongodb2 27018

config   27027

mongos   40000

步驟一建立mongodb1和mongodb2的db目錄和log目錄,並啟動mongodb1和mongodb2

mkdir -p /opt/mongodb/data/s1

mkdir -p /opt/mongodb/data/s2

mkdir -p /opt/mongodb/log/

./mongod --port 27017 --dbpath /opt/mongodb/data/s1 --fork --logpath /opt/mongodb/log/s1.log

./mongod --port 27018 --dbpath /opt/mongodb/data/s2 --fork --logpath /opt/mongodb/log/s2.log

步驟二建立config server的db目錄,啟動config server

mkdir -p /opt/mongodb/data/config

./mongod --port 27027 --dbpath /opt/mongodb/data/config --fork --logpath /opt/mongodb/log/config.log

步驟三啟動mongos server

./mongos --port 40000 --configdb localhost:27027 --fork --logpath /opt/mongodb/log/mongos.log

步驟四服務配置

連線mongos伺服器,然後將27017,27018的mongod交給mongos,新增分片也就是addshard()

mongos> db.runcommand()

mongos> db.runcommand()

片已經集群了,但是mongos不知道該如何切分資料,在mongodb中設定片鍵來解決此問題

mongos> db.runcommand()  對xiaoxin庫進行分片

設定鍵為weisong庫裡面的user表裡面的name欄位

mongos> db.runcommand(}) 

步驟五驗證

往資料裡面插入1w條資料

mongos> for(var i=0;i<10000;i++))

...}

檢視插入結果

在返回資訊中我們要注意下面四個地方

① shards 我們能清楚的看到集群分了2個片分別為27017和27018

② databases 我們能清楚的看到我們對weisong庫進行了分片

③ 我們看到了兩個分片的比例為2:1

④ 我們會發現在name值被劃分了3個區域

無窮小-->name0、name0-->name999、name999-->無窮大

搭建mongodb分片

這是一種將海量的資料水平擴充套件的資料庫集群系統,資料分表儲存在sharding的各個節點上,使用者通過簡單的配置就可以很方便地構建乙個分布式mongodb集群。mongodb 的資料分塊稱為 chunk。每個 chunk 都是 collection中一段連續的資料記錄,通常最大尺寸是 200mb,...

MongoDB分片技術

在mongodb裡面存在另一種集群,就是分片技術,跟sql server的表分割槽類似,我們知道當資料量達到t級別的時候,我們的磁碟,記憶體 就吃不消了,針對這樣的場景我們該如何應對。一 分片 mongodb採用將集合進行拆分,然後將拆分的資料均攤到幾個片上的一種解決方案。下面我對這張 釋一下 人臉...

mongodb分片技術

在mongodb裡面存在另一種集群,就是分片技術,跟sql server的表分割槽類似,我們知道當資料量達到t級別的時候,我們的磁碟,記憶體 就吃不消了,針對這樣的場景我們該如何應對。一 分片 mongodb採用將集合進行拆分,然後將拆分的資料均攤到幾個片上的一種解決方案。下面我對這張 釋一下 人臉...