MongoDBをそろそろバージョンアップしないとなー、と思っていたら幾星霜、とうとうやる気になったらなんと3.4から7.0まで上げないといけない、とかいう状況に遭遇した場合、
通常は ローリングアップデート でやるんだろうけれども、そうするとえーと、
3.4 → 3.6 → 4.0 → 4.2 → 4.4 → 5.0 → 6.0 → 7.0
と、なんとまあ、七回もバージョンアップを繰り返さなきゃいけなくなります。
で、ふつうは、じゃあダウンタイムは許容するとしてダンプ&リストアで何とかならないのか、と思いますよね。
でもどこをさがしてもなんか”ダンプ&リストアで何とか”なるのかどうか公式ドキュメントだとよくわからない。
https://www.mongodb.com/community/forums/t/dump-and-restore-between-version-3-6-and-5-0/168933
には
If downtime is acceptable and you have a large number of major releases to upgrade through, you can also consider a migration using mongodump and mongorestore.
とあるものの、
will encounter different issues depending on the provenance of your data
とかあるし、ちょっと心配ですが、まあきちんとテストすれば、というかローリングアップデートしたからといってテストしないわけでもないし、こっちの方が楽かなーと思います。
ちなみにこちらでは docker 使って複数バージョン間バージョンアップを自動化するという力業が紹介されてて、なるほどすごいなーという感じです。
https://stackoverflow.com/questions/37833561/restoring-the-database-dump-of-an-older-version-of-mongo-to-a-new-version-of-mon
【CentOS7】 MongoDBを2.6から3系にアップデートする
いろいろと面倒なことはせず、サクッとダンプ&リストアでやっつけます。
バックアップ&古いの削除
service mongod stop
mkdir mddump
mongodump --dbpath /var/lib/mongo ./mddump
mkdir mdbackup
mv /var/lib/mongo ./mdbackup/
yum remove mongo*
3.2インストール
vi /etc/yum.repos.d/mongodb-org-3.2.repo
とし、内容を
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
とします。
もっと新しいバージョンにしたい方は https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ をご参照ください。
yum install mongodb-org mongodb-org-server
を実行します。
vi /etc/mongod.conf
とし、17行目のコメントを外した上で
engine: wiredTiger
とします。engineという文字列の前に行頭から半角空白が二個入っているようにします。コロンの後ろのスペースも必要です。
リストア
service mongod start
mongorestore ./mddump
以上~