MongoDBでmongodumpを利用してバックアップを取得する

バックアップ
本記事の内容
mongodumpを利用してMongoDBのdatabase単位のバックアップを行う手順を解説します。
ツールを利用せずに手軽にコマンドでMongoDBでバックアップを取る方法を探している方向けの記事です。
MongoDBで簡単にバックアップを取る方法はあるかな。
mongodumpがコマンド実行で取得できるから便利だよ。

mongodumpを利用してMongoDBのdatabase単位のバックアップを行う手順を解説します。

database単位のバックアップはLinuxコマンドで手軽に取得できます。

MongoDBのバックアップ方法の種類

MongoDB公式サイト(英語)で推奨されているバックアップ方法は以下の4つがあります。

MongoDBのバックアップ方法
  • Atlasを使ってバックアップ
  • MongoDB Cloud ManagerまたはOps Managerを使ってバックアップ
  • データファイルのコピーによるバックアップ
  • mongodumpを使ってバックアップ

mongodumpはツールを使わずに手軽にバックアップが取れるので、この記事ではmongodumpを解説します。

Linuxからmonogdumpコマンドでバックアップが取れて、mongorestoreコマンドで復元ができますので、手軽にバックアップ運用を始めたい方には便利です。

mongodumpはdatabase単位(複数のcollection)まとめてバックアップを取ります。collection単位でのCSVを取得したい場合は、mongoexport(MongoDBのデータをcsvファイルで検証する(mongoexport))を利用できますよ。

  • database単位のバックアップ → mongodump
  • collection単位でcsvファイル出力 → mongoexport

mongodumpを使ったMongoDBのバックアップ取得の手順

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

Linuxのコマンドラインからmongodumpコマンドを入力します。

mongodump --port 27017 -u kenne -p password --db common --out /home/kenne/db_backup

サンプルのコマンドで指定しているオプションは以下ですが、全て任意です。

  • --port: DBアクセス時のポート番号
  • -u: ユーザ名
  • -p: パスワード
  • --db: database名(ここではcommon)(入力しないと全database)
  • --out: バックアップの出力先(入力しないと現在のディレクトリ)

成功した際は以下のようなメッセージが出力され、バックアップの出力先にcollection単位でbson、json形式でバックアップデータが作成されます。

2019-10-26T23:30:58.555+0900	done dumping common.test1 (1 document)

詳細なドキュメントを見たい方は公式ドキュメント(mongodump)(英語)を参照ください。

MongoDBのデータベースをリストアする

mongorestoreコマンドを利用します。同じくLinuxのコマンドラインから入力します。

mongorestore --port 27017 -u kenne -p password -d common --drop /home/kenne/db_backup

サンプルのコマンドで指定しているオプションは以下です。

  • --port: DBアクセス時のポート番号
  • -u: ユーザ名
  • -p: パスワード
  • -d: データベース名
  • --drop: 実行前にdatabaseを削除

成功した際は以下のようなメッセージが出力されます。

2019-10-27T01:27:00.677+0900	finished restoring common.test1 (1 document)

詳細は公式ドキュメント(mongorestore)(英語)から確認できます。

databaseに作成したユーザについて

バックアップ運用では特に気にする必要はありませんが、mongodumpではユーザ情報はバックアップされませんので、ユーザを復元する場合はMongoDBのdb.createUser()で再作成する必要があります。

databaseを削除してもユーザは消えませんが、何らかの問題で消えてしまった場合は再作成してください。

MongoDBのバックアップの運用の注意点

バックアップ運用をする上での細かい仕様上の注意点を確認しておきましょう。

mongodumpは上書き保存

mongodumpコマンドを定期的に実行する場合の注意点です。

mongodumpコマンドの出力先フォルダにバックアップが残っている場合、上書き保存となります。

特に気にしなくても大丈夫ですが、collectionを削除した場合などは、誤ってリストアしてしまう場合がありますので、mongodumpの実行前に出力先フォルダを空にしておくと綺麗な状態でバックアップが取れます。

mongorestoreの実行前にdatabaseを削除する

mongorestoreはInsertで復元するため、既存のcollectionが残っている場合、Updateはしません。
きれいにmongodumpの状態を復元したい場合は、MongoDBからdatabaseを削除しましょう。

上記サンプルのように–dropオプションを設定すればOKです。

MongoDBのバックアップ(mongodump)のまとめ

mongodumpはdatabase単位でバックアップを手軽に取得できます。

ツールを利用せずにコマンドでバックアップを取りたい人は試してみてくださいね。

自作アプリケーションを作るならさくらVPSが手軽で使いやすいです。MongoDBは軽いので最低料金プランのVPSでも運用できます。【初めてでも簡単!】VPSの比較ランキングでも紹介しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


ABOUT US

ケネ
はじめまして、ケネです。

Node.jsの技術情報を書いています。

一人でも多くの方と「自分でもできた」感覚を共有したいので、なるべくわかりやすく、実体験ベースでのブログを心がけています。
技術で自分の世界を広げましょう。

不明点や質問があればお気軽にコメントください。