1. 程式人生 > >MongoDB錯誤和使用總結

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來連線。

(待更新…….)