我正在尝试基于分片键的分片收集:寻找帮助我发现我可以做到这一点
sh.shardCollection("database.collection", myKey)
但是当我这样做时,我会收到消息
{ "ok" : 0, "errmsg" : "sharding not enabled for db" }
我mongod --configsvr
也开始了mongod --shardsvr
,所以我认为我已经启用了分片。知道我该怎么做吗?
其实一切都很简单。您需要做的就是为您的数据库启用分片(是的,它有点写在错误消息中)。
你可以这样做sh.enableSharding(database)
要查看分片命令,您可以执行此操作sh.help()
,这将输出您是命令列表及其描述。在那里你可以找到这个 enableSharding。
还要记住,在进行分片之前,您的 myKey 上需要有 indeces(否则您会收到一些关于 indeces 的错误)。因此,如果您还没有这样做 - 之前创建它们db.collection.ensureIndex(myKey)
例如,这会将散列分片索引和分片键添加到生成的 _id 字段 - 不建议使用它,这只是如何启用分片的示例
sh.enableSharding("mydatabase")
use mydatabase
var shardKey = { "_id": "hashed" }
db.customers.createIndex(shardKey)
sh.shardCollection( "mydatabase.customers", shardKey)