好玩的事情要记录下来~

Mongodb Sharding

分片组建:

Shards(建议用Replica)、Query Routers、Config Servers。

Shardsstore the data. To provide high availability and dataconsistency, in a production sharded cluster, each shard is areplica set.For more information on replica sets, seeReplicaSets.

Query Routers, orinstances, interface with clientapplications and direct operations to the appropriate shard or shards. Thequery router processes and targets operations to shards and then returnsresults to the clients. A sharded cluster can contain more than one queryrouter to divide the client request load. A client sends requests to one queryrouter. Most sharded clusters have many query routers.

Config serversstore thecluster’s metadata. This data contains a mapping of the cluster’s data set tothe shards. The query router uses this metadata to target operations tospecific shards. Production sharded clusters haveexactly3 config servers.

For development and testing purposes only, eachshardcan be a singleinstead of a replica set. Donotdeploy production clusters without 3 config servers.

分片类型:Range和Hash

比较总结:线性用range散列用hash。

详细的就不从官网复制了。

环境准备:分片结构分布如下:

ShardServer 1:27020

ShardServer 2:27021

ShardServer 3:27022

ShardServer 4:27023

ConfigServer :27100

RouteProcess:40000

ShardServer 5:27024(模拟新增服务节点)

步骤一:启动Shard Server

mongod–port 27020 –dbpath=F:\DingSai\Mongodb\shard\rs1\data–logpath=F:\DingSai\Mongodb\shard\rs1\logs\mongodb.log –logappend

mongod–port 27021 –dbpath=F:\DingSai\Mongodb\shard\rs2\data–logpath=F:\DingSai\Mongodb\shard\rs2\logs\mongodb.log –logappend

mongod–port 27022 –dbpath=F:\DingSai\Mongodb\shard\rs3\data–logpath=F:\DingSai\Mongodb\shard\rs3\logs\mongodb.log –logappend

mongod–port 27023 –dbpath=F:\DingSai\Mongodb\shard\rs4\data –logpath=F:\DingSai\Mongodb\shard\rs4\logs\mongodb.log–logappend

步骤二: 启动ConfigServer

mongod–port 27100 –dbpath=F:\DingSai\Mongodb\shard\config\data–logpath=F:\DingSai\Mongodb\shard\config\logs\mongodb.log –logappend

注意:这里我们完全可以像启动普通mongodb服务一样启动,不需要添加—shardsvr和configsvr参数。因为这两个参数的作用就是改变启动端口的,所以我们自行指定了端口就可以。

步骤三: 启动RouteProcess

mongos –port 40000 –configdblocalhost:27100–logpath=F:\DingSai\Mongodb\shard\RouteProcess\logs\route.log –chunkSize 500

mongos启动参数中,chunkSize这一项是用来指定chunk的大小的,单位是MB,默认大小为200MB.

步骤四: 配置Sharding

接下来,我们使用MongoDB Shell登录到mongos,添加Shard节点

bin/mongoadmin –port 40000

MongoDBshell version: 2.0.7

connectingto: 127.0.0.1:40000/admin

useadmin

mongos>db.runCommand({ addshard:"localhost:27020" })

mongos>db.runCommand({ addshard:"localhost:27021" })

mongos>db.runCommand({ addshard:"localhost:27022" })

mongos>db.runCommand({ addshard:"localhost:27023" })

–可以添加节点名db.runCommand({addshard : "192.168.253.212:27017", "name" : "XXX Server" });

–对数据库 ding 启用分片

mongos>db.runCommand({ enablesharding:"ding" })

–对数据库 ding 下面的 c2 表,启用分片–按照 _id 列进行分片

mongos>db.runCommand({shardcollection: "ding.c2", key: {_id:1}}

步骤五:测试插入数据:

mongoadmin –port 40000

–切换数据库

useding

##插入5万行

mongos>for(var i=0;i<500;i++){ db.c2.insert({name:’dingsai’+i,seq:i}) }

##查看记录

mongos> db.c2.find().count()

–查看分片状态

db.printShardingStatus()

或者sh.status();

mongos> db.printShardingStatus()

—Sharding Status —

sharding version: {

"_id" : 1,

"version" : 4,

"minCompatibleVersion" : 4,

"currentVersion" : 5,

"clusterId" :ObjectId("54dffdc6d33e0feb326a8f90")

}

shards:

{"_id" : "shard0000","host" : "localhost:27020" }

{"_id" : "shard0001","host" : "localhost:27021" }

{"_id" : "shard0002","host" : "localhost:27022" }

{"_id" : "shard0003","host" : "localhost:27023" }

databases:

{"_id" : "ding","partitioned" : true,"primary" : "shard0001" }

ding.c2

shard key: {"_id" : 1 }

chunks:

追寻爱情,然后发现,爱,从来就是一件千回百转的事。

好玩的事情要记录下来~

相关文章:

你感兴趣的文章:

标签云: