2015-06-24 45 views
0

我已經在本地機器上設置了一個mongodb副本集,並在名爲「adaptive-db」的數據庫中創建了幾個集合。從mongo shell中,當我連接到主節點並運行show dbs時,我可以看到並查詢我的數據庫「adaptive-db」。MongoDB輔助副本沒有集合,因爲在主節點

然後,我切換到輔助,並運行rs.slaveOk()期望看到p​​rimary中創建的「adaptive-db」也存在於輔助中,但我沒有看到它。

這裏是我跑的命令:

shell:bin user1$ ./mongo localhost:27017 
MongoDB shell version: 3.0.2 
connecting to: localhost:27017/test 
rs0:PRIMARY> show dbs 
adaptive-db 0.125GB 
local  0.281GB 
rs0:PRIMARY> use adaptive-db 
switched to db adaptive-db 
rs0:PRIMARY> show collections 
people 
student 
system.indexes 
rs0:PRIMARY> db.people.find().count() 
6003 
rs0:PRIMARY> exit 
bye 


shell:bin user1$ ./mongo localhost:27018 
MongoDB shell version: 3.0.2 
connecting to: localhost:27018/test 
rs0:SECONDARY> show dbs 
2015-06-25T11:16:40.751-0400 E QUERY Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" } 
    at Error (<anonymous>) 
    at Mongo.getDBs (src/mongo/shell/mongo.js:47:15) 
    at shellHelper.show (src/mongo/shell/utils.js:630:33) 
    at shellHelper (src/mongo/shell/utils.js:524:36) 
    at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47 
rs0:SECONDARY> rs.slaveOk() 
rs0:SECONDARY> show dbs 
admin 0.031GB 
local 0.281GB 
rs0:SECONDARY> 

有人可以PLZ解釋我爲什麼?這裏是我的rs.conf():

rs0:SECONDARY> rs.conf() 
{ 
    "_id" : "rs0", 
    "version" : 7, 
    "members" : [ 
     { 
      "_id" : 0, 
      "host" : "localhost:27017", 
      "arbiterOnly" : false, 
      "buildIndexes" : true, 
      "hidden" : false, 
      "priority" : 1, 
      "tags" : { 

      }, 
      "slaveDelay" : 0, 
      "votes" : 1 
     }, 
     { 
      "_id" : 1, 
      "host" : "localhost:27018", 
      "arbiterOnly" : false, 
      "buildIndexes" : true, 
      "hidden" : false, 
      "priority" : 1, 
      "tags" : { 

      }, 
      "slaveDelay" : 0, 
      "votes" : 1 
     }, 
     { 
      "_id" : 2, 
      "host" : "localhost:27019", 
      "arbiterOnly" : false, 
      "buildIndexes" : true, 
      "hidden" : false, 
      "priority" : 1, 
      "tags" : { 

      }, 
      "slaveDelay" : 0, 
      "votes" : 1 
     } 
    ], 
    "settings" : { 
     "chainingAllowed" : true, 
     "heartbeatTimeoutSecs" : 10, 
     "getLastErrorModes" : { 

     }, 
     "getLastErrorDefaults" : { 
      "w" : 1, 
      "wtimeout" : 0 
     } 
    } 
} 

感謝

+0

請,發佈命令輸出時,使用代碼格式。它使事情變得更可讀。 – Fox

回答

1

我猜了一點,但你所看到的其他藏品來看,你在local數據庫。其中,顧名思義不會被複制(它包含oplog,startup_log和其他類似的東西,這些是特定於實例的,如果被複制的話會被搞砸)。

使用不同的數據庫。連接到127.0.0.1/somedb(使用適當的IP /主機名),或者做use somedb,以在控制檯中切換數據庫。然後創建集合,這些應該得到複製(當然,在我的例子中爲somedb)。

+0

感謝您的糾正,我將我的集合移動到一個新的數據庫,但它仍然無法正常工作。我更新了我用最新的命令序列更新了我的問題,我用新的數據庫運行 – aazeem

+0

@ user1437795是您的奴隸最新? rs.status()是什麼意思?或'rs.conf()'... – Fox

+0

更新:我最初在「本地」數據庫的集合,然後將其移動到自定義數據庫使用:db.runCommand({renameCollection:「local.student」,到: 「自適應db.student」})。但是,當我試圖創建一個全新的數據庫,並在其中的新集合,複製工作正常。所以,我猜想與「renameCollection」有關。我已經用rs.conf() – aazeem

相關問題