Horizontal scaling
Method of storing
data across multiple m/c
Shards stores user
related data
- Start Server service
mongod --configsvr
--dbpath C:\data\confdb --port 27019
- Start Agent service
mongos --configdb
localhost:27019
- Start Database server
mongod --dbpath
C:\data\sh1 --port 27020
- Start Client
C:\>mongo --host
localhost --port 27017
MongoDB shell
version: 2.6.5
connecting to:
localhost:27017/test
mongos>
mongos>
sh.status()
--- Sharding Status
---
sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" :
ObjectId("55936ac576a153b4e1f67c45")
}
shards:
databases:
{
"_id" : "admin",
"partitioned" : false,
"primary" : "config" }
- Adding shard
mongos>
sh.addShard("localhost:27020")
{
"shardAdded" : "shard0000", "ok" : 1 }
- Check status again
mongos>
sh.status()
---
Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" :
ObjectId("55936ac576a153b4e1f67c45")
}
shards:
{
"_id" : "shard0000",
"host" : "localhost:27020" }
databases:
{
"_id" : "admin",
"partitioned" : false,
"primary" : "config" }
Enable
sharding
mongos>
use mydb1
switched
to db mydb1
mongos>
sh.enableSharding("mydb1")
{
"ok" : 1 }
mongos>
db.createCollection("shTbl")
{
"ok" : 1 }
mongos>
db.shTbl.insert({x:1})
WriteResult({
"nInserted" : 1 })
mongos>
db.shTbl.find()
{
"_id" : ObjectId("55936e5fc7deef0077d13a9c"), "x"
: 1 }
mongos>
sh.status()
---
Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" :
ObjectId("55936ac576a153b4e1f67c45")
}
shards:
{
"_id" : "shard0000",
"host" : "localhost:27020" }
databases:
{
"_id" : "admin",
"partitioned" : false,
"primary" : "config" }
{
"_id" : "mydb1",
"partitioned" : true,
"primary" : "shard0000" }
mongos>
db.shTbl.ensureIndex({x:1})
{
"raw" : {
"localhost:27020" : {
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
},
"ok" : 1
}
mongos>
db.shTbl.getIndexex()
2015-07-01T10:09:05.018+0530
TypeError: Property 'getIndexex' of object mydb1.shTbl is not a functi
mongos>
db.shTbl.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" :
"_id_",
"ns" :
"mydb1.shTbl"
},
{
"v" : 1,
"key" : {
"x" : 1
},
"name" :
"x_1",
"ns" :
"mydb1.shTbl"
}
]
mongos>
sh.shardCollection("mydb1.shTbl",{"x":1})
{
"collectionsharded" : "mydb1.shTbl", "ok" : 1 }
mongos>
mongos>
sh.status()
---
Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" :
ObjectId("55936ac576a153b4e1f67c45")
}
shards:
{
"_id" : "shard0000",
"host" : "localhost:27020" }
databases:
{
"_id" : "admin",
"partitioned" : false,
"primary" : "config" }
{
"_id" : "mydb1",
"partitioned" : true,
"primary" : "shard0000" }
mydb1.shTbl
shard key: {
"x" : 1 }
chunks:
shard0000 1
{ "x" : {
"$minKey" : 1 } } -->> { "x" : { "$maxKey"
: 1 } } on : shard0000 Timestamp(1,
)
mongos>
mongos>
db.shTbl.insert({x:2})
WriteResult({
"nInserted" : 1 })
mongos>
db.shTbl.insert({x:3})
WriteResult({
"nInserted" : 1 })
mongos>
db.shTbl.insert({x:4})
WriteResult({
"nInserted" : 1 })
mongos>
mongos>
sh.status()
---
Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" :
ObjectId("55936ac576a153b4e1f67c45")
}
shards:
{
"_id" : "shard0000",
"host" : "localhost:27020" }
databases:
{
"_id" : "admin",
"partitioned" : false,
"primary" : "config" }
{
"_id" : "mydb1",
"partitioned" : true,
"primary" : "shard0000" }
mydb1.shTbl
shard key: {
"x" : 1 }
chunks:
shard0000 1
{ "x" : {
"$minKey" : 1 } } -->> { "x" : { "$maxKey"
: 1 } } on : shard0000 Timestamp(1,
)
mongos>
db.shTbl.find()
{
"_id" : ObjectId("55936e5fc7deef0077d13a9c"), "x"
: 1 }
{
"_id" : ObjectId("55936facc7deef0077d13a9d"), "x"
: 2 }
{
"_id" : ObjectId("55936fb7c7deef0077d13a9e"), "x"
: 3 }
{
"_id" : ObjectId("55936fbec7deef0077d13a9f"), "x"
: 4 }
mongos>
Test
the sharding by connecting to sharded client of port 27020
C:\>mongo
--port 27020
MongoDB
shell version: 2.6.5
connecting
to: 127.0.0.1:27020/test
>
show dbs
admin (empty)
local 0.078GB
mydb1 0.078GB
>
use mydb1
switched
to db mydb1
>
show collections
shTbl
system.indexes
>
db.shTbl.find()
{
"_id" : ObjectId("55936e5fc7deef0077d13a9c"), "x"
: 1 }
{
"_id" : ObjectId("55936facc7deef0077d13a9d"), "x"
: 2 }
{
"_id" : ObjectId("55936fb7c7deef0077d13a9e"), "x"
: 3 }
{
"_id" : ObjectId("55936fbec7deef0077d13a9f"), "x"
: 4 }
>
No comments:
Post a Comment