このチュートリアルでは、

mongoexport`と

mongoimport`コマンドを使ってMongoDBのバックアップと復元を行う方法を説明します。

1. mongoexportを使ったバックアップデータベース

`mongoexport`を使ってデータベースをバックアップする方法を示す例はほとんどありません。

よく使われるオプションのいくつかを見直してください。

$ mongoexport
Export MongoDB data to CSV, TSV or JSON files.

options:
  -h[--host]arg         mongo host to connect to ( <set name>/s1,s2 for
  -u[--username]arg     username
  -p[--password]arg     password
  -d[--db]arg           database to use
  -c[--collection]arg   collection to use (some commands)
  -q[--query]arg        query filter, as a JSON string
  -o[--out]arg          output file; if not specified, stdout is used

1.1すべてのドキュメント(すべてのフィールド)を “domain-bk.json`ファイルにエクスポートします。

$ mongoexport -d webmitta -c domain -o domain-bk.json
connected to: 127.0.0.1
exported 10951 records

1.2フィールド “domain”と “worth”のみを持つすべての文書をエクスポートします。

$ mongoexport -d webmitta -c domain -f "domain,worth" -o domain-bk.json
connected to: 127.0.0.1
exported 10951 records

1.3検索クエリを含むすべてのドキュメントをエクスポートします。この場合、 “worth> 100000″のドキュメントのみがエクスポートされます。

$mongoexport -d webmitta -c domain -f "domain,worth" -q '{worth:{$gt:100000}}' -o domain-bk.json
connected to: 127.0.0.1
exported 10903 records

1.4ユーザ名とパスワードを使用して、mongolab.comのようなリモートサーバに接続します。

$ mongoexport -h id.mongolab.com:47307 -d heroku__app -c domain -u username123 -p password123 -o domain-bk.json
connected to: id.mongolab.com:47307
exported 10951 records

エクスポートされたファイルを確認します。

$ ls -lsa
total 2144
   0 drwxr-xr-x   5 mkyong  staff      170 Apr 10 12:00 .
   0 drwxr-xr-x+ 50 mkyong  staff     1700 Apr  5 10:55 ..
2128 -rw-r--r--   1 mkyong  staff  1089198 Apr 10 12:15 domain-bk.json

2. mongoimportでデータベースを復元する

`mongoimport`を使ってデータベースを復元する方法を示す例はほとんどありません。

よく使われるオプションのいくつかを見直してください。

$ mongoimport
connected to: 127.0.0.1
no collection specified!
Import CSV, TSV or JSON data into MongoDB.

options:
  -h[--host]arg       mongo host to connect to ( <set name>/s1,s2 for sets)
  -u[--username]arg   username
  -p[--password]arg   password
  -d[--db]arg         database to use
  -c[--collection]arg collection to use (some commands)
  -f[--fields]arg     comma separated list of field names e.g. -f name,age
  --file arg              file to import from; if not specified stdin is used
  --drop                  drop collection first
  --upsert                insert or update objects that already exist

2.1ファイル “domain-bk.json”からすべての文書を “webmitta2.domain2″という名前のdatabase.collectionにインポートします。存在しないデータベースまたはコレクションはすべて自動的に作成されます。

$ mongoimport -d webmitta2 -c domain2 --file domain-bk.json
connected to: 127.0.0.1
Wed Apr 10 13:26:12 imported 10903 objects

2.2すべてのドキュメントをインポートし、すでに存在するオブジェクトを挿入または更新します( `__id`に基づいて)。

$ mongoimport -d webmitta2 -c domain2 --file domain-bk.json --upsert
connected to: 127.0.0.1
Wed Apr 10 13:26:12 imported 10903 objects

2.3ユーザ名とパスワードを使用してリモートサーバ-mongolab.comに接続し、ローカルファイル `domain-bk.json`からリモートMongoDBサーバにドキュメントをインポートします。

$ mongoimport -h id.mongolab.com:47307 -d heroku__app -c domain -u username123 -p password123 --file domain-bk.json
connected to: id.mongolab.com:47307
Wed Apr 10 13:26:12 imported 10903 objects

参考文献

Doc – MongoDBデータのインポートとエクスポート]

リンク://タグ/バックアップ/[バックアップ]リンク://タグ/エクスポート/[エクスポート]リンク://タグ/インポート/[インポート]リンク://タグ/mongodb/[mongodb]