MongoDBのバックアップ・リストア・エクスポート

こんにちは、汐留みずほです。

個人的に管理しているシステムで、MongoDBに触る機会があったので、書き残しておこうと思います。

MongoDBのデータ出力ツール

MongoDBのデータ出力ツールに、mongodumpとmongoexportとがあります。mongodumpはBSON形式というバイナリデータで出力し、インデックスなども含めたデータベースの情報を完全に含むためバックアップとして活用できます(リストアにはmongorestoreというツールを使用します)。mongoexportはCSVまたはJSONのテキストデータで出力します。データそのものをテキストとして扱ったり、他のツールとの連携用に使用するのに向いているようです(対となるツールとしてはmongoimportというものがあります)。

本記事ではmongodump/mongorestoreを使ったバックアップとリストアの手順、mongoexportを使ったエクスポートの手順について紹介します。

以下の前提で記載します。

  • MongoDBのインストールされているホスト上で実行
  • MongoDBのポート番号は変更していない

mongodumpでバックアップ/リストア

以下のコマンドでDBのバックアップが取得できます。
# mongodump --db DB Name

dumpというディレクトリが作成され、その中にbsonファイルとjsonファイルが生成されます。

# tree --charset=x dump
dump
`-- database
    |-- attachments.bson
    |-- attachments.metadata.json
    |-- bookmarks.bson
    |-- bookmarks.metadata.json
    |-- comments.bson
    |-- comments.metadata.json
    |-- configs.bson
    |-- configs.metadata.json
    |-- pages.bson
    |-- pages.metadata.json
    |-- revisions.bson
    |-- revisions.metadata.json
    |-- updateposts.bson
    |-- updateposts.metadata.json
    |-- users.bson
    `-- users.metadata.json

1 directory, 16 files
bsonファイルがデータ本体のバイナリファイル、jsonファイルはコレクションごとのメタデータが入ったテキストファイルです。後述するmongoexportで出力されるjsonファイルとは異なるものです。

以下のコマンドでdumpからMongoDBへのリストアを実行します。
# mongorestore --db DB Name dump/DB Name

mongoexportでエクスポート

以下のコマンドでコレクションを指定したエクスポートを実行します。

JSON形式で出力

# mongoexport --db DB Name -c Collection Name --out output.json

CSV形式で出力

# mongoexport --db DB Name -c Collection Name --csv --out output.csv

まとめ

今回はオプションの細かい解説などは省きました。詳細は以下の公式ドキュメントを参考になさってください。
mongodump
mongorestore
mongoexport
mongoimport