您好,登錄后才能下訂單哦!
如果通過shell訪問mongo,要在secondary進行查詢。會出現如下錯誤:
[root@mongodb-secondary2 ~]# mongo MongoDB shell version: 3.0.9 connecting to: test abc:SECONDARY> show dbs 2016-02-20T02:13:18.527+0800 E QUERY Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }
有兩種方法實現從機的查詢:
第一種方法:db.getMongo().setSlaveOk();
第二種方法:rs.slaveOk();
但是這種方式有一個缺點就是,下次再通過mongo進入實例的時候,查詢仍然會報錯,為此可以通過下列方式
為避免沒有設置權重情況下,有幾多臺mongodb下都vi .mongorc.js,增加一行內容:rs.slaveOk(); ,這是可以避免原本是primary,避免primary發生故障后另一個secondary切換為primary,原本的primary修復好變成secondary時候執行rs.slaveOk()時候沒有權限..最好加x權限給.mongorc.js這個文件:
vi monogorc.js rs.slaveOk() :wq
[root@mongodb-secondary1 ~]# chmod u+x .mongorc.js
這樣的話以后每次通過mongo命令進入都可以查詢了
[root@mongodb-secondary1 ~]# mongo MongoDB shell version: 3.0.9 connecting to: test abc:PRIMARY> use mydb switched to db mydb abc:PRIMARY> show tables system.indexes testc
上面的方法可以解決secondary再次登錄不再提示"not master"。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。