Mongorestore 从 oplog 中遗漏了一些记录

Mongorestore 从 oplog 中遗漏了一些记录

我们转储了 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,因为以前的索引现在是分片键

答案1

我们设法通过使用 mongodump / mongorestore 以外的其他工具解决了这个问题。使用 dropbox hydra 项目 (https://github.com/dropbox/hydra)更快、更顺利地复制了整个数据库并保持新集群同步。

不知道这是否是 Markus 在评论中建议的工具,但它们工作正常:)

仍然不知道为什么 mongo tools 在这里不起作用。它们需要 5 天才能失败。Hydra 不到一天就成功了……

相关内容