在分片集群里,如果数据库已经用sh.enableSharding("dbname")来启用分片的功能,但collection没有设置片键,那么这个集合所有的数据都只存放到一个叫做主分片(primary shard)的分片里,是不会自动分散到各个分片中的。我们可以用sh.status()来查看这个数据库的主分片。
比如下面的例子里test数据库启用了分片功能,sh.status()结果里的"primary" : "shard0000" 表明这个数据库的主分片是"shard0000"。
mongos> sh.enableSharding("test")
{ "ok" : 1 }
mongos> sh.status()
--- Sharding Status ---
sharding version: { "_id" : 1, "version" : 3 }
shards:
{ "_id" : "shard0000", "host" : "localhost:40000" }
{ "_id" : "shard0001", "host" : "localhost:40001" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : true, "primary" : "shard0000" }
|