mongodumpを利用してMongoDBのdatabase単位のバックアップを行う手順を解説します。
database単位のバックアップはLinuxコマンドで手軽に取得できます。
Contents
MongoDBのバックアップ方法の種類
MongoDB公式サイト(英語)で推奨されているバックアップ方法は以下の4つがあります。
- 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の比較ランキングでも紹介しています。