web-dev-qa-db-ja.com

gzipされたtarballを復元したいのですが、mongodump --archiveは何をしますか? --gzipでmongorestoreを行う方法

私はバックアップを作成しました

mongodump -h $RANDOM_SECONDARY_SUP -u $BACKUP_USER -p $BACKUP_PASSWD --out /data/$BACKUP_USER/sup-repl/sup_$DUMPFILE
tar cvzf /data/$BACKUP_USER/dbt/st_$DUMPFILE.tar.gz /data/$BACKUP_USER/st-repl/st_$DUMPFILE

--gzipを使用して復元しようとすると、エラーが発生します

mv st_$DUMPFILE.tar.gz test_restore.bson.gz
mongorestore --gzip test_restore.bson.gz
2016-09-08T18:05:14.975+0200    checking for collection data in tgdmead2_test_restore.bson.gz
2016-09-08T18:05:15.090+0200    restoring test.test_restore from tgdmead2_test_restore.bson.gz
2016-09-08T18:05:15.156+0200    Failed: test.test_restore: error restoring from test_restore.bson.gz: reading bson input: invalid BSONSize: 1635017060 bytes

ドキュメントで、gzip圧縮されたtarballは--archiveで作成する必要があると読みました

このパラメーターは何をしますか? targzでそれをエミュレートする方法は?

Mongorestoreは--gzipでどの形式を想定していますか?

2
Ivanov

あなたが抱えている問題は、--archiveで作成されたアーカイブ形式がtarballではないということだと思います(そして、ドキュメントには、私が見つけたどこにでもあるとは書かれていません)。むしろそれは here の詳細を見ることができるカスタムパッケージ形式です。コードのクイックスキャンに基づいて、それは一連のヘッダー、生のBSONを記述するメタデータを含む軽量形式のように見えます。スタンドアロンのバイナリを作成して互換性のあるアーカイブファイルを作成する以外は、手動で行うことはできません。

アーカイブなしでmongodumpを実行するが、--gzipを使用する場合、実際には 個々のファイルをgzip し、通常どおりにダンプを実行してから各ファイルをgzip圧縮することでエミュレートできます。フォルダを個別に。これらの圧縮ファイルは、理論的にはmongorestore --gzipで復元できます。

全体的には、3.2ツールで--archiveを使用し、手動で再作成しないようにすることをお勧めしますが、--gzipオプションは、大量の作業をせずに取得できる限り同じです。

4
Adam C