2013-08-22 118 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參數,但添加在休息讓我直接在一個特定的數據庫啓動。