sql >> データベース >  >> NoSQL >> MongoDB

mongodumpを使用してMongoDBデータベースをバックアップする

    MongoDBでデータベースをバックアップする方法はいくつかあります。データベースをバックアップする簡単な方法の1つは、mongodumpを使用することです。 ツール。

    mongodump MongoDBデータベースからデータを読み取り、mongorestoreである忠実度の高いBSONファイルを作成します utitlityは、MongoDBデータベースを復元するために使用できます。

    mongodumpを使用 、コレクション、データベース、またはすべてのデータベースをバックアップできます。

    MongoDBデータベースツールを確認する

    mongodump MongoDBデータベースツールパッケージの一部です。 MongoDBデータベースツールは、MongoDBを操作するためのコマンドラインユーティリティのスイートです。

    MongoDBデータベースツール/mongodumpがある場合とない場合があります インストールされています。ターミナルまたはコマンドプロンプトで次のコマンドを実行して確認してください。

    mongodump --version

    お持ちでない場合は、MongoDB Webサイトにあるインストール手順を使用して、システムにインストールできます。

    コマンドを実行する場所

    mongodumpを実行する必要があります システムのコマンドラインからのコマンド(新しいターミナルやコマンドプロンプトウィンドウなど)。

    mongoから実行しないでください シェル。

    すべてのデータベースをバックアップする

    デフォルトのポート27017で実行されているローカルインスタンスのすべてのデータベースとコレクションをバックアップするには、mongodumpを使用します 引数なしのコマンド。

    mongodump

    上記のコードを実行すると、すべてのデータベースがdump/というフォルダーにダンプされます。 。

    localは除外されることに注意してください およびconfig データベース。

    mongodumpにも注意してください データベース内のドキュメントのみをキャプチャします。復元を行うときは、mongorestore またはmongod データの復元後にインデックスを再構築する必要があります。

    dump/のファイルは次のようになります フォルダ。

    tree dump

    結果:

    dump
    ├── PetHotel
    │   ├── employees.bson
    │   ├── employees.metadata.json
    │   ├── owners.bson
    │   ├── owners.metadata.json
    │   ├── pets.bson
    │   ├── pets.metadata.json
    │   ├── pettypes.metadata.json
    │   ├── players.bson
    │   ├── players.metadata.json
    │   ├── scores.bson
    │   ├── scores.metadata.json
    │   ├── students.bson
    │   └── students.metadata.json
    ├── admin
    │   ├── system.users.bson
    │   ├── system.users.metadata.json
    │   ├── system.version.bson
    │   └── system.version.metadata.json
    └── krankykranes
        ├── employees.bson
        ├── employees.metadata.json
        ├── products.bson
        └── products.metadata.json
    

    これらのファイルは明らかに、テストデータベースを含む私のMongoDBインストールに固有のものです。私の場合、3つのデータベースがダンプされました:PetHoteladmin 、およびkrankykranes

    特定の場所にバックアップ

    --outを使用できます または-o ダンプされたデータベースのファイルを配置する場所を指定します。

    例:

    mongodump --out=data/backups/

    または:

    mongodump -o=data/backups/

    この場合、各データベースフォルダはdata/backups/に直接出力されます。 フォルダ(つまり、/dump/はありません フォルダ)。

    特定のデータベースをバックアップする

    --dbを使用できます バックアップするデータベースを指定するパラメータ。

    mongodump --db=krankykranes

    これにより、krankykranesがダンプされます データベースをデフォルトのdump/ フォルダ。

    特定のコレクションをバックアップする

    --collectionを使用できます または-c バックアップするコレクションを指定します。

    例:

    mongodump --db=krankykranes --collection=products

    または:

    mongodump --db=krankykranes -c=products

    これにより、productsがダンプされます dump/krankykranesへのコレクション フォルダ。

    コレクションを除く

    --excludeCollectionを使用することもできます バックアップから除外する(つまり、バックアップに含めない)特定のコレクションを指定するパラメーター。

    例:

    mongodump --db=PetHotel --excludeCollection=employees

    これにより、PetHotelからすべてのコレクションがダンプされます employeesを除くデータベース コレクション。

    複数のコレクションを除外するには、別の--excludeCollectionを使用します 除外する各コレクションのパラメータ。

    例:

    mongodump --db=PetHotel --excludeCollection=employees --excludeCollection=students

    employeesは除外されます およびstudents バックアップからのコレクション。

    --excludeCollectionsWithPrefixを使用することもできます 指定されたプレフィックスを持つコレクションを除外するパラメータ。

    mongodump --db=PetHotel --excludeCollectionsWithPrefix=p

    pの文字で始まるコレクションを除くすべてのコレクションをダンプします 。

    次のものは、petで始まるすべてのコレクションを除外します 。

    mongodump --db=PetHotel --excludeCollectionsWithPrefix=pet

    複数の--excludeCollectionsWithPrefixを使用できます 複数のプレフィックスを持つコレクションを除外する引数。

    例:

    mongodump --db=PetHotel --excludeCollectionsWithPrefix=p  --excludeCollectionsWithPrefix=s

    出力を圧縮する

    --gzipを使用できます 出力を圧縮するパラメータ。

    mongodump --gzip --db=krankykranes

    これにより、個々のファイルが圧縮されます。

    tree dump

    結果:

    dump
    └── krankykranes
        ├── employees.bson.gz
        ├── employees.metadata.json.gz
        ├── products.bson.gz
        └── products.metadata.json.gz

    すべてのファイルに.gzがあることがわかります 拡張機能。

    アーカイブファイルまたは標準の出力ストリームに出力する場合、--gzip オプションは、アーカイブファイルまたはデータ出力をストリームに圧縮します。

    ビューをコレクションに変換

    --viewsAsCollectionsを使用できます 読み取り専用ビューをコレクションとしてエクスポートするためのパラメーター。

    mongodump --db=PetHotel --viewsAsCollections

    ビューをコレクションとしてエクスポートする場合、mongodump ビュー内のドキュメントを含むBSONファイルを生成します。 mongorestoreを使用する場合 生成されたBSONファイルを復元するには、ビューがコレクションとして復元されます。

    この引数を使用せずに、mongodump 各ビューのメタデータをエクスポートします。ビューのメタデータファイルをmongorestoreに含める場合 操作すると、ビューが再作成されます。

    --viewsAsCollectionsを使用する また、すべての標準コレクションを省略します。したがって、上記のコードを実行すると、dump/ フォルダ構造は次のようになります:

    tree dump

    結果:

    dump
    └── PetHotel
        ├── pettypes.bson
        └── pettypes.metadata.json

    私のPetHotel データベース、pettypesというビューがあります 。これをビューとしてエクスポートすると、メタデータのみがエクスポートされます。しかし、それをコレクションに変換すると、pettypes.bson ビューをビューとしてエクスポートした場合には存在しないファイルが作成されます。

    そのビューをコレクションに変換せずにエクスポートすると、次のようになります。

    mongodump --db=PetHotel --collection=pettypes

    次に、treeコマンドを実行して、フォルダー構造を取得します。

    tree dump

    結果:

    dump
    └── PetHotel
        └── pettypes.metadata.json

    したがって、ビューのメタデータのみがダンプされていることがわかります。

    クワイエットモード

    --quietを使用できます ターミナルまたはコマンドプロンプトウィンドウの出力を制限するパラメータ。

    mongodump --quiet

    これを使用しないと、バックアップされているビューやコレクションなどの大きなリストが表示される可能性があります。

    詳細モード

    反対に、--verboseを使用できます または-v 増加するパラメータ ターミナルまたはコマンドプロンプトウィンドウの出力。

    mongodump --verbose

    -vを繰り返すことで、冗長性を高めることができます 複数回形成します。

    例:

    mongodump -vvvv

    これをシステムで実行すると、冗長性が大幅に向上しました。

    バックアップクエリ結果

    --queryを使用できます または-q クエリの結果をダンプするパラメータ。

    例:

    mongodump --db=PetHotel --collection=pets --query='{ "type": "Dog" }'

    これを行うときは、クエリを一重引用符で囲みます。フィールドには二重引用符を使用できます。

    アーカイブと標準出力

    --archiveを使用できます または、出力を指定されたアーカイブファイルに書き込むか、アーカイブファイルが指定されていない場合は、標準出力(stdout)に書き込むパラメーター。 )別のプロセスにパイプできるようにストリーミングします。

    アーカイブファイルへの出力例:

    mongodump --archive=PetHotel.20201230.archive --db=PetHotel

    次の例では、標準の出力ストリームに書き込み、mongorestoreにパイプします。 :

    mongodump --archive --db=PetHotel --collection=pets --query='{ "type": "Dog" }' | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHotel.dogs'

    その結果、dogsという新しいコレクションが作成されます。 PetHotelに表示される データベース(およびコレクションには、typeを持つドキュメントのみが含まれます dogの値を持つフィールド 。

    アクセス制御

    前の例は、デフォルトのポートを使用してローカルマシンで実行されました。これは、mongodumpを実行できたことを意味します --hostなどを指定せずに 、--port--username 、など。

    これらのパラメータを使用してhomerとして認証する例を次に示します。 :

    mongodump --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --out=/backups/mongodump-2020-12-30

    --passwordを使用することもできます パラメータですが、しませんでした。 --userを渡すと ただし、--passwordではありません 、パスワードの入力を求められます。

    mongodumpに関する詳細情報

    mongodump ユーティリティは他にも多くの有用なパラメータを受け入れます。また、バックアップおよびリカバリ戦略の一部として使用する場合は、考慮すべきさまざまな要素があります。

    mongodumpを参照してください 詳細については、MongoDBWebサイトのドキュメントを参照してください。

    その他のオプション

    mongodump およびmongorestore 小規模なMongoDBデプロイメントをバックアップおよび復元するためのシンプルで効率的なツールですが、大規模なシステムのバックアップをキャプチャするのには理想的ではありません。

    MongoDBデータベースをバックアップする他の方法については、MongoDBWebサイトのMongoDBバックアップ方法を参照してください。


    1. パス「x」を更新すると、「x」で競合が発生します

    2. 複数のフィールドを使用したmongodbテキスト検索

    3. MongoDBのドキュメントを更新する

    4. リスト要素をRedisキャッシュに保存する方法