MongoDB 如何成为高手
MongoDB how to become master
我正在通过 linux 终端创建一个 MongoDB 数据库,我正在尝试为该数据库创建一个集合。
但是当我 运行 命令时:db.createCollection("mainCollection")
我收到以下错误消息:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }
我不太清楚这是什么意思。我怎样才能使数据库成为主人?
谢谢
这是预期的行为 "Viratan" 如果您正在查询副本集并且您连接的 shell 不是主节点。
这两件事你都可以做。
断开与当前 shell 的连接并与主连接。在 mongo shell 中,您会看到它写成 "PRIMARY" 或 "SECONDARY"。
如果您想要与主成员相同的成员,那么您可以增加该特定成员的优先级and/or强制 formar 主成员降级。一旦主要成员下台,就会进行选举,因为所需成员具有更高的优先级,将成为主要成员。
您可以按照以下link更改成员的优先级http://docs.mongodb.org/manual/tutorial/force-member-to-be-primary
一旦您以任何一种方式连接到 Primary,您就可以查询数据库并执行您的操作。
快乐的 Mongoing..:-)
-$
您已经使用 --replSet 选项(或等效的配置文件选项)启动了 mongod
。这将 mongod
置于一种模式,在该模式下它将不允许 任何 写入,直到它收到副本集配置。
对于现有的副本集,这是通过在副本集的现有主副本上执行 rs.add("<host>:<port>") 来完成的。
根据围绕这个问题的讨论,我认为您只有一个 MongoDB 实例,不打算拥有一个真正的多成员副本集。如果是这种情况,您有两个选择:
- 停止尝试 运行 副本集
- 停止
mongod
。
- 擦除
mongod
进程的数据目录。
- 在命令 line/config.
中不使用 --replSet
选项重新启动 mongod
进程
- 将
mongod
初始化为单节点副本集。
- 运行 rs.initiate() 来自 shell(不需要配置)。您将断开连接,但 shell 会自动重新连接,然后您可以创建集合并进行其他写入。
您正在尝试在 secondary.thats 上创建一个新集合,为什么它给出错误请使用主要创建新集合
我正在通过 linux 终端创建一个 MongoDB 数据库,我正在尝试为该数据库创建一个集合。
但是当我 运行 命令时:db.createCollection("mainCollection")
我收到以下错误消息:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }
我不太清楚这是什么意思。我怎样才能使数据库成为主人?
谢谢
这是预期的行为 "Viratan" 如果您正在查询副本集并且您连接的 shell 不是主节点。
这两件事你都可以做。
断开与当前 shell 的连接并与主连接。在 mongo shell 中,您会看到它写成 "PRIMARY" 或 "SECONDARY"。
如果您想要与主成员相同的成员,那么您可以增加该特定成员的优先级and/or强制 formar 主成员降级。一旦主要成员下台,就会进行选举,因为所需成员具有更高的优先级,将成为主要成员。 您可以按照以下link更改成员的优先级http://docs.mongodb.org/manual/tutorial/force-member-to-be-primary
一旦您以任何一种方式连接到 Primary,您就可以查询数据库并执行您的操作。
快乐的 Mongoing..:-)
-$
您已经使用 --replSet 选项(或等效的配置文件选项)启动了 mongod
。这将 mongod
置于一种模式,在该模式下它将不允许 任何 写入,直到它收到副本集配置。
对于现有的副本集,这是通过在副本集的现有主副本上执行 rs.add("<host>:<port>") 来完成的。
根据围绕这个问题的讨论,我认为您只有一个 MongoDB 实例,不打算拥有一个真正的多成员副本集。如果是这种情况,您有两个选择:
- 停止尝试 运行 副本集
- 停止
mongod
。 - 擦除
mongod
进程的数据目录。 - 在命令 line/config. 中不使用
--replSet
选项重新启动mongod
进程 - 停止
- 将
mongod
初始化为单节点副本集。- 运行 rs.initiate() 来自 shell(不需要配置)。您将断开连接,但 shell 会自动重新连接,然后您可以创建集合并进行其他写入。
您正在尝试在 secondary.thats 上创建一个新集合,为什么它给出错误请使用主要创建新集合