Mongodump:認識されないフィールド「スナップショット」


33

mongo toolsからmongodumpを使用して、サーバーのバックアップをダウンロードしています。ただし、コマンドを実行すると、コマンドは「認識されないフィールド 'snapshot'」を返します。

完全なエラーは次のとおりです。

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のどのバージョンのかもしれないと対応していることは明らかではありません。可能であれば、公式バイナリをダウンロードすることをお勧めします。
ステニー

1
同じ問題が発生しました。mongoDBサーバー4.0でmongoexport 3.6.4を使用しているためだと思います。
アントワーヌ

回答:


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/

ドッカーを使用すると、インストールせずにツール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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.