mongodb部署分片集群

2021-08-09 14:17:29 字數 4713 閱讀 2285

在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:服務啟動的埠號

auth:需不需要授權

configsvr:配置服務

shardsvr:分片服務

replset:所屬副本集的名字

dbpath:資料存放路徑

logpath:日誌存放路徑

pidfilepath:程序id存放路徑

fork:daemon方式啟動

configdb:mongos指定分片集群的配置服務

注意,所有的操作都在deploy目錄下進行,按下面的順序執行。

每台伺服器上啟動乙個配置服務

在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...