MongoDBのバックアップとリストア
Page content
rocketchat を使用するためMongoDB をGKE のKubernetes 上で動かしていたが、GKEの価格改定で2020年6月から運用費が高くなるため MongoDBをWebArena Indigo のVMにデータ移行させた。
mongoDB バックアップ
まずはコンテナの中に入る。以下例ではPod名を「rocketchat-0」としている。
kubectl exec -it rocketchat-0 /bin/bash
mongodumpコマンドを使ってバックアップを取る。オプションとして出力先のディレクトリと対象となるDB名を指定する。出力されたデータは複数ファイルで構成されている為、tarでアーカイブする。tar実行後はexit
でコンテナから抜ける。以下例ではDB名を「rocketchat」としている。
mkdir /tmp/mongodump
mongodump -o /tmp/mongodump/ -d rocketchat
cd /tmp
tar cvfz mongodump.tar.gz ./mongodump
exit
ローカルのPCからコンテナ上に作成したアーカイブファイルをダウンロードする。
kubectl cp rocketchat-0:/tmp/mongodump.tar.gz mongodump.tar.gz
mongoDB リストア
リストア先のサーバにて、バックアップデータを使ってリストアを行う。リストアコマンドmongorestoreでリストア対象のDB名とデータがあるディレクトリを指定する。–dropを付けると、リストア対象のデータベースがリストア先に既にある場合、データベースを削除する。
cd /tmp
tar xvfz mongodump.tar.gz
mongorestore -d rocketchat /tmp/mongodump/rocketchat/ --drop