0

我一直在按照教程中的步骤将副本集部署到开发/测试环境:http ://docs.mongodb.org/manual/tutorial/deploy-replica-set/#deploy-a-development-or -测试副本集

我运行了三个 mongod.exe 实例,并且所有三个都能够正确连接。

我想在插入发生时验证辅助节点是否正确同步到主节点,但是当我执行插入时,似乎没有任何迹象表明辅助节点正在执行。


例如,我有一个连接到主节点的 MongoShell 并运行以下命令:

db.createCollection("testCol")
db.testCol.insert( { item: "card", qty: 15 } )

这将创建“testCol”集合并在其中插入一个值。

当我做:

show collections

'testCol' 集合显示正常,并且我插入的项目存在。

我的问题是: 辅助节点不应该与主节点同步并复制集合和项目吗?

启动另一个 MongoShell 并连接到其中一个辅助服务器,我看到我在主服务器上创建的集合没有显示出来。

我只是误解了 Replica Sets 的工作原理,还是我需要设置其他东西才能让辅助节点复制插入操作?

我按照开头给出的链接中的说明进行操作,因此我设置的任何配置都完全相同。

4

1 回答 1

1

嗯,这很尴尬。

原来我正在查看我这边的错误数据库。按照我的配置方式,我需要使用一个名为的数据库test,但我一直在local.

回顾 Replica Sets 的设置说明,我不太确定我在哪里配置 MongoShell 以连接到test,但连接到该数据库并在 Primary 上进行更改似乎可以解决所有问题。


这是我的 MongoShell 连接到 Primary 的样子:

MongoDB shell version: 2.4.5
connecting to: 127.0.0.1.27017/test

test也许在我第一次设置 MongoDB 时配置了连接?现在还不太确定。


再环顾四周,似乎当您连接 MongoShell 时,它会自动连接到test数据库。不知道如何更改我正在使用的快捷方式中的参数以使其指向不同的数据库。


http://docs.mongodb.org/manual/reference/mongo-shell/#basic-shell-javascript-operations

在 mongo shell 中,db 是引用当前数据库的变量。该变量自动设置为默认数据库 test 或在您使用 use 切换当前数据库时设置。

我想这意味着您没有可以传入的参数,而您必须use <db>手动执行?


找到了!

如果您设置 mongo.exe 的快捷方式,请将其设置为目标:

C:\mongodb\bin\mongo.exe <db name> --host <host> --port <port>

以前我只有--port参数,但添加其余参数允许我直接在特定数据库中启动。

于 2013-08-23T14:12:56.173 回答