您的位置:首页 > 数据库 > Mongodb

MongoDB实战系列之五:mongodb的分片配置

2012-04-13 16:18 417 查看
md01 10.0.0.11

md02 10.0.0.12

md03 10.0.0.14

2、启动三台机器的mongod实例

根据Replica Set、Sharding策略部署mongod。将两个sharding组部署到三台服务器上,每个sharding组有三个replica set成员。

#Server1:

mkdir -p /elain/data/mongodb/shard11

mkdir -p /elain/data/mongodb/shard21

/elain/apps/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /elain/data/mongodb/shard11 --oplogSize 100 --logpath/elain/data/mongodb/shard11.log --logappend --fork --rest

/elain/apps/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /elain/data/mongodb/shard21 --oplogSize 100 --logpath/elain/data/mongodb/shard21.log --logappend --fork --rest

#Server2:

mkdir -p /elain/data/mongodb/shard12/

mkdir -p /elain/data/mongodb/shard22/

/elain/apps/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /elain/data/mongodb/shard12 --oplogSize 100 --logpath/elain/data/mongodb/shard12.log --logappend --fork --rest

/elain/apps/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /elain/data/mongodb/shard22 --oplogSize 100 --logpath/elain/data/mongodb/shard22.log --logappend --fork --rest

#Server3:

mkdir -p /elain/data/mongodb/shard13/

mkdir -p /elain/data/mongodb/shard23/

/elain/apps/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /elain/data/mongodb/shard13 --oplogSize 100 --logpath/elain/data/mongodb/shard13.log --logappend --fork --rest

/elain/apps/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /elain/data/mongodb/shard23 --oplogSize 100 --logpath/elain/data/mongodb/shard23.log --logappend --fork --rest

3、初始化Replica Set

通过命令行初始化两组Replica Set,通过mongo连接到一个mongod

/elain/apps/mongodb/bin/mongo
10.0.0.11:27017

config = {_id: ''''''''shard1'''''''',
members: [

{_id: 0, host: ''''''''10.0.0.11:27017''''''''},

{_id: 1, host: ''''''''10.0.0.12:27017''''''''},

{_id: 2, host: ''''''''10.0.0.14:27017''''''''}]};

rs.initiate(config);

/elain/apps/mongodb/bin/mongo
10.0.0.11:27018

config = {_id: ''''''''shard2'''''''',
members: [

{_id: 0, host: ''''''''10.0.0.11:27018''''''''},

{_id: 1, host: ''''''''10.0.0.12:27018''''''''},

{_id: 2, host: ''''''''10.0.0.14:27018''''''''}]};

rs.initiate(config);

4、启动并配置三台Config Server

#Server1、2、3:

mkdir -p /elain/data/mongodb/config/

/elain/apps/mongodb/bin/mongod --configsvr --dbpath/elain/data/mongodb/config/ --port 20000 --logpath/elain/data/mongodb/config1.log --logappend --fork

5、部署并配置三台Routing Server

指定所有的config sever地址参数,chunkSize是分割数据时每块(Chunk)的单位大小

#Server1、2、3:

/elain/apps/mongodb/bin/mongos --configdb10.0.0.11:20000,10.0.0.12:20000,10.0.0.14:20000 --port 30000 --chunkSize100 --logpath /elain/data/mongodb/mongos.log --logappend --fork

6、命令行添加分片

连接到mongs服务器,并切换到admin

/elain/apps/mongodb/bin/mongo
10.0.0.11:30000/admin

db.runCommand( {

addshard : "shard1/10.0.0.11:27017,10.0.0.12:27017,10.0.0.14:27017",

name:"shard1",

maxsize:2048,

allowLocal:true } );

db.runCommand( {

addshard : "shard2/10.0.0.11:27018,10.0.0.12:27018,10.0.0.14:27018",

name:"shard2",

maxsize:2048,

allowLocal:true } );

db.runCommand( { listshards : 1 } );

如果列出(sharding)了以上二个你加的shards,表示shards已经配置成功

#激活数据库分片

db.runCommand( { enablesharding : "elain" } );

要使单个collection也分片存储,需要给collection指定一个分片key,通过以下命令操作:

db.runCommand( { shardcollection : “”,key : db.chujq.t1.stats();

{

"sharded" : true,

"flags" : 1,

"ns" : "elain.test",

"count" : 4058977,

"numExtents" : 34,

"size" : 675039816,

"storageSize" : 818757632,

"totalIndexSize" : 131854352,

"indexSizes" : {

"_id_" : 131854352

},

"avgObjSize" : 166.30786919955446,

"nindexes" : 1,

"nchunks" : 14,

"shards" : {

"shard1" : {

"ns" : "elain.test",

"count" : 1860365,

"size" : 309376352,

"avgObjSize" : 166.29873815084673,

"storageSize" : 408920064,

"numExtents" : 16,

"nindexes" : 1,

"lastExtentSize" : 77955072,

"paddingFactor" : 1,

"flags" : 1,

"totalIndexSize" : 60371584,

"indexSizes" : {

"_id_" : 60371584

},

"ok" : 1

},

"shard2" : {

"ns" : "elain.test",

"count" : 2198612,

"size" : 365663464,

"avgObjSize" : 166.31559547569103,

"storageSize" : 409837568,

"numExtents" : 18,

"nindexes" : 1,

"lastExtentSize" : 74846208,

"paddingFactor" : 1,

"flags" : 1,

"totalIndexSize" : 71482768,

"indexSizes" : {

"_id_" : 71482768

},

"ok" : 1

}

},

"ok" : 1

}

删除片操作

mongos> db.runCommand({"removeshard" : "10.0.0.11:27018"});

{

"msg" : "draining
started successfully",

"state" : "started",

"shard" : "shard2",

"ok" : 1

}

再执行,可看到removeshard的挪动进度

mongos> db.runCommand({"removeshard" : "10.0.0.11:27018"});

{

"msg" : "draining
ongoing",

"state" : "ongoing",

"remaining" : {

"chunks" : NumberLong(3),

"dbs" : NumberLong(0)

},

"ok" : 1

}

例:

/elain/apps/mongodb/bin/mongod --config/elain/data/mongodb/shard1/shard1.properties --rest
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: