不同Mongo版本之间的MongoDB数据文件夹备份和恢复

不同Mongo版本之间的MongoDB数据文件夹备份和恢复,mongodb,database-backups,Mongodb,Database Backups,一些背景:我们构建并发布Mongo应用程序,然后客户可以在他们的位置或他们选择的云上安装 我们为客户提供了一种备份和恢复其数据的方法。mongo非常庞大,因此mongodump和恢复是不可行的。因此,我们开始直接复制mongo数据文件夹并进行恢复。这似乎很好,但在新版本中,我们升级了mongo版本,如果我们让客户直接使用旧版本的数据文件夹进行恢复,这似乎不会一直有效 我发现很少有线程说,如果它能工作,那么它将只是运气好,虽然有一些方法可以恢复,如旋转旧版本和升级mongo,并带来新版本的数据文件

一些背景:我们构建并发布Mongo应用程序,然后客户可以在他们的位置或他们选择的云上安装

我们为客户提供了一种备份和恢复其数据的方法。mongo非常庞大,因此mongodump和恢复是不可行的。因此,我们开始直接复制mongo数据文件夹并进行恢复。这似乎很好,但在新版本中,我们升级了mongo版本,如果我们让客户直接使用旧版本的数据文件夹进行恢复,这似乎不会一直有效

我发现很少有线程说,如果它能工作,那么它将只是运气好,虽然有一些方法可以恢复,如旋转旧版本和升级mongo,并带来新版本的数据文件夹(但这将是一个艰难的过程)


有什么方法可以保证一个无seemless过程吗?像mongo本身一样,它可以检测旧数据并进行升级,或者通过放置一些兼容性标志

我将从一个假设开始,因为您表示最近升级了MongoDB 3.6版(或4.0?)

这是伟大的,但该版本不兼容3.4没有设置

现在,在这种情况下要做的是,您必须设置此选项,以便使数据库与3.4兼容:

db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
这将使它与以前的版本兼容,但代价是不使用3.6功能

您可以查看所使用的
功能兼容版本

`db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )`
如果这有帮助,并且您现在已经完成了所需的更改,那么您可以通过使用
3.6
值执行相同的
setFeatureCompatibilityVersion
命令来设置
3.6
兼容性。现在,这已经过测试,在3.4到3.6之间运行良好,反之亦然。如果您的版本较低,仍然值得一试:)

从文档中可以看出,如果在3.6上执行此操作,将执行以下操作:

如果在MongoDB 3.6部署上设置,将禁用 持久化与MongoDB 3.4不兼容的数据


总之,我假设我们讨论的是3.6到3.4,但这对于4.0到3.6等仍然是正确的。您仍然需要尝试一下,看看它是否对您有任何好处。希望这有帮助。

注意事项:

将mongodb从一个版本升级到另一个版本必须遵循以下与数据兼容性直接相关的步骤:

  • 通过复制文件将数据文件从版本A恢复到版本B时,数据是否兼容
  • 有时升级涉及到一个或设置协议版本,需要手动验证以解决冲突
  • 功能兼容性版本:当降级的可能性最小时,一些较新版本需要设置标志以利用向后兼容的功能
  • 在从一个版本升级到另一个版本之前,是否需要任何中间版本?例如,要将mongodb版本从2.6升级到3.2,需要升级到3.0
  • :此工具非常方便,可帮助您了解支票
方法

考虑到用户可以控制mongodb部署的用例,您可以:

  • 在新版本可用时,通过将文件从一个版本复制到另一个版本来评估mongodb数据兼容性,因为升级不太频繁
  • 评估在以下情况下是否需要任何手动操作:
  • 生成一个兼容性矩阵,指导用户从一个版本到另一个版本的数据兼容性
  • 此外,如果要将数据从一个版本恢复到另一个版本,需要设置任何标志,则可以创建升级文档以确保无需麻烦地恢复数据

我不确定我是否完全理解您想要实现的目标。你看过这个吗?另外,为什么mongodump和-restore不是一个选项?你遇到了什么问题?运营经理会是一个选择吗@DevC很抱歉提供了一个答案,但提出了一个问题…如果我理解正确,您是从数据文件夹还原mongo db?你能告诉我你是怎么做到的吗?因为我和你的处境相似,还不确定版本:)谢谢你