MongoDB錯誤和使用總結
MongoDB錯誤和使用總結(轉)
原文連結:http://www.lifeba.org/arch/mongodb_errors.html
作者:Steven
1、Error creating index 13111 field not found, expected type 16
在執行mongorestore匯入資料的時候出現這個錯誤,使用的命令是
./mongorestore -h localhost:27100 /data/backup/mongodb
解決方法改為
./mongorestore --port 27100 /data/backup/mongodb
2、error RS102 too stale to catch up
主從同步的時候執行rs.status()檢視的RS102錯誤。由於在啟動的時候指定–oplogSize=128,(主節點的oplog日誌大小,單位為M,更改oplog大小時,刪除local.,然後加–oplogSize= 重新啟動即可,*代表大小)在對主庫大資料插入的時候,可能會出現來不及同步到從庫的現象。
解決方法
停掉主從庫,將主庫的data資料複製到從庫後重啟服務。
參考
http://blog.nroed.com/2011/07/07/mongo-replica-problem/
http://www.mongodb.org/display/DOCS/Resyncing+a+Very+Stale+Replica+Set+Member
3、Command ‘listDatabases’ failed: need to login (response: { “errmsg” : “need to login”, “ok” : 0 })
配置了主從庫後,發現只能本機連庫,其他機器連不上。
解決方法
啟動的時候將–keyFile去掉。
4、pymongo.errors.AutoReconnect: could not find master/primary
MongoDB可能非正常停掉服務導致的
解決方法
刪除mongod.lock 並重啟mongdb。
5、pymongo.errors.AutoReconnect: master has changed
python中通過pymongo連線資料庫的時候出現該錯誤。
解決方法
切換連線程式碼即可。
bigtb_corpus = pymongo.Connection("lifeba.org", 27100)
換為
servers = "mongodb://lifeba.org:27100/?slaveok=true" bigtb_corpus = pymongo.Connection(servers)
6、Connection reset by peer
Python連線MongoDB,在壓力測試下,出現這個錯誤。連線數滿了,導致連線被重置。後來查明瞭原因是mongodb的驅動版本不一致導致的。MongoDB部署的版本是2.0.1,連線MongoDB的一臺機器上面裝的驅動是2.2版本。
導致了每次訪問連線都增加而不釋放。
7、Replica Set 主從不同步(RECOVERING , still syncing, not yet to minValid optime)
使用db.printSlaveReplicationInfo(),db.printReplicationInfo() 檢視最新的主從同步情況。
停掉從庫,然後刪除掉全部的資料庫資料,並重新啟動從庫,從庫會自動從主庫同步資料過來。
8、已有的主從中新增新的從機器
將主機器的資料庫複製一份到從機器上面,然後啟動從資料庫,啟動好後,在主機器中加入該該從機器即可:rs.add(“192.168.0.149:27100”)
9、MongoDB去掉主從
停掉全部的機器的mongo服務,刪除掉local.* 檔案 刪除journal資料夾 ,並且在啟動命令中去掉 –replSet=rs ,然後重新啟動。
10、HOSTNAME問題
replSet exception loading our local replset configuration object : 0 assertion src/mongo/db/repl/../../db/../util/net/hostandport.h:120
預設hostname為localhost,這個會報錯,改為其他名字即可。
11.master has changed異常
配置了MongoDB資料庫主從後,用內網ip連線也會報,解決方法用hostname來連線。
(待更新…….)