1

所以这是我的场景:

  • 今天我的服务器由我们的主机重新启动(acpi 关闭)。
  • 我的 mongo 数据库是一个简单的 docker 容器(mongo:3.2.18)
  • 由于未知原因,容器在重新启动时没有重新启动(restart: always在 docker-compose 中设置)。
  • 我启动它并注意到卷映射消失了。
  • 我将它们恢复到旧路径,重新启动 mongo 容器,它启动时没有错误。
  • 我连接到数据库,它完全是空的。

> show dbs
local  0.000GB
> use wekan
switched to db wekan
> show collections
> db.users.find();
>

我也试过了db.repairDatabase();,没有效果。

现在我的_data目录包含很多 *.wt 文件等等。(文件列表

我发现collection-0-2713973085537274806.wt它的文件大小约为 390MiB。

假设它的大小,这可能是我需要恢复的数据。

有什么方法可以恢复这些数据?

wt salvage我已经根据这篇文章尝试了我的运气,但我无法让它运行 - 仍在尝试。

我知道备份,备份,备份!遗憾的是,这个数据库没有备份。

相关的 GitHub 问题,包含软件的详细信息。


更新:

我能够使用该WiredTiger Data Engine工具创建一个 .dump 文件。但是我无法将其导入 mongoDB。

4

1 回答 1

0

尝试在 mongo db 容器上运行修复。它应该修复您的数据库并且数据应该完全恢复。

以 bash 模式启动 mongo 容器。

sudo docker-compose -f docker-compose.yml run mongo bash

or

docker run -it mongo bash

进入 docker 容器后,运行 mongo db repair。

mongod --dbpath /data/db --repair

数据库应已成功修复,并且您的所有数据都应恢复。

于 2021-12-22T07:22:47.377 回答