mongodb分片配置
#本次配置時(shí)間為 2014-11-06 軟件版本為:mongodb-linux-x86_64-2.4.3.tgz ??
linux :centos 5.9 64bit
##############################################################
本次部署分片的方式,只為測試環(huán)境: ? ? ? ? ? ? ? ? ? ? ? ? ?#
? ? ? ? ? ? ? 10.8.10.234 ? ?10.8.10.235 ? ?10.8.10.236 ? ? #
shard1 分片 ? ? ? master ? ? ? ?slaver ? ? ? arbiterOnly ? ?#
shard2 分片 ? ? ? master ? ? ? ?slaver ? ? ? arbiterOnly ? ?#
shard3 分片 ? ? ? master ? ? ? ?slaver ? ? ? arbiterOnly ? ?#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
###############################################################
#每個(gè)服務(wù)器配置:
mkdir ?-p /data/mongodb/config/data
mkdir ?-p /data/mongodb/config/log
mkdir ?-p /data/mongodb/mongos/log
mkdir ?-p /data/mongodb/shard1/data
mkdir ?-p /data/mongodb/shard1/log
mkdir ?-p /data/mongodb/shard2/data
mkdir ?-p /data/mongodb/shard2/log
mkdir ?-p /data/mongodb/shard3/data
mkdir ?-p /data/mongodb/shard3/log
tar -xvzf mongodb-linux-x86_64-2.4.3.tgz
mv mongodb-linux-x86_64-2.4.3 ?/data/mongodb/mongodb
#每個(gè)服務(wù)器配置服務(wù):
?/data/mongodb/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/config/data --port 21000 --logpath /data/mongodb/config/log/config.log --fork
#每臺(tái)服務(wù)器 啟動(dòng)分片服務(wù):
/data/mongodb/mongodb/bin/mongod --shardsvr --replSet shard1 --port 22001 --dbpath /data/mongodb/shard1/data --logpath /data/mongodb/shard1/log/shard1.log --fork --nojournal --oplogSize 10
/data/mongodb/mongodb/bin/mongod --shardsvr --replSet shard2 --port 22002 --dbpath /data/mongodb/shard2/data --logpath /data/mongodb/shard2/log/shard2.log --fork --nojournal --oplogSize 10
/data/mongodb/mongodb/bin/mongod --shardsvr --replSet shard3 --port 22003 --dbpath /data/mongodb/shard3/data --logpath /data/mongodb/shard3/log/shard3.log --fork --nojournal --oplogSize 10
# 1臺(tái)或者多臺(tái)服務(wù)器啟動(dòng)mongos路由,應(yīng)用程序連接該路由端口。
#mongos 需要等到3臺(tái)服務(wù)器的配置文件都啟動(dòng)之后 才能啟動(dòng),否則報(bào)錯(cuò)。
/data/mongodb/mongodb/bin/mongos --configdb 10.8.10.234:21000,10.8.10.235:21000,10.8.10.236:21000 --port 20000 --logpath /data/mongodb/mongos/log/mongos.log --fork
#################################
#登入任意服務(wù)器執(zhí)行:
mongo 127.0.0.1:22001?
use admin
設(shè)置分片1?
>config = { _id:"shard1", members:[
{_id:0,host:"10.8.10.234:22001",priority:1},
{_id:1,host:"10.8.10.235:22001",priority:1},
{_id:2,host:"10.8.10.236:22001",arbiterOnly:true}
]
}
>rs.initiate(config);
# ,priority:N 是設(shè)置master 優(yōu)先級 可以不配置,建議把分片的master放置在不同的服務(wù)器,實(shí)現(xiàn)讀寫壓力分流
# arbiterOnly:true 需要配置。省略后,變成1 master + 2個(gè)slaver 與方案不符
############################
mongo 127.0.0.1:22002?
use admin
設(shè)置分片2?
>config = { _id:"shard2", members:[
{_id:0,host:"10.8.10.234:22002",priority:1},
{_id:1,host:"10.8.10.235:22002",priority:1},
{_id:2,host:"10.8.10.236:22002",arbiterOnly:true}
]
}
>rs.initiate(config);
# ,priority:N 是設(shè)置master 優(yōu)先級 可以不配置。建議把分片的master放置在不同的服務(wù)器,實(shí)現(xiàn)讀寫壓力分流
# arbiterOnly:true 需要配置 。省略后,變成1master + 2個(gè)slaver 與方案不符
#############################
mongo 127.0.0.1:22003?
use admin
設(shè)置分片3
?
>config = { _id:"shard3", members:[
{_id:0,host:"10.8.10.234:22003",priority:1},
{_id:1,host:"10.8.10.235:22003",priority:1},
{_id:2,host:"10.8.10.236:22003",arbiterOnly:true}
]
}
>rs.initiate(config);
# ,priority:N 是設(shè)置master 優(yōu)先級 可以不配置。建議把分片的master放置在不同的服務(wù)器,實(shí)現(xiàn)讀寫壓力分流
# arbiterOnly:true 需要配置。省略后,變成1master + 2個(gè)slaver 與方案不符
#########################
連接mongs: ?bin/mongo 127.0.0.1:20000
#使用admin數(shù)據(jù)庫 user admin
串聯(lián)路由服務(wù)器與分配副本集1
db.runCommand( { addshard : "shard1/10.8.10.234:22001,10.8.10.235:22001,10.8.10.236:22001"});
串聯(lián)路由服務(wù)器與分配副本集2
db.runCommand( { addshard : "shard2/10.8.10.234:22002,10.8.10.235:22002,10.8.10.236:22002"});
串聯(lián)路由服務(wù)器與分配副本集3
db.runCommand( { addshard : "shard3/10.8.10.234:22003,10.8.10.235:22003,10.8.10.236:22003"});
#查看分片服務(wù)器的配置
?db.runCommand( { listshards : 1 } );
?備注:每個(gè)分片副本集的仲裁節(jié)點(diǎn)結(jié)果不列出來
##############################
###手動(dòng)選定master備注:
在配置分片的時(shí)候 添加優(yōu)先級可以手動(dòng)選擇master
分片配置后之后,使用如下命令,在分片的主節(jié)點(diǎn)登錄,可以將members[1] 提升為Master。
rs.status();
rs.conf();
cfg=rs.conf();
cfg.members[0].priority=1
cfg.members[1].priority=2
#cfg.members[2] 仲裁機(jī)不用設(shè)置
rs.reconfig(cfg);
創(chuàng)建數(shù)據(jù)測試:
#指定testdb分片生效
db.runCommand( { enablesharding :"testdb"});
#指定數(shù)據(jù)庫里需要分片的集合和片鍵
db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )
我們設(shè)置testdb的 table1 表需要分片,根據(jù) id 自動(dòng)分片到 shard1 ,shard2,shard3 上面去。要這樣設(shè)置是因?yàn)椴皇撬衜ongodb 的數(shù)據(jù)庫和表 都需要分片!
bin/mongo 127.0.0.1:20000
#使用testdb use testdb;
? ? #插入測試數(shù)據(jù)
for (var i = 1; i <= 100000; i++) db.table1.save({id:i,"test1":"testval1"});
#查看分片情況如下,部分無關(guān)信息省掉了
db.table1.stats();
?看到數(shù)據(jù)分到3個(gè)分片,各自分片數(shù)量為: shard1 “count” : 42183,shard2 “count”: 38937,shard3 “count” : 18880。已經(jīng)成功了!不過分的好像不是很均勻,所以這個(gè)分片還是很有講究的,后續(xù)再深入討論。
為了充分利用3臺(tái)服務(wù)器資源,緩解磁盤Io ,以上方案可以如下變通:
##############################################################
在生產(chǎn)環(huán)境中,可以如下部署: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#
? ? ? ? ? ? ? 10.8.10.234 ? ?10.8.10.235 ? ?10.8.10.236 ? ? #
shard1 分片 ? ? ? master ? ? ? ?slaver ? ? ? arbiterOnly ? ?#
shard2 分片 ? ? ?arbiterOnly ? ?master ? ? ? ?slaver ? ? ? ?#
shard3 分片 ? ? ? slaver ? ? ?arbiterOnly ? ? master ? ? ? ?#
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
###############################################################
轉(zhuǎn)載于:https://blog.51cto.com/2574526/1573855
總結(jié)
以上是生活随笔為你收集整理的mongodb分片配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于STM32 MDK中USE_STDP
- 下一篇: easyui datagrid 绑定js