mongodb分片和复制集搭建文档
搭建分片和复制集http://www.cnblogs.com/MYSQLZOUQI/
1、建立相关目录和文件
#机器1
mkdir -p /data/replset0/data/rs0
mkdir -p /data/replset0/log
mkdir -p /data/replset0/config
touch /data/replset0/config/rs0.conf
touch/data/replset0/log/rs0.log
mkdir -p /data/replset1/data/rs1
mkdir -p /data/replset1/log
mkdir -p /data/replset1/config
touch /data/replset1/config/rs1.conf
touch/data/replset1/log/rs1.log
mkdir -p /data/replset2/data/rs2
mkdir -p /data/replset2/log
mkdir -p /data/replset2/config
touch /data/replset2/config/rs2.conf
touch/data/replset2/log/rs2.log
mkdir -p /data/db_config/data/config0
mkdir -p /data/db_config/log/
mkdir -p /data/db_config/config/
touch /data/db_config/log/config0.log
touch /data/db_config/config/cfgserver0.conf
#机器2
mkdir -p /data/replset0/data/rs0
mkdir -p /data/replset0/log
mkdir -p /data/replset0/config
touch /data/replset0/config/rs0.conf
touch/data/replset0/log/rs0.log
mkdir -p /data/replset1/data/rs1
mkdir -p /data/replset1/log
mkdir -p /data/replset1/config
touch /data/replset1/config/rs1.conf
touch/data/replset1/log/rs1.log
mkdir -p /data/replset2/data/rs2
mkdir -p /data/replset2/log
mkdir -p /data/replset2/config
touch /data/replset2/config/rs2.conf
touch/data/replset2/log/rs2.log
mkdir -p /data/db_config/data/config1
mkdir -p /data/db_config/log/
mkdir -p /data/db_config/config/
touch /data/db_config/log/config1.log
touch /data/db_config/config/cfgserver1.conf
#机器3
mkdir -p /data/replset0/data/rs0
mkdir -p /data/replset0/log
mkdir -p /data/replset0/config
touch /data/replset0/config/rs0.conf
touch/data/replset0/log/rs0.log
mkdir -p /data/replset1/data/rs1
mkdir -p /data/replset1/log
mkdir -p /data/replset1/config
touch /data/replset1/config/rs1.conf
touch/data/replset1/log/rs1.log
mkdir -p /data/replset2/data/rs2
mkdir -p /data/replset2/log
mkdir -p /data/replset2/config
touch /data/replset2/config/rs2.conf
touch/data/replset2/log/rs2.log
mkdir -p /data/db_config/data/config2
mkdir -p /data/db_config/log/
mkdir -p /data/db_config/config/
touch /data/db_config/log/config2.log
touch /data/db_config/config/cfgserver2.conf
2、配置复制集配置文件
#机器1
vi /data/replset0/config/rs0.conf
journal=true
port=4000
replSet=rsshard0
dbpath = /data/replset0/data/rs0
shardsvr = true
oplogSize = 100
pidfilepath = /usr/local/mongodb/mongodb0.pid
logpath = /data/replset0/log/rs0.log
logappend = true
profile = 1
slowms = 5
fork = true
vi /data/replset1/config/rs1.conf
journal=true
port=4001
replSet=rsshard1
dbpath = /data/replset1/data/rs1
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb1.pid
logpath = /data/replset1/log/rs1.log
logappend = true
profile = 1
slowms = 5
fork = true
vi/data/replset2/config/rs2.conf
journal=true
port=4002
replSet=rsshard2
dbpath = /data/replset2/data/rs2
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb2.pid
logpath = /data/replset2/log/rs2.log
logappend = true
profile = 1
slowms = 5
fork = true
#机器2
vi /data/replset0/config/rs0.conf
journal=true
port=4000
replSet=rsshard0
dbpath = /data/replset0/data/rs0
shardsvr = true
oplogSize = 100
pidfilepath = /usr/local/mongodb/mongodb0.pid
logpath = /data/replset0/log/rs0.log
logappend = true
profile = 1
slowms = 5
fork = true
vi /data/replset1/config/rs1.conf
journal=true
port=4001
replSet=rsshard1
dbpath = /data/replset1/data/rs1
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb1.pid
logpath = /data/replset1/log/rs1.log
logappend = true
profile = 1
slowms = 5
fork = true
vi/data/replset2/config/rs2.conf
journal=true
port=4002
replSet=rsshard2
dbpath = /data/replset2/data/rs2
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb2.pid
logpath = /data/replset2/log/rs2.log
logappend = true
profile = 1
slowms = 5
fork = true
#机器3
vi /data/replset0/config/rs0.conf
journal=true
port=4000
replSet=rsshard0
dbpath = /data/replset0/data/rs0
shardsvr = true
oplogSize = 100
pidfilepath = /usr/local/mongodb/mongodb0.pid
logpath = /data/replset0/log/rs0.log
logappend = true
profile = 1
slowms = 5
fork = true
vi /data/replset1/config/rs1.conf
journal=true
port=4001
replSet=rsshard1
dbpath = /data/replset1/data/rs1
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb1.pid
logpath = /data/replset1/log/rs1.log
logappend = true
profile = 1
slowms = 5
fork = true
vi/data/replset2/config/rs2.conf
journal=true
port=4002
replSet=rsshard2
dbpath = /data/replset2/data/rs2
shardsvr = true
oplogSize = 100
pidfilepath =/usr/local/mongodb/mongodb2.pid
logpath = /data/replset2/log/rs2.log
logappend = true
profile = 1
slowms = 5
fork = true
3、启动复制集
#三台机器都启动mongodb
/usr/local/mongodb/bin/mongod --config/data/replset0/config/rs0.conf
/usr/local/mongodb/bin/mongod --config/data/replset1/config/rs1.conf
/usr/local/mongodb/bin/mongod --config/data/replset2/config/rs2.conf
/usr/local/mongodb/bin/mongod --config/data/replset0/config/rs0.conf
/usr/local/mongodb/bin/mongod --config/data/replset1/config/rs1.conf
/usr/local/mongodb/bin/mongod --config/data/replset2/config/rs2.conf
/usr/local/mongodb/bin/mongod --config/data/replset0/config/rs0.conf
/usr/local/mongodb/bin/mongod --config/data/replset1/config/rs1.conf
/usr/local/mongodb/bin/mongod --config/data/replset2/config/rs2.conf
4、设置复制集
#机器1
mongo --port 4000
use admin
config = { _id:"rsshard0", members:[
{_id:0,host:"192.168.1.155:4000"},
{_id:1,host:"192.168.14.221:4000"},
{_id:2,host:"192.168.14.198:4000"}]
}
rs.initiate(config);
rs.conf()
#机器2
mongo --port 4001
use admin
config = { _id:"rsshard1", members:[
{_id:0,host:"192.168.1.155:4001"},
{_id:1,host:"192.168.14.221:4001"},
{_id:2,host:"192.168.14.198:4001"}]
}
rs.initiate(config);
rs.conf()
#机器3
mongo --port 4002
use admin
config = { _id:"rsshard2", members:[
{_id:0,host:"192.168.1.155:4002"},
{_id:1,host:"192.168.14.221:4002"},
{_id:2,host:"192.168.14.198:4002"}]
}
rs.initiate(config);
rs.conf()
#机器1
cfg = rs.conf()
cfg.members.priority = 2
cfg.members.priority = 1
cfg.members.priority = 1
rs.reconfig(cfg)
#机器2
cfg = rs.conf()
cfg.members.priority = 1
cfg.members.priority = 2
cfg.members.priority = 1
rs.reconfig(cfg)
#机器3
cfg = rs.conf()
cfg.members.priority = 1
cfg.members.priority = 1
cfg.members.priority = 2
rs.reconfig(cfg)
5、配置config服务器
#机器1
vi /data/db_config/config/cfgserver0.conf
journal=true
pidfilepath = /data/db_config/config/mongodb.pid
dbpath = /data/db_config/data/config0
directoryperdb = true
configsvr = true
port = 5000
logpath =/data/db_config/log/config0.log
logappend = true
fork = true
#机器2
vi /data/db_config/config/cfgserver1.conf
journal=true
pidfilepath = /data/db_config/config/mongodb.pid
dbpath = /data/db_config/data/config1
directoryperdb = true
configsvr = true
port = 5000
logpath =/data/db_config/log/config1.log
logappend = true
fork = true
#机器3
vi /data/db_config/config/cfgserver2.conf
journal=true
pidfilepath = /data/db_config/config/mongodb.pid
dbpath = /data/db_config/data/config2
directoryperdb = true
configsvr = true
port = 5000
logpath =/data/db_config/log/config2.log
logappend = true
fork = true
#机器1
/usr/local/mongodb/bin/mongod --config/data/db_config/config/cfgserver0.conf
#机器2
/usr/local/mongodb/bin/mongod --config/data/db_config/config/cfgserver1.conf
#机器3
/usr/local/mongodb/bin/mongod --config/data/db_config/config/cfgserver2.conf
6、配置mongos路由服务器 三台机器都要执行
mkdir -p /data/mongos/log/
touch /data/mongos/log/mongos.log
touch /data/mongos/mongos.conf
vi /data/mongos/mongos.conf
#configdb = 192.168.1.155:5000,192.168.14.221:5000,192.168.14.198:5000
configdb = 192.168.1.155:5000
port = 6000
chunkSize = 1
logpath =/data/mongos/log/mongos.log
logappend = true
fork = true
mongos--config /data/mongos/mongos.conf
7、添加分片
mongo 192.168.1.155:6000//连接到第一台
#添加分片,不能添加arbiter节点
sh.addShard("rsshard0/192.168.1.155:4000,192.168.14.221:4000,192.168.14.198:4000")
sh.addShard("rsshard1/192.168.1.155:4001,192.168.14.221:4001,192.168.14.198:4001")
sh.addShard("rsshard2/192.168.1.155:4002,192.168.14.221:4002,192.168.14.198:4002")
#查看状况
sh.status();
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("565eac6d8e75f6a7d3e6e65e")
}
shards:
{"_id" : "rsshard0","host" : "rsshard0/192.168.1.155:4000,192.168.14.198:4000,192.168.14.221:4000" }
{"_id" : "rsshard1","host" : "rsshard1/192.168.1.155:4001,192.168.14.198:4001,192.168.14.221:4001" }
{"_id" : "rsshard2","host" : "rsshard2/192.168.1.155:4002,192.168.14.198:4002,192.168.14.221:4002" }
balancer:
Currently enabled:yes
Currently running:no
Failed balancer rounds in last 5 attempts:0
Migration Results for the last 24 hours:
No recent migrations
databases:
{"_id" : "admin","partitioned" : false,"primary" : "config" }
#声明库和表要分片
mongos> use admin
mongos> db.runCommand({enablesharding:"testdb"})
mongos> db.runCommand( { shardcollection : "testdb.books", key : { id : 1 } } )
#测试
use testdb
mongos> for (var i = 1; i <= 20000; i++){db.books.save({id:i,name:"ttbook",sex:"male",age:27,value:"test"})}
#查看分片统计
db.books.stats()
-------------------------------------------------------------------------------------------------------------------------------------
db.books.stats()
{
"sharded" : true,
"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
"userFlags" : 1,
"capped" : false,
"ns" : "testdb.books",
"count" : 20000,
"numExtents" : 11,
"size" : 2240000,
"storageSize" : 5595136,
"totalIndexSize" : 1267280,
"indexSizes" : {
"_id_" : 678608,
"id_1" : 588672
},
"avgObjSize" : 112,
"nindexes" : 2,
"nchunks" : 5,
"shards" : {
"rsshard0" : {
"ns" : "testdb.books",
"count" : 9443,
"size" : 1057616,
"avgObjSize" : 112,
"numExtents" : 5,
"storageSize" : 2793472,
"lastExtentSize" : 2097152,
"paddingFactor" : 1,
"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
"userFlags" : 1,
"capped" : false,
"nindexes" : 2,
"totalIndexSize" : 596848,
"indexSizes" : {
"_id_" : 318864,
"id_1" : 277984
},
"ok" : 1,
"$gleStats" : {
"lastOpTime" : Timestamp(0, 0),
"electionId" : ObjectId("565975792a5b76c2553522a5")
}
},
"rsshard1" : {
"ns" : "testdb.books",
"count" : 10549,
"size" : 1181488,
"avgObjSize" : 112,
"numExtents" : 5,
"storageSize" : 2793472,
"lastExtentSize" : 2097152,
"paddingFactor" : 1,
"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
"userFlags" : 1,
"capped" : false,
"nindexes" : 2,
"totalIndexSize" : 654080,
"indexSizes" : {
"_id_" : 351568,
"id_1" : 302512
},
"ok" : 1,
"$gleStats" : {
"lastOpTime" : Timestamp(0, 0),
"electionId" : ObjectId("565eac15357442cd3ead5103")
}
},
"rsshard2" : {
"ns" : "testdb.books",
"count" : 8,
"size" : 896,
"avgObjSize" : 112,
"numExtents" : 1,
"storageSize" : 8192,
"lastExtentSize" : 8192,
"paddingFactor" : 1,
"paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
"userFlags" : 1,
"capped" : false,
"nindexes" : 2,
"totalIndexSize" : 16352,
"indexSizes" : {
"_id_" : 8176,
"id_1" : 8176
},
"ok" : 1,
"$gleStats" : {
"lastOpTime" : Timestamp(0, 0),
"electionId" : ObjectId("565eab094c148b20ecf4b442")
}
}
},
"ok" : 1
sh.status()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("565eac6d8e75f6a7d3e6e65e")
}
shards:
{"_id" : "rsshard0","host" : "rsshard0/192.168.1.155:4000,192.168.14.198:4000,192.168.14.221:4000" }
{"_id" : "rsshard1","host" : "rsshard1/192.168.1.155:4001,192.168.14.198:4001,192.168.14.221:4001" }
{"_id" : "rsshard2","host" : "rsshard2/192.168.1.155:4002,192.168.14.198:4002,192.168.14.221:4002" }
balancer:
Currently enabled:yes
Currently running:no
Failed balancer rounds in last 5 attempts:0
Migration Results for the last 24 hours:
No recent migrations
databases:
{"_id" : "admin","partitioned" : false,"primary" : "config" }
{"_id" : "test","partitioned" : false,"primary" : "rsshard0" }
{"_id" : "testdb","partitioned" : true,"primary" : "rsshard0" }
testdb.books
shard key: { "id" : 1 }
chunks:
rsshard0 2
rsshard1 2
rsshard2 1
{ "id" : { "$minKey" : 1 } } -->> { "id" : 2 } on : rsshard1 Timestamp(2, 0)
{ "id" : 2 } -->> { "id" : 10 } on : rsshard2 Timestamp(3, 0)
{ "id" : 10 } -->> { "id" : 4691 } on : rsshard0 Timestamp(4, 1)
{ "id" : 4691 } -->> { "id" : 9453 } on : rsshard0 Timestamp(3, 3)
{ "id" : 9453 } -->> { "id" : { "$maxKey" : 1 } } on : rsshard1 Timestamp(4, 0)
{"_id" : "aaaa","partitioned" : false,"primary" : "rsshard0" }
页:
[1]