標籤:style http color 使用 io strong for ar
首先這是正常的,因為SECONDARY是不允許讀寫的,
在寫多讀少的應用中,使用Replica Sets來實現讀寫分離。通過在串連時指定或者在主庫指定slaveOk,由Secondary來分擔讀的壓力,Primary只承擔寫操作。
對於replica set 中的secondary 節點預設是不可讀的,
[[email protected] bin]$ mongo 127.0.0.1:33333MongoDB shell version: 2.0.1connecting to: 127.0.0.1:33333/testSECONDARY> db.user.find()error: { "$err" : "not master and slaveok=false", "code" : 13435 }SECONDARY> db.getMongo()connection to 127.0.0.1:33333SECONDARY> db.getMongo().setSlaveOk();not master and slaveok=false 在主庫上設定 slaveok=ok[[email protected] bin]$ mongo 127.0.0.1:33333MongoDB shell version: 2.0.1connecting to: 127.0.0.1:33333/testPRIMARY>
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