對於使用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...