【问题标题】:Recovering a missing WiredTiger.wt恢复丢失的 WiredTiger.wt
【发布时间】:2017-04-14 22:56:44
【问题描述】:

有没有办法重新生成丢失的WiredTiger.wt?我们的 MongoDB 实例停止工作(奇怪地),并且该文件从 dbpath 文件夹中丢失了——似乎这种行为是 known

顺便说一句,修复实用程序不成功:

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

丢失数据库很难忍受......

有什么想法吗?谢谢。

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

【问题讨论】:

  • 您是否有 dbPath 的旧备份,或者这是您数据的唯一副本? WiredTiger.wt 文件包含基本元数据,无法重新创建。您使用的是哪个特定版本的 MongoDB?
  • 这就是整个问题,我们没有任何备份,因为项目是全新的......我们没有打扰,但是,你生活和学习,对吧? :) (v3.2.10)
  • 非常不幸的一课,但希望新项目意味着您没有丢失太多数据。如果你很绝望,可能(但很痛苦)使用 WiredTiger 命令行工具从集合中转储一些数据,但这是一条不受欢迎且不受支持的道路。对于具有关键数据的生产环境,我建议使用持续备份服务(例如 MongoDB Cloud Manager)并部署为副本集。
  • 您能否分享有关“停止工作”事件的任何详细信息或日志?您是否关闭了mongod,它是否自行关闭了,...?另外,您是如何部署 MongoDB(直接在 Docker/container/...中)以及在什么操作系统上部署的?
  • @Stennie 当然,任何你想要的——我们在 16.10 Ubuntu 上运行 MongoDB。该数据库由 NodeBB 实例使用,不涉及 Docker 或任何部署自动化系统。我们只是从发布包中安装了 MongoDB。我会尝试为您获取一些日志(将编辑原始帖子)。感谢您的宝贵时间。

标签: mongodb nodebb


【解决方案1】:

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

【讨论】:

  • 我在本地遇到了这个问题(另一次我丢失了数据库,因为另一个错误,在干净的击落之后)。我非常担心这些问题继续生产。如果我知道之前我会完全放弃 mongodb 用于 postgres 甚至 mysql。
  • @alfredopacino 删除数据文件不是预期的(或常见的)问题,但无论您的数据库如何,您都应该始终为基本数据制定备份策略。如果没有关于您遇到的 MongoDB 错误的上下文,很难知道您是否可以采取一些措施来改进您的部署或管理实践(并且与这里的问题无关,即“我可以重新创建丢失的 WiredTiger.wt 文件吗?”) .使用某些部署方法(例如 Docker)或文件系统 (NFS) 在性能或潜在文件损坏方面可能会出现更多问题。
  • 值得查看Production Notes 以了解可能适用的建议设置,但对于您的 MongoDB 部署(而不是特定问题)的更多讨论,我建议在mongodb-user group 上发帖。
  • @alfredopacino 感谢您提供 Jira 链接。没有足够的信息来了解您的部署发生了什么,但一个明显的危险信号是“我通过 git 对 db 目录 c:\myproject\data 进行了操作”。如果您的dbPath 在数据库服务器运行时被git(或Dropbox 等)等外部工具操作(或者您从git 签出不同版本的数据文件),很容易意外引入不一致。通常,您也不希望将大型二进制文件/数据文件提交到版本控制中,因为这会使您的存储库迅速膨胀。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 2015-08-19
  • 2021-09-15
  • 1970-01-01
相关资源
最近更新 更多