MongoDBのフルレストア方法まとめ
購入から4年間、24時間365日サーバーとして稼働していたIntel NUCがお亡くなりになって、中で稼働していたMongoDBをフルレストアする必要があったので、作業方法を備忘録として残します。
公開日:2020年12月15日
バックアップファイルを確保
まず、大前提としてバックアップファイルがなければフルレストアはほぼ不可能です。今回は、日次でmongodumpで全てのDBのファイルを自動バックアップしてあったので、そこからレストアします。
mongodumpの最終バックアップが午前3時で、お亡くなりになったのが4時だったので1時間の差分は無視します。(無視しても影響が少ないバッチサーバーなので)
MongoDBをDockerで起動する
まずはMongoDBサーバーを立ち上げます。以前はUbuntuに直接インストールしていたのですが、4年も経って現在はほとんどをDockerに移行しているので、この機会にMongoDBサーバーもDockerに移行させます。
version: '3.1'
services:
mongo:
image: mongo
restart: always
ports:
- 27017:27017
volumes:
- ./db:/data/db
- ./configdb:/data/configdb
特別解説は必要ないかと思いますが、volumesのdbとconfigdbのローカルマウントは絶対やった方がいいです。何かの原因でコンテナが落ちた時にまたレストアする必要が出てきてしまいます。
なお、今回は社内イントラのみのサーバーなので、ID・パスワードの設定はしていません。
ローカルにMongo Shellなどを入れる
MongoDBのレストアには「mongorestore」というコマンドが必要なので、ローカル(macOS)にmongoをインストールします。
おなじみのbrewで入れようとすると、、、
Error: No available formula or cask with the name "mongodb".
こちらによると、公式のMongoDBはOSS(オープンソースソフトウェア)出なくなったからだとか。
現在はコミュニティ版があるようなのでインストールします。
brew tap mongodb/brew
brew install mongodb-community
これでmongorestoreが使えようになりました。
なお、Mongo shellだけをインストールすることも可能ですが、Mongo shellには「mongodump」「mongorestore」が内包されていないので要注意です。
新MongoDBサーバーにレストアする
さてここまで来たらレストアすればおしまいです。
バックアップファイル(.bsonファイル)のあるディレクトリで下記のコマンドを実行します。
mongorestore -h MongoDBサーバーのIPアドレス -p 27017 --authenticationDatabase admin -u ユーザー名 -p パスワード -d DB名 .
自動的にレストアが始まります。
あとはMongoDB Compassなどのクライアントでデータがきちんと再現できているかをチェックすればOKです。
MongoDBのフルレストア方法でした。
DBは基本的に放置プレイなのでこういうイレギュラー時の対応を忘れがちなのと、MongoDBは現在は下火なのか情報が少ないので、自分でも探すのが大変だったので備忘録として残しました。
新着ノート
-
NUXT3
公開日:2023年2月16日
-
NUXT3
公開日:2023年1月30日
新着コード
-
Vue.js
公開日:2022年4月18日
-
Vue.js
公開日:2022年4月13日