Mongodump:无法识别的字段“快照”


33

我正在使用mongo工具中的mongodump下载我的服务器的备份。但是,当我运行命令时,该命令将返回“无法识别的字段'快照'”。

完整的错误是:

Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'.

Mongodump --version返回:

mongodump version: built-without-version-string
git version: built-without-git-spec
Go version: go1.7.3
   os: linux
   arch: amd64
   compiler: gc
OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016

我可能需要降级我的版本?否则不确定从这里去哪里...


1
您的O / S和MongoDB服务器的版本是什么?您的mongodump --version输出表明您已经从源代码构建了工具,因此不清楚对应的MongoDB版本是什么。如果可能,我建议下载官方二进制文件。
Stennie

1
我遇到了同样的问题,我想这是因为我在mongoDB服务器4.0中使用了mongoexport 3.6.4。
安托万

Answers:


13

当然,mongodump与mongoDB服务器之间的版本有所不同(3.6与4.0)。

您可以使用docker进行救援:

docker run --rm -v $(pwd):/workdir/ -w /workdir/ mongo:4.0 mongodump -h server -d $database --out /workdir/dump/

借助docker,您无需安装即可使用精确版本的cli。

您甚至可以指定一个别名(在.bashrc中):

alias mongodump="docker run --rm -v $(pwd):/workdir/ -w /workdir/ mongo:4.0 mongodump"

注意:保存转储的文件夹将需要具有写权限,以便容器中的mongodb用户可以写入已安装的卷。这可以通过在运行上述命令之前手动设置转储文件夹的权限来实现。

在上面的示例中为:mkdir -m 777 dump。转储完成后,可以将权限修改回普通(即sudo chmod 755 dump)。


1
我不断收到错误消息Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied。我尝试了-u 0-o /tmp/dump,但无法正常工作。最后,我最终启动了一个容器,运行转储,然后将其复制到容器之外。有什么想法让我弄错了吗?
第三方

1
您需要适当地设置uid:docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
ltn100

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.