首先这是正常的,因为SECONDARY是不允许读写的, 在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。
对于replica set 中的secondary 节点默认是不可读的,
[mongodb@ligh bin]$ mongo 127.0.0.1:33333
MongoDB shell version: 2.0.1
connecting to: 127.0.0.1:33333/test
SECONDARY> db.user.find()
error: { "$err" : "not master and slaveok=false", "code" : 13435 }
SECONDARY> db.getMongo()
connection to 127.0.0.1:33333
SECONDARY> db.getMongo().setSlaveOk();
not master and slaveok=false
在主库上设置 slaveok=ok
[mongodb@ligh bin]$ mongo 127.0.0.1:33333
MongoDB shell version: 2.0.1
connecting to: 127.0.0.1:33333/test
PRIMARY> db.getMongo().setSlaveOk();
PRIMARY>
在从库进行测试
SECONDARY> db.user.find()
{ "_id" : ObjectId("4eb68b1540643e10a0000000"), "id" : 1, "name" : "zhangsan" }
{ "_id" : ObjectId("4eb68b1540643e10a0000001"), "id" : 2, "name" : ";lisi" }
另外可参考如下解决方案:
http://stackoverflow.com/questions/8990158/mongdodb-replicates-and-error-err-not-master-and-slaveok-false-code
转自 http://blog.163.com/lgh_2002/blog/static/44017526201301123736391/
相关推荐
使用mongodb时,出现“not master and slaveok=false”错误,原因是secondary不允许读写。 因为系统中mongodb做了主备,主备切换了,也可能导致这个问题。 把命令mongo –username=root –password=123456 –host=...
总之,解决 "not master and slaveok=false" 错误的关键在于理解MongoDB的副本集机制和读写策略,以及正确配置客户端连接。通过适当监控和管理副本集,可以避免这类问题,并确保数据库系统的稳定运行。了解和掌握...
在 MongoDB 副本集中,存在一些常见的问题,例如从库中无法查看数据的原因是 not master and slaveOk=false,解决办法是从库中执行 rs.slaveOk() 命令。 MongoDB 副本集搭建需要经过多个步骤,包括安装环境准备、...
2. **处理“not master and slaveOk=false”错误**: - 当在从服务器尝试查询时,可能会遇到上述错误。 - 解决方案是启用`slaveOk()`选项: ```javascript rs.slaveOk(); ``` #### 六、日志检查与总结 1. **...
- "not master and slaveok=false"错误提示表明MongoDB集群的主从复制配置存在问题,需要调整复制配置。 通过熟悉这些常见问题和解决方案,可以更有效地管理和维护MongoDB数据库系统,确保其稳定运行。在实际操作中...
- 初始化过程中可能出现错误,如“not master and slaveOk=false”。这时需要执行`rs.initiate()`命令,并确保提供正确的服务器信息。 - 指定的主机信息和端口至关重要,否则初始化可能会失败。确保在初始化命令中...
但是由于默认配置,从节点不允许读操作,所以会出现错误`"not master and slaveOk=false"`。为了解决这个问题,我们需要调用`rs.slaveOk()`允许从节点进行只读操作。之后,`show tables`命令会列出数据库中的表,而`...