哪一个是升级mongoDB数据库的首选Mongodump VS Mongoexport?



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

使用初始测试 MongoDB 2.4中的mongodump Mongob 3.4.5 中的 mongorestore 工作正常,因为我可以看到导入的所有集合。

从文档mongorestore中,任何地方都没有提到它可以从旧版本的mongoDB恢复转储。

由于我们不能使用 mongorestore ,我可以使用 "mongoexport" 将旧版 mongoDB 2.4 的 csv/json 格式导出数据,并导入到较新版本的 mongoDB 3.4 中吗?

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

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

Mongodump 和 Mongorestore 更好,因为:

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

如MongoImport上的MongoDB Docs中所述:

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

此外,在使用mongorestore进行升级时要非常小心;仅仅因为数据恢复到以前一样,这并不意味着新版本的MongoDB可以使用它。例如,在 v2.4 之后对授权模型进行了一系列更改,这意味着您必须首先升级到 v2.6,然后才升级到 v3.0。每个主要版本都有类似的结构更改,因此建议您逐步升级,一次升级一个主要版本,即

  1. v2.4 -> v2.6
  2. 2.6 版 -> 3.0 版
  3. 3.0 版 -> 3.2 版
  4. 3.2 版 -> 3.4 版

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

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

希望有帮助!!!

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

最新更新