Dav*_*ave 71 mongodb mongodump
我正在使用 mongo 工具中的 mongodump 下载我的服务器的备份。但是,当我运行该命令时,该命令返回“无法识别的字段‘快照’”。
完整的错误是:
Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'.
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我可能需要降级我的版本?否则不确定从这里去哪里......
小智 118
添加 --forceTableScan
例子:
mongodump --forceTableScan -d database_name -o target_directory
Run Code Online (Sandbox Code Playgroud)
http://aug2uag.blogspot.com/2018/08/mongoexport-unrecognized-field-snapshot.html
该错误来自 mongo 4.0 中引入的 mongo 快照功能(https://docs.mongodb.com/manual/reference/read-concern-snapshot/)
如果您使用较旧的 mongo 客户端 (<4.0) 转储/导出更新的 MongoDB,您将收到错误
无法识别的字段“快照”
使用“forceTableScan”将阻止快照功能变为活动状态,这不会出现错误
小智 25
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/
Run Code Online (Sandbox Code Playgroud)
使用 docker,您可以使用精确版本的工具 cli,而无需安装它。
您甚至可以指定别名(在 .bashrc 中):
alias mongodump="docker run --rm -v $(pwd):/workdir/ -w /workdir/ mongo:4.0 mongodump"
Run Code Online (Sandbox Code Playgroud)
注意:保存转储的文件夹需要具有写入权限,以便容器中的 mongodb 用户可以写入已安装的卷。这可以通过在运行上述命令之前手动设置转储文件夹的权限来实现。
在上面的例子中,这将是:mkdir -m 777 dump. 转储完成后,可以将权限修改回正常(即sudo chmod 755 dump)。
| 归档时间: |
|
| 查看次数: |
43543 次 |
| 最近记录: |