MongoDB系列四:解決secondary的讀操作
在Replica sets 中的secondary節點預設是不可讀的。
使用Replica Sets實現讀寫分離。透過在連線時指定或者在主庫指定slaveOk,由Secondary來分擔讀的壓力,Primary只承擔寫操作。
使用Replica Sets實現讀寫分離。透過在連線時指定或者在主庫指定slaveOk,由Secondary來分擔讀的壓力,Primary只承擔寫操作。
在secondary上,訪問mongo,進行查詢。會出現如下錯誤:
這樣連線後,可以直接查詢。
rs:SECONDARY> db.sponsor.find();
Error: error: { "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 }
Error: error: { "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 }
一、使用shell有兩種方法實現secondary的查詢:
1、
> db.getMongo().setSlaveOk();
2、
echo "rs.slaveOk();" > ~/.mongorc.js
> db.getMongo().setSlaveOk();
2、
echo "rs.slaveOk();" > ~/.mongorc.js
二、透過Java訪問secondary
異常:
異常:
com.mongodb.MongoException: not talking to master and retries used up
1、
dbFactory.getDb().slaveOk();
2、
dbFactory.getDb().setReadPreference(ReadPreference.secondaryPreferred());
//在複製集中優先讀secondary,如果secondary訪問不了的時候就從master中讀
或
dbFactory.getDb().setReadPreference(ReadPreference.secondary());
//只從secondary中讀,如果secondary訪問不了的時候就不能進行查詢
3、
在配置mongo的時候增加slave-ok="true",支援直接從secondary中讀。
<mongo:options slave-ok="true"/>
1、
dbFactory.getDb().slaveOk();
2、
dbFactory.getDb().setReadPreference(ReadPreference.secondaryPreferred());
//在複製集中優先讀secondary,如果secondary訪問不了的時候就從master中讀
或
dbFactory.getDb().setReadPreference(ReadPreference.secondary());
//只從secondary中讀,如果secondary訪問不了的時候就不能進行查詢
3、
在配置mongo的時候增加slave-ok="true",支援直接從secondary中讀。
<mongo:options slave-ok="true"/>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26812308/viewspace-2124660/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mongodb在replicaset的secondary上補建索引MongoDB索引
- MongoDB系列一(索引及C#如何操作MongoDB)MongoDB索引C#
- MongoDB系列-解決面試中可能遇到的MongoDB複製集(replica set)問題MongoDB面試
- MongoDB 基本操作詳解MongoDB
- MongoDB 入門教程系列之三:使用 Restful API 操作 MongoDBMongoDBRESTAPI
- Pytorch系列:(四)IO操作PyTorch
- RxJava操作符系列四RxJava
- MongoDB入門系列(四):許可權管理MongoDB
- MongoDB 入門教程系列之二:使用 Spring Boot 操作 MongoDBMongoDBSpring Boot
- MongoDB從庫延遲讀取資料問題的解決思路MongoDB
- Golang學習系列第六天:操作MongoDBGolangMongoDB
- 隨筆之:VC操作Word系列(四)
- Java 四種引用的解讀Java
- Mongodb通過一致性備份搭建SECONDARY.MongoDB
- SpringBoot 整合 Spring Data Mongodb 操作 MongoDB 詳解Spring BootMongoDB
- mongoDB操作MongoDB
- 大資料系列2:Hdfs的讀寫操作大資料
- Mongodb secondary上面replSet error RS102 too stale to catch upMongoDBError
- keystone系列四:keystone部署及操作
- mongodb密碼特殊字元的解決方法MongoDB密碼字元
- mongodb日誌太大的解決辦法MongoDB
- PHP 操作 MongoDBPHPMongoDB
- Mongodb 管理操作MongoDB
- MongoDB基本操作MongoDB
- JavaApi操作MongoDBJavaAPIMongoDB
- Go操作MongoDBMongoDB
- Scala操作MongoDBMongoDB
- Java操作MongoDBJavaMongoDB
- mongodb埠占用怎麼解決MongoDB
- MongoDB系列二MongoDB
- Kotlin Coroutines Flow 系列(四) 執行緒操作Kotlin執行緒
- 三招解決MongoDB的磁碟IO問題MongoDB
- MongoDB chunk too big to move的解決方案MongoDB
- MongoDB的常用Query操作及操作符MongoDB
- mongodb 的事務性操作MongoDB
- mongoDB的db.shutdownServer()報錯的解決方法MongoDBServer
- mongodb操作:利用javaScript封裝db.collection.find()後可呼叫函式原始碼解讀MongoDBJavaScript封裝函式原始碼
- MongoDB乾貨系列2-MongoDB執行計劃分析詳解(3)MongoDB