我正在运行三个 mongo (4.0.4) 容器在 docker 中配置了副本集,运行了 10 个月,没有出现任何问题。主 mongo 容器/副本集与运行 spring 的 spring boot 应用程序连接2.1.1使用 mongo 事务。
在假期期间,我所有的 mongo db 集合都消失了,所有创建的集合和其中的数据都消失了。由于我在 spring boot 中安排了一些进程,而该进程正在将数据插入一个集合中,因此创建了该集合并插入了数据,这是该进程的正确运行方式(如果尚未创建集合,spring boot 会自动创建集合),所以当我发现我丢失了数据时,我只有一个集合和问题发生后插入的数据。
所有三个容器都与主机共享卷,当我查看 .wt 文件时,发现一个文件中的某些部分数据是可读的,似乎所有丢失的数据都在那里,但我不知道如何恢复它们。在文件中集合-8--739794789310552254.wt大约有 3561507 行,文件大小约为 390mb。当我在编辑器中打开此文件时,部分数据是可读的,尤其是日期(所有文档都有审计日志,包括创建日期、上次修改日期等)。
尝试使用 mongo restore,没有成功。
我只能想到这是怎么发生的,因为在日志中没有任何关于任何人访问数据库和运行任何类型的删除语句的日志,我只能想到 spring 中的某些事务以某种方式锁定并且 mongo 返回到最后知道的状态,即空状态(对我来说唯一合理的解释),为什么它会恢复为空不知道。
有没有办法恢复正在收集的数据?8--739794789310552254.wt 我有/数据/数据库路径已备份,我能够用 Docker 从该文件重新创建 Mongo,但我只有问题发生后的状态。