mongodb分片部署說明

2021-07-14 13:15:03 字數 4747 閱讀 4438

對於使用mongodb進行分片部署本身非常方便,下面將自己最近分片部署的過程記錄下來:

分片:shard1,shard2,shard3

配置:configsvr1,configsvr2,configsvr3(配置要為奇數個數)

route:route(兩台機器部署)

機器: 10.191.250.131 (shard1,shard2,shard3)

172.20.143.66(shard1,shard2,shard3,configsvr1,configsvr2,configsvr3,route)

172.20.143.68(shard1,shard2,shard3,route)

1. 分片配置檔案:

mongod_shard1.conf

mongod_shard2.conf

bind_ip = local_ip,

mongod_shard3.conf

bind_ip = local_ip,

port = 10003

dbpath=/data1/mongodb/shard3

logpath = /data1/mongolog/shard3/mongo.log #日誌檔案

pidfilepath = /data1/mongotmp/mongod_shard3.pid

nohttpinte***ce = true #關閉http介面,預設關閉27018埠訪問

fork = true  #以守護程序的方式執行mongodb,建立伺服器程序

oplogsize = 4096 #複製操作指定的最大大小(以兆位元組為單位)日誌

journal = true

#engine = wiredtiger

#cachesizegb = 38g

smallfiles=true

shardsvr=true

replset=shard3

上面的三個分片配置檔案,分別放到三颱伺服器上;(存放目錄可以指定,本次放入:/etc/mongo/)

2. 配置服務檔案

mongod_configsvr1.conf

mongod_configsvr2.conf

bind_ip = local_ip,

port = 20002

dbpath=/data1/mongodb/configsvr2

logpath = /data1/mongolog/mongo_config2.log #日誌檔案

pidfilepath = /data1/mongotmp/mongod_config2.pid

nohttpinte***ce = true #關閉http介面,預設關閉27018埠訪問

fork = true  #以守護程序的方式執行mongodb,建立伺服器程序

oplogsize = 4096 #複製操作指定的最大大小(以兆位元組為單位)日誌

journal = true

#engine = wiredtiger

#cachesizegb = 38g

smallfiles=true

configsvr = true

mongod_configsvr3.conf

bind_ip = local_ip,

port = 20003

dbpath=/data1/mongodb/configsvr3

logpath = /data1/mongolog/mongo_config3.log #日誌檔案

pidfilepath = /data1/mongotmp/mongod_config3.pid

nohttpinte***ce = true #關閉http介面,預設關閉27018埠訪問

fork = true  #以守護程序的方式執行mongodb,建立伺服器程序

oplogsize = 4096 #複製操作指定的最大大小(以兆位元組為單位)日誌

journal = true

#engine = wiredtiger

#cachesizegb = 38g

smallfiles=true

configsvr = true

上面的三個配置服務檔案,放到一台機器:172.20.143.66,(存放目錄可以指定,本次放入:/etc/mongo/)

3. 路由配置檔案:

mongod_route.conf

路由配置檔案,分別放到兩台機器上(172.20.143.68,172.20.143.66)

從配置檔案可以看出,配置服務程序是知道所有分片的,路由服務程序只知道所有配置服務程序;

4.分別啟動配置程序,分片程序,路由程序:

/usr/local/mongo/bin/mongod --config /etc/mongo/mongod_configsvr1.conf

/usr/local/mongo/bin/mongod --config /etc/mongo/mongod_configsvr2.conf

/usr/local/mongo/bin/mongod --config /etc/mongo/mongod_configsvr3.conf

/usr/local/mongo/bin/mongod --config /etc/mongo/mongod_shard1.conf

/usr/local/mongo/bin/mongod --config /etc/mongo/mongod_shard2.conf

/usr/local/mongo/bin/mongod --config /etc/mongo/mongod_shard3.conf

/usr/local/mongo/bin/mongos --config /etc/mongo/mongod_route.conf

分別在每台伺服器上,啟動自己的程序;

5.配置分片

隨便進入一台分片所在機器:

配置分片1:

./mongo 172.20.143.68 10001

use admin

config=,,]}

rs.initiate(config)

配置分片2:

./mongo 172.20.143.68 10002

use admin

config=,,]}

rs.initiate(config)

配置分片3:

./mongo 172.20.143.68 10003

use admin

config=,,]}

rs.initiate(config)

配置成功,會顯示ok;

6.配置路由:

隨便進入一台機器mongos:

./mongo 172.20.143.68:30000

use admin

db.runcommand( )

db.runcommand( )

db.runcommand( )

檢視分片:

mongos> use adminuse admin

switched to db admin

mongos> db.runcommand( )db.runcommand( ),,

],"ok" : 1

}通過上述配置部署,mongodb分片已經部署ok;

7.對庫和表進行分片啟用:

進入一台路由機器,對logdb庫的login表啟用分片:

./mongo 172.20.143.68:30000

use admin

db.runcommand( );

db.runcommand(})

切換庫;

use logdb

插入資料:

for(var i=1;i<=20000;i++) db.login.insert();

檢視資料分布情況:

mongos> sh.status()sh.status()

--- sharding status --- 

sharding version:

shards:

balancer:

currently enabled:  yes

currently running:  yes

balancer lock taken at thu jul 07 2016 16:43:12 gmt+0800 (cst) by lf-mysql-143-68.jd.local:30000:1467875749:1804289383:balancer:1681692777

failed balancer rounds in last 5 attempts:  0

migration results for the last 24 hours: 

2 : success

1 : failed with error 'migration already in progress', from shard1 to shard2

databases:

logdb.login

shard key:

chunks:

shard1  1

shard2  1

shard3  1

} -->> on : shard3 timestamp(3, 0) 

-->> on : shard1 timestamp(3, 1) 

-->> } on : shard2 timestamp(2, 0) 

mongos> 

到此處,整個分片部署ok,對外提供route程序資訊,則可以開始使用了:)

首次使用,以此文簡單記錄mongodb分片部署應用;

mongodb部署分片集群

在3臺centos 6伺服器上部署mongodb分片集群,其中副本集 replica set 部署在不同的伺服器上,每個伺服器有乙個配置 config 副本集,兩個分片 sharding 副本集,以及乙個mongos服務。所以3臺伺服器總共需要部署12個服務。3臺伺服器ip分別是 172.16.66...

mongoDB 分片集群部署

mongodb將大量的資料檔案進行切割,將切割的資料塊分別儲存到不同的片上,其中每個片為乙個副本集,而對外通過mongos提供統一介面,使用者實際上感覺不到內部分片機制。replicaset 副本集 mongodb集群的一種實現方式,該副本集由一台活躍mongodb伺服器 節點 和兩台非活躍mong...

使用 Docker 部署 MongoDB 分片

docker run name configsvr0 d mongo 3.6.2 jessie configsvr replset rs configsvr bind ip all docker run name configsvr1 d mongo 3.6.2 jessie configsvr r...