MongoDB副本集不同步?

时间:2013-08-22 18:07:28

标签: mongodb mongodb-.net-driver database-replication

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

我有三个运行mongod.exe的实例,并且这三个实例都能正常连接。

我想在插件发生时验证Secondaries是否正确同步到Primary,但是当我执行Insert时,似乎没有任何迹象表明Secondaries正在跟进。


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

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

这会创建'testCol'集合并在其中插入一个值。

当我这样做时:

show collections

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

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

启动另一个MongoShell并连接到其中一个Secondaries,我发现我在Primary上创建的集合没有显示。

我只是误解了副本集的工作原理,还是我需要设置其他东西才能让Secondaries复制插入动作?

我按照我在开头提供的链接中的说明进行操作,因此我设置的所有配置都完全相同。

1 个答案:

答案 0 :(得分:1)

那太令人尴尬了。

原来我正在查看我身边不正确的数据库。我配置的方式,我需要使用名为test的数据库,但我一直在local上插入。

回顾副本集的设置说明,我不太确定将MongoShell配置为连接到test的位置,但是连接到该数据库并对主节点进行更改似乎可以解决所有问题。< / p>


以下是我的MongoShell连接到Primary的方式:

MongoDB shell version: 2.4.5
connecting to: 127.0.0.1.27017/test

首次设置MongoDB时,可能是否配置了与test的连接?现在不太确定。


再看一下,看起来当你连接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参数,但在其余部分添加允许我直接在特定数据库中启动。