我現在想將本地的Mongo資料(50GB)遷移到阿里雲上(記憶體1G)。本地版本是v2.4.9,伺服器上是v3.2.11
但是我使用mongodump將資料匯出,傳到阿里雲上後用mongorestore恢復,恢復到1.8%左右就會出錯。應該是記憶體不足引起的。
錯誤提示Failed: sof.test: error restoring from /root/sof/test.bson.gz: insertion error: EOF
我同時測試了mongoexport/mongoimport指令 都是同樣的錯誤。
我又進行了再次測試:我本地用另一台電腦裝了mongo v3.2版本的,將本地v2.4.9機子上的數據導出來,傳到阿里雲伺服器(mongo v3.2.11)上, mongorestore出現同樣的錯誤。
所以可能是 v2到v3 之間的問題,也可能是v3本身的問題?但是感覺後者可能性不大。
求問,如何解決?
PHP中文网2017-05-02 09:25:08
我剛去試了一下,我從2.6.6 dump出來,然後在2.6.10 和 3.2.11中restore 都是成功的。應該不是版本問題,版本都是向下相容的。
可能是數據問題?
我這沒那麼大的數據,不好測。你換小點表試試。
巴扎黑2017-05-02 09:25:08
仔細看文檔,跨版本的升級是明確禁止的。正確的姿勢是逐版本升級。兩個選擇:
你的情況應該是:2.4.9 -> 2.6.x -> 3.0.x -> 3.2.11
最後再拿3.2.11中導出的資料去mongorestore。
過程同樣遵循以上流程。
每個版本的升級都要按照對應版本的Upgrade Notes進行,才能確保最終得到正確的結果。