2

我有一个大型收藏的定期数据归档的请求。要求的几点引起了我的一些担忧:

  1. 存档的数据应移动到不同的数据库中,以便与生产应用程序进行同等的访问。
  2. 备份的频率可以是每月、每年甚至更低。
  3. 归档应该在不中断生产系统的可用性和性能的情况下进行。

此要求意味着在归档执行时的短时间内进行大量插入和删除。它有一些挑战需要解决。

  1. 对于同一条记录,删除只能发生并且必须在插入成功后发生。
  2. 大量的插入和删除可能会在复制完成到replicaset中的secondary节点之前将oplog炸毁。毕竟oplog size一般是为日常操作配置的。

对于挑战 1,Mitch Pronschinske 提出了一个非常接近的解决方案。Mitch 的存档功能解决了删除只能在插入成功后发生的问题,而不是“必须发生”的部分。尽管如此,这非常接近,并且可以在此脚本之上解决“必须发生”部分。

让我头疼的是挑战2。根据 MongoDB 的说明,更改 oplog 大小需要停机和人工干预。考虑到要求 3,这不太可能是一种选择。

有人对如何实现这一目标有任何经验或建议吗?谢谢!

我的环境信息:

  • MongoDB 3.2
  • 3个分片
  • Replicaset:3 个数据成员,1 个成员在地理上是冗余的,优先级为 0。
  • 操作系统:MS Win2012R2
4

0 回答 0