MongoDB實戰系列之五:mongodb的分片配置
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:</p>
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
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
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
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 );
{_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
/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 --chunkSize 100 --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 } );
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
}
{
"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
}
{
"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
}
{
"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
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!