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つのデータベースがダンプされました:PetHotel
、admin
、および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バックアップ方法を参照してください。