Mongodump 不适用于新的 Meteor 1.8

Mongodump is not working with new Meteor 1.8

我刚刚将 Meteor 从 1.2 更新到 1.8,我的应用程序变得非常慢。

我想备份我的数据库

mongodump -h 127.0.0.1 --port 3001 -d meteor

但是它给我这个错误:

mongodump -h 127.0.0.1 --port 3001 -d meteor
2018-12-21T16:37:04.269+0500    writing meteor.__kdtimeevents to 
2018-12-21T16:37:04.269+0500    writing meteor.__kdtraces to 
2018-12-21T16:37:04.269+0500    writing meteor.users to 
2018-12-21T16:37:04.270+0500    writing meteor.jobPaymentDetails to 
2018-12-21T16:37:04.270+0500    Failed: error writing data for collection `meteor.__kdtimeevents` to disk: error reading collection: Failed to parse: { find: "__kdtimeevents", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "meteor" }. Unrecognized field 'snapshot'.

我应该在这里做什么?

听起来你正在将重要数据存储在开发数据库中(如果你想备份的话)。

如果您不关心数据,可以使用meteor reset 命令清除数据库。

如果你关心数据,你可能有问题。失败的系列是 Kadira 系列,对您来说并不重要。如果你总是失败,你可以一次转储一个集合。

再次仔细查看错误消息,我看到了:

meteor.__kdtimeevents` to disk: error reading collection: 
Failed to parse: 
  { find: "__kdtimeevents", 
  skip: 0, 
  snapshot: true, 
  $readPreference: { 
    mode: "secondaryPreferred" 
  }, 
  $db: "meteor" }. 

Unrecognized field 'snapshot'. 

该错误可能意味着数据库结构发生了变化(无论 mongo 版本与 Meteor 1.2 一起使用),并且快照不再存在。该查询还说 secondaryPreferred - 表明它假设一个集群?

您有数据备份吗? (但愿如此)。如果您的系统仍有运行版本,我会回到那个版本,然后从那里进行 mongo 转储。

如果在该集合上仍然失败,您可以对每个集合发出单独的 mongo转储命令,有点费力,但也许有效。

正在将 Mongodb 版本更新到 4.0,这是现在的最新版本,已为我修复。谢谢大家的帮助。