【MongoDB】 複数バージョンをスキップしてバージョンアップをしたい

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

以上~