標籤:mongodb 分區
分區技術其實就是一個分布式的過程,但是mongodb的負載和其他的負載有所不同,在整個mongodb分布式的叢集中一共有如下角色:
mongos:mongos就是一個路由伺服器,它會根據管理員設定的“片鍵”將資料分攤到自己管理的mongod叢集,負責和用戶端直接互動
config:資料和片的對應關係以及相應的配置資訊儲存在"config伺服器"上
mongodb:負責存放資料的地方,如果不做分區的話,我們會直接連接mongodb
資訊大概如所示:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/92/wKiom1Ph9B3gh67UAAEow0c6rGw678.jpg" title="QQ20140806171424.jpg" alt="wKiom1Ph9B3gh67UAAEow0c6rGw678.jpg" />
連接埠介紹:
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({"addshard":"127.0.0.1:27017",allowLocal:true})
mongos> db.runCommand({"addshard":"127.0.0.1:27018",allowLocal:true})
片已經叢集了,但是mongos不知道該如何切分資料,在mongodb中設定片鍵來解決此問題
mongos> db.runCommand({"enablesharding":"weisong"}) 對xiaoxin庫進行分區
設定鍵為weisong庫裡面的user表裡面的name欄位
mongos> db.runCommand({"shardcollection":"weisong.user","key":{"name":1}})
步驟五
驗證
往資料裡面插入1W條資料
mongos> for(var i=0;i<10000;i++){
...db.user.insert({"name":"jack"+i,"age":i})
...}
查看插入結果
mongos> db.printShardingStatus()
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/96/wKioL1Ph_MKgXnQ7AALZoiUbUkw074.jpg" title="QQ20140806171424.jpg" alt="wKioL1Ph_MKgXnQ7AALZoiUbUkw074.jpg" />
在返回資訊中我們要注意下面四個地方
① shards 我們能清楚的看到叢集分了2個片分別為27017和27018
② databases 我們能清楚的看到我們對weisong庫進行了分區
③ 我們看到了兩個分區的比例為2:1
④ 我們會發現在name值被劃分了3個地區
無窮小-->name0、name0-->name999、name999-->無窮大
參考文獻
http://gong1208.iteye.com/blog/1622078
http://www.cnblogs.com/huangxincheng/archive/2012/03/07/2383284.html
本文出自 “精忠報國” 部落格,請務必保留此出處http://xinsir.blog.51cto.com/5038915/1536529