1.已经被sharding的文档建立唯一索引
- mongos> db.testmongo.ensureIndex({'age':1,'name':1},{"unique":1})
- {
- "raw" : {
- "shard1/172.31.32.223:27001,172.31.35.47:27001,172.31.37.105:27001" : {
- "createdCollectionAutomatically" : false,
- "numIndexesBefore" : 1,
- "ok" : 0,
- "errmsg" : "cannot create unique index over { age: 1.0, name: 1.0 } with shard key pattern { _id: 1.0 }",
- "code" : 67,
- "codeName" : "CannotCreateIndex",
- "$gleStats" : {
- "lastOpTime" : {
- "ts" : Timestamp(1529656402, 42),
- "t" : NumberLong(6)
- },
- "electionId" : ObjectId("7fffffff0000000000000006")
- }
- },
- "shard2/172.31.32.223:27002,172.31.35.47:27002,172.31.37.105:27002" : {
- "createdCollectionAutomatically" : true,
- "numIndexesBefore" : 1,
- "numIndexesAfter" : 2,
- "ok" : 1,
- "$gleStats" : {
- "lastOpTime" : {
- "ts" : Timestamp(1529656406, 2),
- "t" : NumberLong(7)
- },
- "electionId" : ObjectId("7fffffff0000000000000007")
- }
- },
- "shard3/172.31.32.223:27003,172.31.35.47:27003,172.31.37.105:27003" : {
- "createdCollectionAutomatically" : true,
- "numIndexesBefore" : 1,
- "numIndexesAfter" : 2,
- "ok" : 1,
- "$gleStats" : {
- "lastOpTime" : {
- "ts" : Timestamp(1529656406, 2),
- "t" : NumberLong(6)
- },
- "electionId" : ObjectId("7fffffff0000000000000006")
- }
- }
- },
- "code" : 67,
- "ok" : 0,
- "errmsg" : "{ shard1/172.31.32.223:27001,172.31.35.47:27001,172.31.37.105:27001: \"cannot create unique index over { age: 1.0, name: 1.0 } with shard key pattern { _id: 1.0 }\" }"
- }
- mongos> db.testmongo.ensureIndex({'_id':1,'age':1,'name':1},{"unique":1})
- {
- "raw" : {
- "shard1/172.31.32.223:27001,172.31.35.47:27001,172.31.37.105:27001" : {
- "createdCollectionAutomatically" : false,
- "numIndexesBefore" : 1,
- "numIndexesAfter" : 2,
- "ok" : 1,
- "$gleStats" : {
- "lastOpTime" : {
- "ts" : Timestamp(1529656437, 1),
- "t" : NumberLong(6)
- },
- "electionId" : ObjectId("7fffffff0000000000000006")
- }
- },
- "shard2/172.31.32.223:27002,172.31.35.47:27002,172.31.37.105:27002" : {
- "createdCollectionAutomatically" : false,
- "numIndexesBefore" : 2,
- "numIndexesAfter" : 3,
- "ok" : 1,
- "$gleStats" : {
- "lastOpTime" : {
- "ts" : Timestamp(1529656437, 1),
- "t" : NumberLong(7)
- },
- "electionId" : ObjectId("7fffffff0000000000000007")
- }
- },
- "shard3/172.31.32.223:27003,172.31.35.47:27003,172.31.37.105:27003" : {
- "createdCollectionAutomatically" : false,
- "numIndexesBefore" : 2,
- "numIndexesAfter" : 3,
- "ok" : 1,
- "$gleStats" : {
- "lastOpTime" : {
- "ts" : Timestamp(1529656437, 1),
- "t" : NumberLong(6)
- },
- "electionId" : ObjectId("7fffffff0000000000000006")
- }
- }
- },
- "ok" : 1
- }
已经被shard的collection 唯一索引的前缀必须是分片健
2.已经建立唯一索引的collection去shard
- mongos> db.testtt.getIndexes()
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "welike_mongo.testtt"
},
{
"v" : 2,
"unique" : true,
"key" : {
"age" : 1,
"name" : 1
},
"name" : "age_1_name_1",
"ns" : "welike_mongo.testtt"
}
]
- mongos> sh.shardCollection("welike_mongo.testtt",{_id:1})
- {
- "ok" : 0,
- "errmsg" : "can't shard collection 'welike_mongo.testtt' with unique index on { age: 1.0, name: 1.0 } and proposed shard key { _id: 1.0 }. Uniqueness can't be maintained unless shard key is a prefix"
- }
- mongos> sh.shardCollection("welike_mongo.testtt",{'name':1})
- {
- "ok" : 0,
- "errmsg" : "can't shard collection 'welike_mongo.testtt' with unique index on { age: 1.0, name: 1.0 } and proposed shard key { name: 1.0 }. Uniqueness can't be maintained unless shard key is a prefix"
- }
- mongos> sh.shardCollection("welike_mongo.testtt",{'age':1})
- { "collectionsharded" : "welike_mongo.testtt", "ok" : 1 }
已建立唯一索引的collect 去shard 。分片字段必须是唯一索引的前缀
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-2156524/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29096438/viewspace-2156524/