我需要Mongo集群执行2次操作:
我有大约1000万份文件。磁盘上的Mongo数据有250Gb。有cca 15类别,我需要单独的文件(目前所有文件都在1个集合中,不论其类别)。
我应该使用哪个命令在几个小时内将所有数据导出到文件中? 我应该用多大的aws实例加速它,但不要为RAM付出太多。这会有帮助吗?操作2)不得导致操作的性能命中1) - 我无法阻止Mongo并使用mongoexport。
答案 0 :(得分:0)
我不确定您使用的是哪种服务器,但这可能会提供有关导出/文件创建性能的一些进一步见解,而不是关闭mongo。有人假设您正在使用分片和复制的群集。
在我的情况下,我在Azure VM上运行Windows服务器的复制和分片群集。因此,我会在每个RS中的辅助设备上获取与数据磁盘关联的Azure blob的副本。您应该停止平衡器并锁定辅助节点上的数据库以执行此操作。这最多只需要几分钟就能复制250gb。然后我会将blob恢复到新VM上的磁盘。
然后,您可以从此VM中查询数据,而不会影响群集的性能。您可以另外为此导出过程添加索引,因为您现在位于单独的实例上。
我个人使用PowerShell在Azure中执行此操作。如果通过mongo shell的JavaScript失败,Golang可能是编写查询的更好选择,因为它具有并行功能。我的JS工作比python代码快,但它也取决于你所知道的。
这只是一种方式,但它确实解决了您发布的一些标准。