【问题标题】:Which one is the preferred choice Mongodump VS Mongoexport for upgrading mongoDB database?Mongodump VS Mongoexport 哪个是升级 mongoDB 数据库的首选?
【发布时间】:2017-10-23 12:39:17
【问题描述】:

我的客户使用 mongoDB 2.4,由于此版本存在一些限制,我们为他们提供了升级到最新稳定 mongoDB 3.4.5 的选项。

使用的初步测试 MongoDB 2.4 中的 mongodump Mongodb 3.4.5 中的 mongorestore 运行良好,因为我可以看到导入的所有集合。

从文档mongorestore 中没有提到它可以从旧版本的 mongoDB 恢复转储。

由于我们无法使用 mongorestore ,我可以使用“mongoexport”将旧版 mongoDB 2.4 的数据以 csv/json 格式导出,并导入到新版 mongoDB 3.4 中吗?

使用“mongoexport/mongoimport”而不是“mongodump”升级到较新版本的 mongoDB 3.4 可能会出现什么问题?

注意:我将完全删除旧版本的 mongoDB,并将安装新版本的 mongoDB

【问题讨论】:

    标签: mongodb mongodump mongorestore


    【解决方案1】:

    Mongodump 和 Mongorestore 更好,因为:

    1. 他们跑得更快
    2. 它们比 mongoexport 和 mongoimport 更好地保留了一些数据格式,因为数据不会从 BSON 转换为 JSON 并返回。

    MongoDB Docs on MongoImport中所述:

    警告
    避免使用 mongoimport 和 mongoexport 进行完整实例生产备份。它们不能可靠地保留所有丰富的 BSON 数据类型,因为 JSON 只能表示 BSON 支持的类型的子集。使用 MongoDB 备份方法中所述的 mongodump 和 mongorestore 来实现此类功能。

    另外,使用 mongorestore 升级时要非常小心;仅仅因为数据恢复到原来的样子,这并不意味着新版本的 MongoDB 可以使用它。例如,在 v2.4 之后,授权模型发生了一系列更改,这意味着您 must first upgrade to v2.6, and only then to v3.0。每个主要版本都有类似的结构变化,所以建议你upgrade stepwise, one major version at a time

    1. v2.4 -> v2.6
    2. v2.6 -> v3.0
    3. v3.0 -> v3.2
    4. v3.2 -> v3.4

    【讨论】:

    • 这应该是您建议的实际过程,但是如果我使用 mongoexport 和 mongoimport :) 如果时间和大小不是问题,可能会出现什么问题。
    • 我已经编辑了答案以提供更多信息,以及指向 MongoDB 手册的链接。
    • 解决方案:没有简单的升级方法:(
    【解决方案2】:

    http://www.dba86.com/docs/mongo/2.4/core/import-export.html 开始,从 2.4 版本开始支持 mongoexport。因此,它应该是正确的工具。但该文档仍然有警告信息。

    警告: 避免使用 mongoimport 和 mongoexport 进行完整实例生产备份。它们不能可靠地保存所有丰富的 BSON 数据 类型,因为 JSON 只能表示支持的类型的子集 由 BSON。使用 mongodump 和 mongorestore,如 MongoDB 备份中所述 此类功能的方法。

    希望有帮助!!!!

    【讨论】:

      【解决方案3】:

      这两个工具(默认情况下)只会遍历 _id 索引以获取数据,然后将其写入磁盘。所以,是的,这两种工具都会同样影响您的工作集,这就是为什么我通常建议在辅助设备上运行它们(如果可能的话,最好是隐藏的辅助设备)。 我假设您正在寻找与 mongoexport 中的 --fields 选项等效的 mongodump 来仅转储特定字段。查询选项可用于过滤结果,但不能与投影一起使用(以选择返回的字段) - 这是 TOOLS-28 中正在跟踪但尚未计划的功能请求。

      【讨论】:

      • 你已经从这个链接dba.stackexchange.com/questions/107549/…复制了确切的文本,我的用例不同,可能是我没有正确传达信息,我的问题是哪一个应该是正确的工具来导出旧版本的数据库并导入到新版本的 mongoDB 中。
      • 我想你会发现 mongodump 更好更快
      猜你喜欢
      • 1970-01-01
      • 2021-04-27
      • 2020-08-10
      • 1970-01-01
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 2021-11-09
      相关资源
      最近更新 更多