在3臺centos 6伺服器上部署mongodb分片集群,其中副本集(replica set)部署在不同的伺服器上,每個伺服器有乙個配置(config)副本集,兩個分片(sharding)副本集,以及乙個mongos服務。所以3臺伺服器總共需要部署12個服務。3臺伺服器ip分別是:172.16.66.113,172.16.66.114,172.16.66.115,下面以113,114,115來代表某台伺服器。
首先要保證各個伺服器之間是連通的,並且防火牆策略中能訪問到下面的埠,簡單方式關閉各伺服器防火牆,如:service iptables stop
保證下面使用的埠號沒有被占用
保證個目錄整潔乾淨,如果有歷史資料先清空歷史資料,主要是dbs目錄
/usr/local/mongodb
mongodb
--bin
----mongd
----mongo
----mongos
----...
--deploy
----dbs
------config
------shard1
------shard2
----etc
------configsvr.conf
------shardsvr1.conf
------shardsvr2.conf
------mongos.conf
----logs
----pids
所有mongodb可執行程式,如:mongod,mongo, mongos…
/usr/local/mongodb/bin
所有部署操作統一在這個目錄下進行
/usr/local/mongodb/deploy
存放所有資料庫資料
/usr/local/mongodb/deploy/dbs
包含三個子目錄,分別是:配置服務,分片1服務,分片2服務
* /usr/local/mongodb/deploy/dbs/config
* /usr/local/mongodb/deploy/dbs/shard1
* /usr/local/mongodb/deploy/dbs/shard2
存放所有日誌
/usr/local/mongodb/deploy/logs
存放各個服務的程序id
/usr/local/mongodb/deploy/pids
存放各個服務啟動的配置資訊
/usr/local/mongodb/deploy/etc
有三個配置檔案,分別是:配置服務,分片1服務,分片2服務,mongos服務的啟動配置
#bind_ip=127.0.0.1
port=27020
auth=false
configsvr=true
replset=cfgset
dbpath=/usr/local
/mongodb/deploy
/dbs/config
logpath=/usr/local
/mongodb/deploy
/logs/config.log
pidfilepath=/usr/local
/mongodb/deploy
/pids/config.pid
fork=true
#bind_ip=127.0.0.1
port=27031
auth=false
shardsvr=true
replset=shardset1
dbpath=/usr/local
/mongodb/deploy
/dbs/shard1
logpath=/usr/local
/mongodb/deploy
/logs/shard1.log
pidfilepath=/usr/local
/mongodb/deploy
/pids/shard1.pid
fork=true
#bind_ip=127.0.0.1
port=27032
auth=false
shardsvr=true
replset=shardset2
dbpath=/usr/local
/mongodb/deploy
/dbs/shard2
logpath=/usr/local
/mongodb/deploy
/logs/shard2.log
pidfilepath=/usr/local
/mongodb/deploy
/pids/shard2.pid
fork=true
#bind_ip=127.0.0.1
port=27017
configdb=cfgset/172.16.66.113
:27020,172.16.66.114
:27020,172.16.66.114
:27020
logpath=/usr/local
/mongodb/deploy
/logs/mongos.log
pidfilepath=/usr/local
/mongodb/deploy
/pids/mongos.pid
fork=true
port:服務啟動的埠號注意,所有的操作都在deploy目錄下進行,按下面的順序執行。auth:需不需要授權
configsvr:配置服務
shardsvr:分片服務
replset:所屬副本集的名字
dbpath:資料存放路徑
logpath:日誌存放路徑
pidfilepath:程序id存放路徑
fork:daemon方式啟動
configdb:mongos指定分片集群的配置服務
每台伺服器上啟動乙個配置服務
在113機器上操作,連線到配置服務(其中乙個都可以)
每個服務的埠號請看etc目錄下面的配置檔案
../bin/mongo –port 27020
初始化配置服務副本集,注意initiate要在primary副本集中操作,某個副本集開始可能不是primary,用rs.status()多檢視幾次
rs
.initiate(, , ]})
在113機器上操作,連線到分片1服務(其中乙個都可以)
../bin/mongo –port 27031
rs
.initiate(, , ]})
在113機器上操作,連線到分片2服務(其中乙個都可以)
../bin/mongo –port 27032
rs
.initiate(, , ]})
每台伺服器上的副本集都是對等的,我們只需要在其中一台伺服器上進行初始化就可以了,其他的副本集會將配置資訊自動同步過去,所以上面我們只在113機器上進行副本集的初始化。在每台伺服器上啟動mongos服務
* 113機器上執行:../bin/mongos -f etc/mongos.conf
* 114機器上執行:../bin/mongos -f etc/mongos.conf
* 115機器上執行:../bin/mongos -f etc/mongos.conf
在113機器上操作
mongos使用的是預設埠27017,所以後面可以不加–port引數
../bin/mongo
sh.addshard("shardset1/172.16.66.113:27031,172.16.66.114:27031,172.16.66.115:27031")
sh.addshard("shardset2/172.16.66.113:27032,172.16.66.114:27032,172.16.66.115:27032")
sh.enablesharding("test")
sh
.shardcollection("test
.users", )
如果資料庫是空的shardcollection會自動建立索引,如果資料庫不是空的執行shardcollection之前必須先建立索引到這裡就部署完成了。
如:我在本機上連線,mongo –host 172.16.66.113
use test
for
(var i = 1; i <= 10000; i++) ) }
db.users.stats()
可以看到sharded:true,count:10000,shardset1中的count為4963,shardset2中的count為5037
mongoDB 分片集群部署
mongodb將大量的資料檔案進行切割,將切割的資料塊分別儲存到不同的片上,其中每個片為乙個副本集,而對外通過mongos提供統一介面,使用者實際上感覺不到內部分片機制。replicaset 副本集 mongodb集群的一種實現方式,該副本集由一台活躍mongodb伺服器 節點 和兩台非活躍mong...
MongoDB集群分片
什麼是sharding?說白了就是把海量資料水平擴充套件的集群系統,資料分表儲存在sharding的各個節點上。mongodb的資料分開分為chunk,每個chunk都是collection中的一段連續的資料記錄,一般為200mb,超出則生成新的資料塊。構建sharding需要三種角色,shard伺...
mongodb分片 集群
目前在乙個機器上部署,ip 10.1.2.197,埠列表如下 埠埠埠路由服務 27061 路由服務 27062 路由服務 27063 配置服務 27071 配置服務 27072 配置服務 27073 副本集1 27011 副本集2 27021 副本集3 27031 副本集1 27012 副本集2 2...