MongoDBのバックアップとリストア

MongoDBのバックアップとリストア
Page content

rocketchat を使用するためMongoDBGKEKubernetes 上で動かしていたが、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
Tumblr
Pinterest
はてブ