在实时mongodb机器上更新(或替换)整个数据库集合的最佳方法是什么



我每月都会得到一个数据源,我正在对其进行解析并将其放入MongoDB数据库中。每个月,都会更新一些数据,并将一些新条目添加到现有集合中。源文件有几GB大。除了这些每月更新外,数据不会有任何变化。

最终,这个数据库将是实时的,如果可能的话,我想防止在这些每月更新期间出现任何宕机。在不停机的情况下更新数据库的最佳方式是什么?


这个问题基本上正是我所问的,但不是针对MongoDB数据库。接受的答案是上传一个新版本的数据库,然后将新数据库重命名为使用旧数据库的名称。然而,根据这个问题,不可能轻易地重命名MongoDB数据库。这使得这种方法无法使用。

直观地说,我会尝试使用每个文档唯一的"gid"标识符(这是数据的一个属性,而不是MongoDB生成的"_id"(作为过滤器来迭代地"upstart"整个数据库,但这可能是一种效率低下的方式。

我正在运行MongoDB版本4.2.1

为什么您认为更新数据意味着停机?

听起来你不希望你的用户能够在负载中期访问新数据。

如果是这样的话,一个策略可以是拥有2个数据库;现场表演和舞台表演;与其将临时数据库重命名为活动数据库,您只需重命名连接到它的客户端应用程序中的连接字符串。

还可以考虑mongodump和mongorestore来复制数据库;尽管对于较大的数据库,这些操作可能较慢。

最新更新