標籤:
前言
MongoDB資料庫的版本為3.0.7。記錄在使用MongoDB資料庫時遇到的各種問題,目前是遇到一個整理一個,沒有進行分類,等整理較多的時候,進行分類整理一下。
1.使用視覺化檢視串連時,身分識別驗證失敗,Authorization failed
當使用MongoVUE或者Robomongo串連資料庫時,驗證失敗。
解決辦法:
(1)首先,關閉叢集伺服器,以非身分識別驗證啟動叢集
(2)然後,登陸一個mongos和每個分區伺服器,修改admin資料庫下的system.version集合,原先為{"currentVersion" : 5}。db.system.version.update({ "_id" : "authSchema"},{$set: {"currentVersion" : 3} })
(3)最後,在修改版本後重建立立所有使用者,重新啟動叢集並加上身分識別驗證即可。
原因:
這和MongDB的驗證機制有關,3.0開始預設使用的驗證模式為SCRAM-SHA-1(currentVersion=5),2.6以前使用的是MONGODB-CR(MongoDB Challenge and Response) (currentVersion=3)驗證方式。
3.0的bug:https://jira.mongodb.org/browse/SERVER-17459
2.叢集分區失敗
有以下幾個原因:
(1)保證伺服器連接埠都通,關閉防火牆吧,systemctl stop firewalld
(2)保證伺服器時間最好差小於30秒
date -s ‘05/24/2016 15:27:05‘ ntpdate –u x.x.x.x
(3)資料量太少沒達到分區要求
3.TTL索引失效
有以下幾個原因:
(1)保證建TTL索引的欄位是日期類型,若用數組,保證數組包含日期類型的資料
(2)建立索引時使用expireAfterSeconds全拼,不能縮寫如下
db.coll.ensureIndex({"ttlkey":1},{"expireAfterSeconds":60*60*12}) 到期時間為 12h
4.怎麼關閉叢集
按照mongos-config-shard的順序關閉叢集,登入相應的資料庫,選擇admin資料庫,使用db.shutdownServer()關閉服務。
如果啟用了身分識別驗證,切記啟用前就建立了admin使用者,不只是mongos建立,各分區伺服器也要建立。
5.mongod服務啟動失敗
有以下幾個原因:
(1)確定資料目錄是否存在
(2)查看--dbpath 目錄下的mongod.lock檔案,此檔案大小若不是0,表示上次是非正常退出資料庫,此時有兩種方法,一是直接刪除此檔案,二是修複資料庫(repair database)
MongoDB-常見問題