我部署了一个分片群集,当我尝试启用分片时,我收到以下错误。我试图在线找到解决方案,但无法解决这个问题。
我执行了以下操作来启动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
答案 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都有单元详细解释副本集和分片部署。
如果您遵循这些教程,则应该非常容易理解文档中列出的教程。从您的上述内容来看,您并没有真正关注那里所说的内容。