Node.jsで暗号資産アービトラージ

ビットコイントレード中心にNode.jsで実際に作るためのレシピ

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

※この記事は2019/10/30に更新されました。

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

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

ツールを利用せずに手軽にコマンドでMongoDBでバックアップを取りたい人向けの記事です。

バックアップ

MongoDBのバックアップ方法について

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

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

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

Linuxからmonogdumpコマンドでバックアップが取れて、mongorestoreコマンドで復元ができます。

collection単位でのバックアップであればmongoexportを利用します。

  • database単位(複数のcollection)のバックアップ → mongodump
  • collection単位のバックアップ → mongoexport

MongoDBのデータをcsvファイルで検証する(mongoexport) - Node.jsで暗号資産アービトラージ

バックアップ取得の手順

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

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

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

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

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

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

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

公式ドキュメント(mongodump)(英語)

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

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

サンプルのコマンドで指定しているオプションは以下です。
--port: DBアクセス時のポート番号
-u: ユーザ名
-p: パスワード
--authenticationDatabase: データベース名(必須)

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

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

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

公式ドキュメント(mongorestore)(英語)

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

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

databaseを削除してもユーザは消えないので普段は気にする必要はありませんが、何らかの問題で消えてしまった場合は再作成してください。

バックアップの運用

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

mongodumpの実行前に出力先フォルダを空にしておく

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

mongodumpコマンドの出力先フォルダにバックアップが残っている場合、更新があれば上書き保存となるため、削除したcollectionが残っている場合があります。

mongodump実行前にrmコマンドで前回分のバックアップを消しておきましょう。

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

mongorestoreはInsertで復元するため、既存のcollectionが残っている場合、Updateはしません。

きれいにmongodumpの状態を復元したい場合は、MongoDBからdatabaseを削除しましょう。

コマンド実行の流れは以下となります。

mongo --port 27017
use common
db.dropDatabase()
exit
mongorestore --port 27017 -u kenne -p password --authenticationDatabase common /home/kenne/db_backup

まとめ

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

ツールを利用せずにコマンドでバックアップを取りたい人にオススメの方法です。

www.kennejs.com