<b>一:分片</b>
mongodb采用将集合進行拆分,然後将拆分的資料均攤到幾個片上的一種解決方案。
下面我對這張圖解釋一下:
人臉:代表用戶端,用戶端肯定說,你資料庫分片不分片跟我沒關系,我叫你幹啥就幹啥,沒什麼好商量的。
mongod:一個普通的資料庫執行個體,如果不分片的話,我們會直接連上mongod。
<b> 二: 實戰</b>
首先我們準備4個mongodb程式,我這裡是均攤在C,D,E,F盤上,當然你也可以做多個檔案夾的形式。
<b> 1:開啟config伺服器</b>
先前也說了,mongos要把mongod之間的配置放到config伺服器裡面,理所當然首先開啟它,我這裡就建立2222端口。
<b> 2: 開啟mongos伺服器</b>
這裡要注意的是我們開啟的是mongos,不是mongod,同時指定下config伺服器,這裡我就開啟D盤上的mongodb,端口3333。
<b> 3:啟動mongod伺服器</b>
對分片來說,也就是要添加片了,這裡開啟E,F盤的mongodb,端口為:4444,5555。
<b>4: 服務配置</b>
哈哈,是不是很興奮,還差最後一點配置我們就可以大功告成。
<1> 先前圖中也可以看到,我們client直接跟mongos打交道,也就說明我們要連接配接mongos伺服器,然後将4444,5555的mongod交給mongos,添加分片也就是addshard()。
這裡要注意的是,在addshard中,我們也可以添加副本集,這樣能達到更高的穩定性。
<2>片已經叢集了,但是mongos不知道該如何切分資料,也就是我們先前所說的片鍵,在mongodb中設定片鍵要做兩步
①:開啟資料庫分片功能,指令很簡單 enablesharding(),這裡我就開啟test資料庫。
②:指定集合中分片的片鍵,這裡我就指定為person.name字段。
<b>5: 檢視效果</b>
好了,至此我們的分片操作全部結束,接下來我們通過mongos向mongodb插入10w記錄,然後通過printShardingStatus指令檢視mongodb的資料分片情況。
這裡主要看三點資訊:
① shards: 我們清楚的看到已經别分為兩個片了,shard0000和shard0001。
② databases: 這裡有個partitioned字段表示是否分區,這裡清楚的看到test已經分區。
③ chunks: 這個很有意思,我們發現集合被砍成四段:
無窮小 —— jack0,jack0 ——jack234813,jack234813——jack9999,jack9999——無窮大。
分區情況為:3:1,從後面的 on shardXXXX也能看得出。
本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/818582,如需轉載請自行聯系原作者