无法创建分片:未对db启用分片

时间:2013-11-12 00:53:21

标签: mongodb sharding

我正在尝试基于分片键进行分片收集: 寻求帮助我看到我可以做到这一点 sh.shardCollection("database.collection", myKey)

但是当我这样做时,我会收到消息

{ "ok" : 0, "errmsg" : "sharding not enabled for db" }

我开始mongod --configsvrmongod --shardsvr,所以我认为我已经启用了分片。知道我该怎么办?

2 个答案:

答案 0 :(得分:2)

实际上一切都很简单。您需要做的就是为数据库启用分片(是的,它是在错误信息中编写的)。

您可以使用sh.enableSharding(database)

执行此操作

要查看用于分片的命令,您可以执行sh.help(),这将输出您的命令列表及其说明。在那里你可以找到这个enableSharding。

另外请记住,在进行分片之前,你需要在myKey上使用indeces(否则你会收到一些关于indeces的错误)。因此,如果您还没有这样做 - 请先使用db.collection.ensureIndex(myKey)

创建它们

答案 1 :(得分:0)

例如,这会向生成的_id字段中添加哈希分片索引和分片键-不建议使用此方法,这只是如何启用分片的一个示例

sh.enableSharding("mydatabase")
use mydatabase
var shardKey = { "_id": "hashed" }
db.customers.createIndex(shardKey)
sh.shardCollection( "mydatabase.customers", shardKey)