sharding經過將數據集分佈於多個也稱做分片(shard)的節點上來下降單節點的訪問壓力。每一個分片都是一個獨立的數據庫,全部的分片組合起來構成一個邏輯上的完整意義的數據庫。所以,分片機制下降了每一個分片的數據操做量及須要存儲的數據量。java
A。shards:分片,即數據結點,存儲數據和執行計算。爲了保證高可用和數據一致性,生產環境中shards應該作成replicasets(防止丟失數據)。集羣中有一個primary shards,執行非分片的任務。
B。mongos(query routers):查詢路由,負責client的鏈接,並把任務分給shards,而後收集結果。一個集羣中能夠有多個query routers(replica sets),以分擔客戶端請求(負載均衡)。
C。config server:配置服務器。保存了集羣的元數據(好比數據放在哪一個shards上),query router經過config server中的配置信 息決定把任務分配到哪一個shards上。從3.2開始,config servers能夠作成replica sets
mongodb的shard功能實現於collection級別,但若要在collection上啓動shard,還須要事先其相關的數據庫上啓用之。在數據庫上啓用shard功能後,MongoDB會爲其指定一個主shard。mongodb
1.cd /usr/java數據庫
2.mkdir mongodbShares,新建 mongodbShares 文件夾vim
3.在mongodbShares中新建 configsvr mongos shards文件夾,用於部署配置服務器、mongos服務器和shards。服務器
4.進入到shards,新建 shard1 shard2 shard3文件夾app
5.在configsvr中新建 config1負載均衡
6.在config1中新建 data logspa
7.cd data,而後 mkdir dbcode
8.在config1中新建config.conf文件,即touch config.confrouter
9.vim config.conf,添加以下內容:
dbpath=/usr/java/mongodbShares/configsvr/config1/data/db
logpath=/usr/java/mongodbShares/configsvr/config1/log/config.log
logappend=true
fork=true
bind_ip=192.168.80.128
port=27001
configsvr=true
10.cd ../configsvr/
11.拷貝config1,cp -r config1 config2,cp -r config1 config3
12.修改config2 和 config3 中config.conf中的 dbpath 、 port (2800二、28003)和 logpath。
13.分別啓動 三個config:mongod --config config.conf
14.