【问题标题】:Not able to enable sharding无法启用分片
【发布时间】:2014-02-17 09:34:57
【问题描述】:

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

我执行了以下操作来启动 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
}

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

同时,我无法在配置以外的数据库中创建普通集合

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>

谁能告诉我,出了什么问题?

谢谢, 拉古

【问题讨论】:

  • 您是否尝试在配置服务器数据库上启用共享?或者你有你自己的名为“config”的数据库。我怀疑这里有名称冲突。
  • 顺便说一句,mongo --configdb 应该不是必需的。要启动 shell,你应该执行 'mongo localhost:27019',这是你运行 mongos 路由守护进程的地方,但我同意 Neil 的观点,我会避免在配置服务器的默认端口上运行你的 mongos。

标签: mongodb sharding


【解决方案1】:

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

mongo --configdb 127.0.0.1:27019

当然没有什么好处,因为mongo 是外壳,而不是需要通知此类选项的任何东西。

这也是一个真的坏主意

mongos --configdb 127.0.0.1:27018 --port 27019

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

我只能像你在original questionsharding tutorial 中所做的那样指出你,并实际上 遵循它。

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

也许你应该开始replica set's as a tutorial 开始,然后把它们变成碎片。或者可能查看可用的MongoDB university 课程(免费)。 M101 或 M102 都有详细解释副本集和分片部署的单元。

文档中列出的教程应该很容易遵循,如果你遵循它们。从您上面的内容来看,您并没有真正遵循那里所说的内容。

【讨论】:

    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多