48

製品サーバーでmongoデータベースをバックアップしてから、ステージングサーバーに復元しようとしていました。ここでいくつかの問題が発生します。データベースには多くのコレクションがあります。ステージング サーバーで復元したくないコレクションを無視したいと考えています。

ステージング データベースをダンプし、製品データベースをダンプしてから、-- dropオプションを使用して製品をステージングに復元することで、これにアプローチできます。ステージング データベースで指定されたコレクションを復元します。うーん…すごく悪い。

1.製品データベースをダンプする

mongodump --host product-server-host --username abcd --password bcda -d db -o pruduct-dump-dir

2. ステージング データベースのダンプ

mongodump --host staging-server-host --username abcd --password bcda -d db -o staging -dump-dir

3. すべてのコレクションを復元してから、コレクションを元に 戻します。 pruduct-dump-dir をステージング サーバーに復元します。

mongorestore --host staging-server-host --username abcd --password bcda --drop pruduct-dump-dir

mongorestore --host staging-server-host --username abcd --password bcda --drop --collection coll pruducting-dump-dir

ダンプしているときにignore-collectionのようなオプションはありますか? 任意の提案をいただければ幸いです:3

4

5 に答える 5

92

バージョン 3.0.0 から利用可能になりました

--excludeCollection <collection_name>
--excludeCollectionsWithPrefix <collection_prefix>

1 つ以上を除外するには繰り返します

ドキュメントをチェックアウトする

于 2015-03-10T23:32:38.667 に答える
9
mongodump --db test --excludeCollection=users --excludeCollection=salaries
于 2017-10-02T16:13:38.023 に答える
8

--collection COLLECTION_NAME必要なコレクションをダンプするために追加できます。デフォルトでは、データベースからダンプするコレクションを指定しない場合、MongoDumpはそのデータベース内のすべてのコレクションをダンプします。

于 2013-04-12T09:18:51.467 に答える
0

mongo dbのバックアップ中に同じことをしなければなりませんでした。Python (またはその他の言語) を使用する場合は、同様のアプローチも使用できます。mongodump を実行した後、不要なコレクションの bson と metadata.json ファイルを削除するだけです。

    import os
    EXCLUDE_COLLECTIONS = ['collection_1', 'collection_2']
    db_dump_path = "/Path/to/mongodump"
    db_name = "name_of_db"
    for collection_name in EXCLUDE_COLLECTIONS:
        bson_file_path = os.path.join(db_dump_path, db_name, '{}.bson'.format(collection_name)
        meta_file_path = os.path.join(db_dump_path, db_name, '{}.metadata.json'.format(collection_name)
        if os.path.exists(bson_file_path) and os.path.exists(meta_file_path):
            os.remove(bson_file_path)
            os.remove(meta_file_path)
于 2019-02-19T15:11:00.380 に答える