mongo分片的配置

# 連接
mongo 172.16.206.34:27000

use admin

# config變量
config = {_id:"shard1",members:[{_id:0,host:"172.16.206.34:27000"},{_id:1,host:"172.16.206.36:27000"},{_id:2,host:"172.16.206.47:27000",arbiterOnly:true}]} 

# 初始化副本集
rs.initiate(config)

# 查看分區狀態
rs.status()
------------------------------------------------------------------


# 連接
mongo 172.16.206.34:25000

use admin

# config變量
config = {_id:"shard2",members:[{_id:0,host:"172.16.206.34:25000"},{_id:1,host:"172.16.206.36:25000",arbiterOnly:true},{_id:2,host:"172.16.206.47:25000"}]} 

# 初始化副本集
rs.initiate(config)

# 查看分區狀態
rs.status()

----------------------------------------------------------------------------------------

# 連接
mongo 172.16.206.34:35000
use admin

# config變量
config = {_id:"shard3",members:[{_id:0,host:"172.16.206.34:35000"},{_id:1,host:"172.16.206.36:35000",arbiterOnly:true},{_id:2,host:"172.16.206.47:35000"}]} 

----------------------------------------------------------------
# 初始化副本集
rs.initiate(config)

# 查看分區狀態
rs.status()

#config server 服務

# 連接
mongo 172.16.206.34:20000


config = { _id: "configs", members: [ {_id : 0, host : "172.16.206.34:20000"},{_id : 1, host : "172.16.206.36:20000"},{_id : 2, host : "172.16.206.47:20000"}] }   
# 查看分區狀態
rs.status()

mongo 172.16.206.34:30000


sh.addShard("shard1/172.16.206.34:27000,172.16.206.36:27000,172.16.206.47:27000")
sh.addShard("shard2/172.16.206.34:25000,172.16.206.36:25000,172.16.206.47:25000")
sh.addShard("shard3/172.16.206.34:35000,172.16.206.36:35000,172.16.206.47:35000")

#查看主分片

rs.status()

進入主分片裏移除從分片

#移除

rs.remove("172.16.206.34:27000");

#更改權重,後再把主降爲從
cfg= rs.conf();
cfg.members[1].priority=2;
rs.reconfig(cfg);

#備份

mongodump -h 172.16.101.179 -d data -o /var/data/


#還原

mongorestore --port 30000 --host 172.16.206.34 --drop /var/data/

db.runCommand( { enablesharding : "data" } )

 

#導入和導出:


mongoexport -h 172.16.206.34:30000 -d data -c claimBinding -o claimBinding.json
mongoimport -h 172.16.206.34:30000 --collection claimBindingv3 --db data --file /opt/claimBindingv3.json

 

可以看到對於未啓動分片的數據庫,可以看出我們隨便創建的數據庫的集合,他可以隨機分佈在不同的片上,mongo用這種機制實現主的平均分佈,實現數據庫 的均衡。
擴展一下,對於分片通常實驗範圍分片和hash分片,分片具體看業務情況的。而且分片以後是不能直接更改的,除非刪除數據庫或者collection,停業務實驗mongodump重新導數據,這個代價太大,所以分片時候要謹慎。

範圍分片:

1,適合普通範圍查詢,可以優化到讓熱查詢定位到某個片,數據集中取出避免數據分散而走網絡取數據

2,最好給分片鍵建立序列,實踐證明依據序列查找比全片所有chunk查找快的多

3,缺點在於,如果shardkey有明顯遞增(或者遞減)趨勢,則新插入的文檔多會分佈到同一個chunk,無法擴展寫的能力

hash分片:

1,適合大規模插入,由於範圍平均可以充分利用整個集羣的性能

2,適合高併發,集羣的各個集羣平均分擔壓力,

3,不能高效的服務範圍查詢,所有的範圍查詢要分發到後端所有的Shard才能找出滿足條件的文檔

 

#查詢集合claimBinding的數量

db.getCollection('claimBinding').find({"createDate":/2017-07-03/}).count()
 

#刪除集合claimBinding的數量

db.getCollection('claimBinding').remove({"createDate":/2017-07-03/})
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章