hard" : 3 }
{ "_id" : ObjectId("5bb23444f116ff2bb6014824"), "name" : "a", "shard" : 4 }
{ "_id" : ObjectId("5bb2344af116ff2bb6014826"), "name" : "a", "shard" : 6 }
{ "_id" : ObjectId("5bb23419f116ff2bb6014821"), "name" : "a", "shard" : 1 }
{ "_id" : ObjectId("5bb23448f116ff2bb6014825"), "name" : "a", "shard" : 5 }
分别通过mongo客户端直接向三个分片服务器节点查询,可以看到三个节点上各自有一部分数据。
[root@coe2coe route]# mongo --quiet --port=27017
> use test
switched to db test
> db.t2.find();
{ "_id" : ObjectId("5bb2344af116ff2bb6014826"), "name" : "a", "shard" : 6 }
[root@coe2coe route]# mongo --quiet --port=27018
> use test
switched to db test
> db.t2.find();
{ "_id" : ObjectId("5bb2341df116ff2bb6014822"), "name" : "a", "shard" : 2 }
{ "_id" : ObjectId("5bb2341ff116ff2bb6014823"), "name" : "a", "shard" : 3 }
{ "_id" : ObjectId("5bb23444f116ff2bb6014824"), "name" : "a", "shard" : 4 }
[root@coe2coe route]# mongo --quiet --port=27019
> use test
switched to db test
> db.t2.find();
{ "_id" : ObjectId("5bb23419f116ff2bb6014821"), "name" : "a", "shard" : 1 }
{ "_id" : ObjectId("5bb23448f116ff2bb6014825"), "name" : "a", "shard" : 5 }
至此哈希分片功能已经实现。
5.标签分片
对t3集合进行标签分片,分片字段为shard。
先添加几个标签。
mongos> use config
switched to db config
mongos> db.shards.find();
{ "_id" : "shard0000", "host" : "11.1.1.11:27017", "state" : 1 }
{ "_id" : "shard0001", "host" : "11.1.1.11:27018", "state" : 1 }
{ "_id" : "shard0002", "host" : "11.1.1.11:27019", "state" : 1 }
mongos> sh.addShardTag("shard0000","tag1");
{
"ok" : 1,
"operationTime" : Timestamp(1538405808, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1538405808, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
mongos> sh.addShardTag("shard0001","tag2");
{
"ok" : 1,
"operationTime" : Timestamp(1538405813, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1538405813, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
mongos> sh.addShardTag("shard0002","tag3");
{
"ok" : 1,
"operationTime" : Timestamp(1538405817, 2),
"$clusterTime" : {
"clusterTime" : Timestamp(1538405817, 2),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
为t3集合的shard字段设置标签。
shard值小于100的文档分配标签tag1,100到1000的分配标签tag2,1000以上的分配tag3。
mongos> use test
switched to db t