2016-11-30 123 views
4

有没有办法重新生成丢失的WiredTiger.wt?我们的MongoDB实例停止工作(奇怪),并且该文件从dbpath文件夹中丢失 - 看起来像这种行为是known恢复丢失的WiredTiger.wt

BTW,该修复工具不会成功:

file:WiredTiger.wt, connection: .//WiredTiger.wt: handle-open: open: No such file or directory 

失去数据库是很难的胃......

任何想法?谢谢。

P.S.我们仍然得到了所有其他.wt文件。

+0

你有''dbPath'的旧备份还是这是你的数据的唯一副本? WiredTiger.wt文件包含必要的元数据,不能重新创建。您使用的是什么特定版本的MongoDB? – Stennie

+0

这就是整个问题,我们没有任何备份,因为这个项目是全新的......我们没有打扰,但是,你生活和学习,是吧? :)(v3.2.10) – Moez

+0

非常不幸的教训,但希望新的项目意味着你没有失去太多的数据。如果您绝望,可能会使用WiredTiger命令行工具从集合中转储某些数据(但是很痛苦),但是这种方式会导致英雄般的不受支持的路径。对于具有关键数据的生产环境,我建议使用连续备份服务(例如MongoDB Cloud Manager)并将其部署为副本集。 – Stennie

回答

1

WiredTiger.wt文件包含有关MongoDB数据目录的基本元数据:存在哪些集合&以及每个文件中的最新检查点。如果WiredTiger.wt已从您的中完全删除,那么目前没有用于重新创建此元数据的过程或工具,但还没有从备份副本恢复完整。虽然您确实有数据文件,但您不幸丢失了描述这些文件所含内容以及它们之间关系的目录。

+0

我在本地遇到过这个问题(另一次我失去了数据库,因为另一个错误,在一个干净的shotdown后)。我非常担心这些问题继续生产。如果我知道它之前我会完全放弃postgres甚至MySQL的MongoDB。 – alfredopacino

+0

@alfredopacino删除数据文件不是预期的(或常见的)问题,但无论您的数据库如何,您都应该为重要数据提供备份策略。如果没有你遇到的MongoDB错误的上下文,很难知道是否有可能采取的步骤来改进你的部署或管理实践(并且与这里的问题“我可以重新创建缺少的WiredTiger.wt文件吗?”无关) 。某些部署方法(例如Docker)或文件系统(NFS)的使用在性能或潜在的文件损坏方面可能会更成问题。 – Stennie

+0

值得回顾一下[生产笔记](https://docs.mongodb.com/manual/administration/production-notes/)以了解可能适用的建议设置,但对于有关MongoDB部署的更多讨论(而不是具体问题)我会建议发布在[mongodb用户组](https://groups.google.com/forum/#!forum/mongodb-user)上。 – Stennie