2013-08-22 105 views
0

我一直在下面的教程中的步骤进行部署副本集开发/测试环境:http://docs.mongodb.org/manual/tutorial/deploy-replica-set/#deploy-a-development-or-test-replica-setMongoDB副本集不同步?

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

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


例如,我有一个MongoShell连接到主要和我运行的命令:

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

这产生了“testCol”收集和插入值到它。

当我这样做:

show collections 

的“testCol”收集精细显示了,我插入的内容存在。

我的问题是:副本不应该与主节点同步并将集合和项目复制过来?

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

我只是误解副本集的工作方式,或者是否有其他需要设置的副本来复制插入操作?

我遵循了我在开始给出的链接中的说明,所以我设置的任何配置都完全相同。

+1

请寄出'rs.status()'。'完全相同'的输出是棘手的,因为样本有占位符,例如''。你的主机名是什么?如果您发布了确切的配置,这将有所帮助。同时检查你的防火墙设置(尝试直接从控制台连接到每个'mongod')。 – mnemosyn

回答

1

那真是令人尴尬。

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

回想一下副本集的设置说明,我不太清楚在哪里配置了MongoShell连接到test,但连接到该数据库并对主要进行更改似乎修复了一切。


这里是我的MongoShell如何连接到主看上去像:

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

在蒙戈壳,db是引用当前 数据库的变量。该变量会自动设置为默认数据库 测试或当您使用该用途切换当前数据库时设置。

我想这意味着没有参数可以通过,你必须手动执行use <db>


找到了!

如果你建立一个快捷方式到mongo.exe,设置此为您的目标:

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

以前我只用了--port参数,但添加在休息让我直接在一个特定的数据库启动。