生產MongoDB分片與集群 方案
一、 mongodb分片與集群拓撲圖
二、分片與集群的部署
1.Mongodb的安裝
分別在以上3臺服務器安裝好mongodb
安裝方法見安裝腳本。
2.Mongod 創建單個分片的副本集
10.68.4.209
①建立數據文件夾和日志文件夾
mdkir /data/{master,slave,arbiter}
mkdir /data/log/mongodb/{master,slave,arbiter} -p
②建立配置文件
#master.conf
dbpath=/data/master
logpath=/data/log/mongodb/master/mongodb.log
pidfilepath=/var/run/mongo_master.pid
#directoryperdb=true
logappend=true
replSet=policydb
port=10002
oplogSize=10000
fork=true
noprealloc=true
profile=1
slowms=200
#slave.conf
dbpath=/data/slave
logpath=/data/log/mongodb/slave/mongodb.log
pidfilepath=/var/run/mongo_slave.pid
#directoryperdb=true
logappend=true
replSet=policydb
port=10001
oplogSize=10000
fork=true
noprealloc=true
profile=1
slowms=200
#arbiter.conf
dbpath=/data/arbiter
logpath=/data/log/mongodb/arbiter/mongodb.log
pidfilepath=/var/run/mongo_arbiter.pid
#directoryperdb=true
logappend=true
replSet=policydb
port=10000
oplogSize=10000
fork=true
noprealloc=true
profile=1
slowms=200
③啟動mongodb
/etc/init.d/mongodb_master start
/etc/init.d/mongodb_slave start
/etc/init.d/mongodb_arbiter start
④配置主、備、仲裁節點
主節點:
# /usr/local/mongodb/bin/mongo 10.68.4.209:10002
MongoDB shell version: 2.4.9
connecting to: 10.68.4.209:10002/test
> use admin
switched to db admin
>config={ _id:"policydb", members:[ {_id:0,host:'10.68.4.209:10002',priority:2}, {_id:1,host:'10.68.4.209:10001',priority:1},
... {_id:2,host:'10.68.4.209:10000',arbiterOnly:true}] };
{
"_id" : "policydb",
"members" : [
{
"_id" : 0,
"host" : "10.68.4.209:10002",
"priority" : 2
},
{
"_id" : 1,
"host" : "10.68.4.209:10001",
"priority" : 1
},
{
"_id" : 2,
"host" : "10.68.4.209:10000",
"arbiterOnly" : true
}
]
}
rs.initiate(config) #初始化
rs.status() #查看集群狀態
10.68.4.29
①建立數據文件夾和日志文件夾
mdkir /data/{master,slave,arbiter}
mkdir /data/log/mongodb/{master,slave,arbiter} -p
②建立配置文件
#master.conf
dbpath=/data/master
logpath=/data/log/mongodb/master/mongodb.log
pidfilepath=/var/run/mongo_master.pid
#directoryperdb=true
logappend=true
replSet=policydb2
port=10002
oplogSize=10000
fork=true
noprealloc=true
profile=1
slowms=200
#slave.conf
dbpath=/data/slave
logpath=/data/log/mongodb/slave/mongodb.log
pidfilepath=/var/run/mongo_slave.pid
#directoryperdb=true
logappend=true
replSet=policydb2
port=10001
oplogSize=10000
fork=true
noprealloc=true
profile=1
slowms=200
#arbiter.conf
dbpath=/data/arbiter
logpath=/data/log/mongodb/arbiter/mongodb.log
pidfilepath=/var/run/mongo_arbiter.pid
#directoryperdb=true
logappend=true
replSet=policydb2
port=10000
oplogSize=10000
fork=true
noprealloc=true
profile=1
slowms=200
③啟動mongodb
/etc/init.d/mongodb_master start
/etc/init.d/mongodb_slave start
/etc/init.d/mongodb_arbiter start
④配置主、備、仲裁節點
主節點:
# /usr/local/mongodb/bin/mongo 10.68.4.209:10002
MongoDB shell version: 2.4.9
connecting to: 10.68.4.209:10002/test
> use admin
switched to db admin
> config={ _id:"policydb2", members:[ {_id:0,host:'10.68.4.29:10002',priority:2}, {_id:1,host:'10.68.4.29:10001',priority:1},
... {_id:2,host:'10.68.4.209:10000',arbiterOnly:true}] };
{
"_id" : "policydb",
"members" : [
{
"_id" : 0,
"host" : "10.68.4.29:10002",
"priority" : 2
},
{
"_id" : 1,
"host" : "10.68.4.29:10001",
"priority" : 1
},
{
"_id" : 2,
"host" : "10.68.4.29:10000",
"arbiterOnly" : true
}
]
}
rs.initiate(config) #初始化
rs.status() #查看集群狀態
10.68.4.30
①建立數據文件夾和日志文件夾
mdkir /data/{master,slave,arbiter}
mkdir /data/log/mongodb/{master,slave,arbiter} -p
②建立配置文件
#master.conf
dbpath=/data/master
logpath=/data/log/mongodb/master/mongodb.log
pidfilepath=/var/run/mongo_master.pid
#directoryperdb=true
logappend=true
replSet=policydb3
port=10002
oplogSize=10000
fork=true
noprealloc=true
profile=1
slowms=200
#slave.conf
dbpath=/data/slave
logpath=/data/log/mongodb/slave/mongodb.log
pidfilepath=/var/run/mongo_slave.pid
#directoryperdb=true
logappend=true
replSet=policydb3
port=10001
oplogSize=10000
fork=true
noprealloc=true
profile=1
slowms=200
#arbiter.conf
dbpath=/data/arbiter
logpath=/data/log/mongodb/arbiter/mongodb.log
pidfilepath=/var/run/mongo_arbiter.pid
#directoryperdb=true
logappend=true
replSet=policydb3
port=10000
oplogSize=10000
fork=true
noprealloc=true
profile=1
slowms=200
③啟動mongodb
/etc/init.d/mongodb_master start
/etc/init.d/mongodb_slave start
/etc/init.d/mongodb_arbiter start
④配置主、備、仲裁節點
主節點:
# /usr/local/mongodb/bin/mongo 10.68.4.209:10002
MongoDB shell version: 2.4.9
connecting to: 10.68.4.209:10002/test
> use admin
switched to db admin
> config={ _id:"policydb3", members:[ {_id:0,host:'10.68.4.30:10002',priority:2}, {_id:1,host:'10.68.4.30:10001',priority:1},
... {_id:2,host:'10.68.4.30:10000',arbiterOnly:true}] };
{
"_id" : "policydb",
"members" : [
{
"_id" : 0,
"host" : "10.68.4.30:10002",
"priority" : 2
},
{
"_id" : 1,
"host" : "10.68.4.30:10001",
"priority" : 1
},
{
"_id" : 2,
"host" : "10.68.4.30:10000",
"arbiterOnly" : true
}
]
}
rs.initiate(config) #初始化
rs.status() #查看集群狀態
2.Mongod 創建單個分片的配置服務器
① 創建配置目錄
10.68.4.209 mkdir /data/config
10.68.4.29 mkdir /data/config
10.68.4.30 mkdir /data/config
②準備配置服務器的配置文件
3個服務器的配置服務器的配置文件一致
#config.conf
dbpath=/data/config
logpath=/data/log/mongodb/config/mongodb.log
pidfilepath=/var/run/mongo_config.pid
directoryperdb=true
logappend=true
port=10003
fork=true
configsvr=true
③啟動配置服務器
/etc/init.d/mongodb_config start
3.Mongod 創建并配置mongos和開啟分片模式
① 創建日志目錄
Mkdir -p /data/log/mongodb/mongos/
② 準備mongos的配置文件
#mongos.conf
logpath=/data/log/mongodb/mongos/mongodb.log
pidfilepath=/var/run/mongo_mongos.pid
logappend=true
port=10004
fork=true
configdb=10.68.4.209:10003,10.68.4.29:10003,10.68.4.30:1000
③ 啟動mongos
/etc/init.d/mongodb_mongos start
④ 配置分片
sh.addShard("policydb/10.68.4.209:10002")
sh.addShard("policydb2/10.68.4.29:10002")
sh.addShard("policydb3/10.68.4.30:10002")
sh.enableSharding("policydb")
db.runCommand({"shardcollection":"policydb.fullPolicyTextInfo_history", "key":{"key":1}})
db.printShardingStatus() #查看分片狀態
sh.status({verbose:true})
sh.status()
3.快速創建副本集和配置服務腳本
上圖
1.圖1
2.圖2 config.conf配置文件
3.圖3
來自:http://my.oschina.net/pwd/blog/411439