moveChunk因為舊數據未刪除而失敗


  • Lv 1

    log: moveChunk failed to engage TO-shard in the data transfer: can't accept new chunks because there are still 1 deletes from previous migration

    請問有何解?


  • 註冊用戶

    意思是說,當前正要去接受新chunk 的shard正在刪除上一次數據遷移出的數據,不能接受新Chunk,於是本次遷移失敗。這種log里顯示的是warning,但有時候會發現shard的刪除持續了十幾天都沒完成,查看日誌,可以發現同一個chunk的刪除在不斷重複執行,重啟所有無法接受新chunk的shard可以解決這個問題。


    如果採用了balancer自動均衡,那麼可以加上_waitForDelete參數,如:

    { "_id" : "balancer", "activeWindow" : { "start" : "12:00", "stop" : "19:30" }, "stopped" : false, "_waitForDelete" : true }

    ,這樣就不會因delete堆積而導致後續migrate失敗,當然,需要考慮到這裡的阻塞是否會影響到程序正常運轉,在實踐中慎重採用使用waitForDelete,因為發現加上它之後遷移性能非常差,可能出現卡住十幾個小時的情況,外界拿住了被遷移chunk的游標句柄,這時候刪除不能執行,阻塞了後續其它遷移操作。

    游標被打開而導致被遷移數據無法及時刪除時的日誌:

    2015-03-07T10:21:20.118+0800 [RangeDeleter] rangeDeleter waiting for open cursors in: cswuyg_test.cswuyg_test, min: { _id: -6665031702664277348 }, max: { _id: -6651575076051867067 }, elapsedSecs: 6131244, cursors:

    這可能會卡住幾十小時,甚至一直卡住,影響後續的moveChunk操作,導致數據不均衡。

    解決方法:重啟


  • Lv 1

    @ally

    真是好文啊... 收藏


  • 註冊用戶

    @ally

    解決方法:重啟 => 這招不能太常用,收藏~


  • Lv 1

    @yea

    多台架構. 離線重啟還好


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待