MongoDB 从 RocksDB 迁移到 WiredTiger

5 mongodb percona wiredtiger

我们使用 RocksDB 作为我们的引擎已经有一段时间了,现在我们正在尝试迁移到 WiredTiger。我们有一些相当大的数据库,大约有 4~12 TB 的数据,根据文档中描述的过程,我们添加了一个带有 WiredTiger 的新节点,并尝试让它从头开始复制。

对于数据量,复制时间非常长,很多时候我们遇到的情况是 WiredTiger 节点决定更改它从中复制的节点,只是删除所有数据并重新从头开始。只有一次我们成功完成了复制,但与 oplog 相比,节点最终落后了很多。

同样,对于如此大量的数据,拥有足够大的 oplog 来保存数周的事务变得令人望而却步,并且该过程也非常脆弱、单线程、缓慢且容易失败。

所以我的问题如下:

  1. 是否有更好的方法来进行此迁移?

  2. 有没有办法加速复制(即多线程复制)?

  3. 有没有办法告诉新的 WiredTiger 节点在发生事故时停止丢弃所有数据?

我们正在使用 Percona MongoDB 3.4.13 版的 3 和 5 个节点副本集,并尝试迁移到开源 MongoDB 3.4.13(我们的想法是在 WiredTiger 中升级到 4.x 并完全放弃 RocksDB 和 Percona) .

小智 1

如果复制跟不上主复制并且无法扩展 oplog,我会尝试对部署进行分片并...

  • 让较小的分片复制得更快

    或者

  • 耗尽原始分片,然后将其从部署中删除 - 这解决了您的存储引擎问题,但使复制像以前一样滞后