2015-06-24 49 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

相关问题