【问题标题】:Mongodb collection replication and read cursorsMongodb 集合复制和读取游标
【发布时间】:2020-04-28 04:07:30
【问题描述】:

我想将 mongodb 中的集合复制到其他数据接收器中。一种方法是获取最后一个 oplog 条目时间戳,记录它,然后对整个集合进行查找并遍历该游标,将文档发送到接收器。一旦该游标用尽,我从一开始得到的时间戳开始读取 oplog 操作。 (类似于mongo-connector 所做的事情) 在伪代码中:

lastTs = getLatestOplogTimestamp(); -> t1
doDumpOfCollection(collectionName);
streamOperationsFromOlog(since=lastTs); - t2

假设在 t1 和 t2 之间的时间段内,collectionName 发生了更新,也就是说,一个项目被添加到子文档数组中,或者其他一些有状态的更新。

document1.items.append(item1);

问题是:

  1. 新数据会/可以显示在光标迭代中吗?

  2. 当我重放 oplog 时会发生什么 - 我可以在数组中有重复的项目吗?

documentation 表明其他操作可以与查询“交错”,这表明这两个项目的答案都是肯定的。

如果是这样,有没有办法可靠地从 mongo 复制单个集合?在我看来,像 Mongo 连接器这样的东西并不具备强大的数据完整性。

【问题讨论】:

    标签: mongodb replication isolation-level


    【解决方案1】:

    我相信snapshot reads 旨在满足您的要求。

    【讨论】:

      猜你喜欢
      • 2021-07-06
      • 2014-01-09
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      • 2020-08-10
      相关资源
      最近更新 更多