insert:key too large to index…

jx_yu發表於2015-05-19

在使用mongosync遷移資料過程中,目標庫log提示如下錯誤:

發現在bulid index的時候遇到”key too larger to index”錯誤,並且每次報錯後會重新開始建立這個索引,再次報錯,再次重建。。。。。。一直retry index bulid,於是資料同步卡在這塊了

image

經過查詢發現:

image

Mongo啟動時有noIndexBuildRetry選項,指定此引數則不會去嘗試重建索引

 

再次檢視官當,發現:

image

大概意思是:

mongoDB2.6 ,insert或者update一個長度大於Index key length Limit的操作,mongo將會返回一個錯誤給客戶端。而在早期的mongo版本將會操作成功

為了避免這個問題,你可以使用hash index或者索引計算值.如果你有一個現有的資料集合,那你可以禁用此行為,然後逐步解決這些索引問題,使用引數:

failIndexKeyTooLong來禁用此行為

  failIndexKeyTooLong 預設為 true. 當設定為false, 2.6  例項將提供2.4的行為

執行mongo時,如下關閉:

    mongod --setParameter failIndexKeyTooLong=false

 

解決問題:

停止mongosync 程式

重啟目標庫的mongo例項 指定--setParameter failIndexKeyTooLong=false —noIndexBuildRetry 選項

開啟mongosync進行增量同步(-s 去之前的synclog中找)

 

再次tail –f mongo.log發現剛才卡著一直retry的地方過去了 但是還是有

image

錯誤

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27000195/viewspace-1662275/,如需轉載,請註明出處,否則將追究法律責任。

相關文章