无法启用分片

时间:2014-02-17 09:34:57

标签: mongodb sharding

我部署了一个分片群集,当我尝试启用分片时,我收到以下错误。我试图在线找到解决方案,但无法解决这个问题。

我执行了以下操作来启动mongod / mongos和mongo实例

mongod --configsvr --dbpath /data/configdb --port 27018
mongos --configdb 127.0.0.1:27018 --port 27019
mongo --configdb 127.0.0.1:27019

在mongos中:

mongos> sh.enableSharding("config")
{
"errmsg" : "exception: assertion src/mongo/s/config.cpp:155",
"code" : 0,
"ok" : 0
}

另外,我可以在这里创建普通集合,但不能创建分片集合。

同时,我无法在db除了config

之外创建普通集合
mongos> show dbs
admin   (empty)
config  0.046875GB
configdb    (empty)
raghu   (empty)
test    (empty)
mongos> 
mongos> use test
switched to db test
mongos>
mongos> sh.enableSharding("test")
{ "ok" : 0, "errmsg" : "already enabled" }
mongos> db.cTest.save({Name: "Frank", Age:56, Job: "Accountant", State: "NY"});
can't create user databases on a --configsvr instance
mongos>

有人可以告诉我,会出现什么问题吗?

谢谢, Raghu

1 个答案:

答案 0 :(得分:0)

我不知道这条线应该做什么:

  

mongo --configdb 127.0.0.1:27019

当然没什么好处,因为mongo是shell而不是任何需要被告知这种选择的东西。

这也是一个真的坏主意

  

mongos --configdb 127.0.0.1:27018 --port 27019

一般来说,您希望mongos实例使用default端口(27017)来使您的应用程序更容易。然后,使用mongo shell的后续连接应该是mongos而不是基础mongod实例。因此,在mongos以外的其他端口上启动其他所有内容

我只能按照您original question所提供的sharding tutorial以及实际关注它来指回您。

您似乎真的缺少一些分片概念,因为任何分片应该有多个副本集成员,并且您需要多个分片。

也许您应该使用replica set's as a tutorial启动,然后将其转换为分片。或者可以查看可用的MongoDB university课程(免费)。 M101或M102都有单元详细解释副本集和分片部署。

如果您遵循这些教程,则应该非常容易理解文档中列出的教程。从您的上述内容来看,您并没有真正关注那里所说的内容。