【问题标题】:How to copy database from MongoDB 1.6 instance如何从 MongoDB 1.6 实例复制数据库
【发布时间】:2017-04-25 01:42:29
【问题描述】:

我有一个带有两个数据库的 MongoDB 实例,我们称它们为“realdb”和“copydb”。

我要做的就是定期将realdb复制到copydb。 copydb 数据库是实际数据库“realdb”的“测试”实例,我们希望定期更新它。

这个问题的答案通常是“copydb”或“export/import”。但是,也存在一些挑战:

  • 目标 Mongo 实例正在运行 1.6 版,不太可能很快更新。
  • 目标 Mongo 实例位于我无法直接访问的远程服务器上。

这似乎是一个足够基本的功能,即使是 1.6 也应该有能力做到这一点。但是当我尝试任何东西时,我都会收到“没有这样的 cmd”错误,好像新的 Mongo 无法与古老的 Mongo 通信。

对如何做到这一点有任何想法吗?

【问题讨论】:

  • 您正在运行的确切命令是什么?你能提供你正在运行的确切命令和你得到的确切输出吗?在此处复制/粘贴。
  • 对不起,我应该想到把它放在实际的描述中。我已经尝试了 3 种方法:来自 mongo:db.copyDatabase("licensing_dev","licensing_dev","re​​mote.server.name"); { "ok" : 0, "errmsg" : "listCollections failed: { errmsg: \"no such cmd\", bad cmd: { listCollections: 1, filter: { $or: [ { type: \"collection\" } , { type: { $exists: false } } ] }, cursor: {} }, ok: 0.0 }", "code" : 18630, "codeName" : "Location18630" }
  • 我也试过:mongodump --host remote.server.name --port 27017 --db license_dev --out /tmp/mongo.js 2017-04-21T08:52:17.110-0700 失败:获取数据库licensing_dev 的集合时出错:运行listCollections 时出错。数据库:licensing_dev Err:没有这样的 cmd
  • 为了完整起见,我尝试了: mongoexport --host remote.server.name:27017 --db license_dev --collection seat --out /tmp/mongo.js 2017-04-21T08:55: 39.759-0700 失败:错误运行 listCollections。数据库:licensing_dev Err:没有这样的 cmd
  • 奇怪的是,我可以使用 rockmongo 导出,但由于“文件太大”错误而无法导入。不过,这并没有真正帮助我,因为我的最终目标是自动将一个数据库定期复制到另一个数据库。

标签: mongodb


【解决方案1】:

错误“没有这样的命令”可能意味着:

  1. 命令输入错误或不存在
  2. 客户端版本(例如 mongo shell、mongodump、mongoexport 或 mongodb 驱动程序)与服务器版本不匹配。

在这种情况下,mongo shell 版本 (3.4) 与服务器版本 (1.6) 不匹配。

【讨论】:

  • 如果您遇到这种情况并且需要旧版本的 Mongo,您可以在此处找到它:mongodb.com/download-center#community 在页面左下角查找“所有版本的二进制文件”链接。
猜你喜欢
  • 2020-05-19
  • 2017-04-13
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 2018-01-11
相关资源
最近更新 更多