このページでは mongodumpの例を示します。
mongo shell ではなく、システム コマンドラインから mongodump を実行します。
コレクションで を使用するmongodump
次の操作では、 testという名前のデータベースにrecordsという名前のコレクションのみを含むダンプファイルが作成されます。 この例では、データベースはポート27017のローカル インターフェースで実行されています。
mongodump --db=test --collection=records
mongodumpデータベースで を使用し、指定されたコレクションを除外する
次の操作を実行すると、test データベースのすべてのコレクション(users と salaries: を除く)がダンプされます。
mongodump --db=test --excludeCollection=users --excludeCollection=salaries
アクセス制御で を使用するmongodump
次の例では、 mongodumpは、ホストmongodb1.example.net上のポート37017で実行中のデータベースから、 /opt/backup/mongodump-2011-10-24にあるデータベース ダンプを作成し、ユーザー名userを使用して次のように認証します。
mongodump --host=mongodb1.example.net --port=37017 --username=user --authenticationDatabase=admin --out=/opt/backup/mongodump-2011-10-24
--passwordを含めない場合、 mongodumpはユーザーにパスワードの入力を要求します。
アーカイブ ファイルへの出力
アーカイブ ファイルにダンプを出力するには、 --archiveオプションとアーカイブ ファイル名を指定してmongodumpを実行します。 たとえば、次の操作では、 testデータベースのダンプを含むファイルtest.20150715.archiveが作成されます。
mongodump --archive=test.20150715.archive --db=test
出力を圧縮
出力ダンプ ディレクトリ内のファイルを圧縮するには、新しい--gzipオプションを指定してmongodumpを実行します。 たとえば、次の操作は圧縮ファイルをデフォルトのdumpディレクトリに出力します。
mongodump --gzip --db=test
mongodumpでアーカイブ ファイル出力を圧縮するには、 --gzipオプションと--archiveオプションを組み合わせて使用し、圧縮ファイルの名前を指定します。
mongodump --archive=test.20150715.gz --gzip --db=test
データベースのコピーと複製
MongoDB バージョン 4.2 以降では、非推奨の copydb コマンドと clone コマンドが削除されます。
別の方法として、ユーザーはmongodumpとmongorestore ( mongorestoreオプション--nsFromと--nsToとともに)を使用できます。
たとえば、test データベースをデフォルト ポート 27017 で実行中のローカル インスタンスから同じインスタンス上の examples データベースにコピーするには、次の操作を実行します。
mongodumpを使用して、testデータベースをアーカイブmongodump-test-dbにダンプします。mongodump --archive="mongodump-test-db" --db=test アーカイブから(データベース名を変更したうえで)復元するには、
mongorestoreを--nsFromおよび--nsToとともに使用します。mongorestore --archive="mongodump-test-db" --nsFrom="test.*" --nsTo="examples.*"
Tip
必要に応じて、URI またはホスト、ユーザー名、パスワード、認証データベースの指定など、追加のオプションを含めます。
AWS IAM 認証情報を使用して MongoDB Atlas クラスターに接続
バージョン 100.1.0 の新機能。
Amazon Web Services IAM 認証情報 connection stringによる認証をサポートするように構成されたMongoDBmongodump Atlasクラスターに接続するには、次のような から を提供します。
mongodump 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>
AtlasAmazon Web Servicesこの方法で IAM 認証情報を使用してMONGODB-AWSauthentication mechanism $externalauthSourceに接続するには、この例に示すように、 と が使用されます。
Amazon Web Servicesセッション トークンを使用する場合 同様に、AWS_SESSION_TOKENauthMechanismProperties 値を次のとおり指定します。
mongodump 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>' <other options>
注意
AWS アクセスキー ID、シークレット アクセス キー、またはセッション トークンに次の文字が含まれている場合。
: / ? # [ ] @
これらの文字は パーセントエンコーディング を使用して変換する必要があります。
あるいは、次のように、 、 、 --usernameオプションを使用して、Amazon Web Services IDstring--passwordアクセスキー--awsSessionToken 、シークレットアクセスキー、およびオプションのセッショントークンをそれぞれ接続 の外部で提供することもできます。
mongodump 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' --username <aws access key id> --password <aws secret access key> --awsSessionToken <aws session token> <other options>
コマンドライン パラメーターとして指定する場合、前の 3 つのオプションはパーセント エンコーディングを必要としません。
これらの認証情報は、標準のAmazon Web Services IAM 環境変数を使用してプラットフォーム上で設定することもできます。MONGODB-AWS authentication mechanism: を使用すると、mongodump は次の環境変数をチェックします。
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN
設定されている場合、これらの認証情報を接続文字列や明示的なオプションで指定する必要はありません。
注意
Amazon Web Services の環境変数を使用してこれらの値を指定する場合、これらの認証情報に対応する明示的オプションまたは接続文字列 オプションと混在させることはできません。アクセス キー ID とシークレット アクセス キー(および使用する場合はセッション トークンも)の環境変数を使用、または代わりに明示的オプションもしくは接続文字列 オプションをそれぞれを指定します。
次の例では、bash shell で環境変数が設定されます。
export AWS_ACCESS_KEY_ID='<aws access key id>' export AWS_SECRET_ACCESS_KEY='<aws secret access key>' export AWS_SESSION_TOKEN='<aws session token>'
他の shell で環境変数を設定する場合の構文は異なります。詳細については、お使いの shell のドキュメントを参照してください。
環境変数が設定されていることを確認するには、次のコマンドを使用します。
env | grep AWS
環境変数の設定後に、次の例を実行して MongoDB Atlas クラスターに接続します。
mongodump 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>
特定データベースによる認証
ダンプ中のものとは別のデータベースで認証するには、MongoDB URI にauthSource を指定する必要があります。
この例では、次のことが行われます。
ユーザー名
myuserとパスワードmypasswordが使用されます。このユーザーにはtestdbへの読み取りアクセス権があります。adminデータベースは、ユーザーの認証に使用されます。testdbデータベースをダンプ中です。
mongodump 'mongodb+srv://myuser:mypassword@cluster0.example.com/?authSource=admin' --db testdb
コンシステントバックアップ ファイルの作成と復元
oplogエントリを使用して一貫性のあるmongodumpバックアップ ファイルを作成するには、 mongodump --oplogオプションを使用します。 バックアップ ファイルからデータを復元するには、 mongorestore --oplogReplayオプションを使用します。
oplogには、データベース書込み (write) 操作の履歴が含まれます。
mongodump 出力:
コレクション ドキュメント、メタデータ、オプション。
インデックスの定義。
--oplogが指定されている場合に、mongodumpの実行中に発生する書き込み。
oplog オプションで mongodump を使用する
mongodump --oplog は、 mongodump出力ディレクトリの最上位にoplog.bsonという名前のファイルを作成します。 ファイルには、 mongodumpの実行中に発生する書込み操作が含まれています。 mongodumpが完了した後に発生する書込みは ファイルに記録されません。
mongodumpを使用してシャーディングされたクラスターをバックアップするには、「データベース ダンプを使用して自己管理型シャーディングされたクラスターをバックアップする 」を参照してください。
oplogRePlay オプションで mongorestore を使用する
oplog.bsonファイルから oplog エントリを復元するには、 mongorestore --oplogReplayを使用します。 データベースが最新で、 mongodumpの実行中に発生したすべての書き込みが含まれていることを確認するには、 mongodump --oplogをmongorestore --oplogReplayと併用します。
詳細
クラスター間の移行のためのmongosync ユーティリティ
Atlas でのデータの移行またはインポート
Atlas でのデータのバックアップ、復元、アーカイブ