Mongodb

oplog 中的 Mongorestore 失去了一些記錄

  • December 1, 2014

我們做了一個 mongo oplog 的轉儲,現在嘗試在另一台伺服器上恢復它:

mongorestore -vvvvv --authenticationDatabase admin -u mongoUser -p --oplogReplay --filter '{"o._id": ObjectId( "54566b2856a34e1831157660" )}' dump/

我們在過濾器中只有 1 條記錄進行測試,但沒有過濾器,根本沒有任何東西可以導入具有相同的輸出。

我們從單個副本集轉儲並嘗試導入新的分片集群。

這會產生以下輸出:

Enter password: 
2014-11-05T15:02:55.596+0100 creating new connection to:127.0.0.1:27017
2014-11-05T15:02:55.596+0100 [ConnectBG] BackgroundJob starting: ConnectBG
2014-11-05T15:02:55.597+0100 connected to server 127.0.0.1:27017 (127.0.0.1)
2014-11-05T15:02:55.597+0100 connected connection!
connected to: 127.0.0.1
2014-11-05T15:02:55.857+0100 drillDown: dump
2014-11-05T15:02:55.857+0100     Replaying oplog
    file size: 21413184554
2014-11-05T15:02:58.000+0100        Progress: 3905443976/21413184554    18% (bytes)
2014-11-05T15:03:01.001+0100        Progress: 8027986469/21413184554    37% (bytes)
2014-11-05T15:03:04.000+0100        Progress: 11157894758/21413184554   52% (bytes)
2014-11-05T15:03:07.001+0100        Progress: 14340379265/21413184554   66% (bytes)
2014-11-05T15:03:10.000+0100        Progress: 17890791357/21413184554   83% (bytes)
2820163 objects found
1 objects processed
2014-11-05T15:03:12.945+0100 Applied 1 oplog entries out of 1 (0 skipped).

看起來不錯,但記錄沒有出現在數據庫中……我們做錯了什麼?

此外,我們正在從 uberVU 執行 oplogreplay 以與舊數據庫保持同步。這工作正常,新數據庫中不斷出現記錄。但是我們必須指定 –skipIndexes 因為以前的索引現在是一個分片鍵

我們設法通過使用 mongodump / mongorestore 以外的其他工具解決了這個問題。使用 dropbox hydra 項目 ( https://github.com/dropbox/hydra ) 可以更快、更順暢地複制整個數據庫並與我們的新集群保持同步。

不知道這是否是 Markus 將在評論中建議的工具,但它們工作正常 :)

仍然不知道為什麼 mongo 工具不能在這裡完成這項工作。他們需要 5 天才能失敗。Hydra 用了不到一天的時間就成功了……

引用自:https://serverfault.com/questions/642215