[MongoDB] バージョン 2.6 から 3.6 まで、バージョンアップによる変遷と移行時の考慮点
こんにちは、菊池です。この記事はHoneyHoney大宮店よりお送りしています。
先の記事にて、まもなく登場するMongoDBの最新バージョン、4.0の新機能を紹介しました。
一方で、以前のバージョンのMongoDBをバージョンアップせず、古いまま動作している環境も多いのではないでしょうか。この記事では、バージョン2.6以降、最新の3.6まで、インフラ視点での変化点を紹介します。
古くなった環境をバージョンアップするつ判断の助けになれば幸いです。
MongoDB リリースバージョン(v2.6 以降)
2.6以降の各メジャーバージョンのリリース日と、最新のマイナーバージョンです。
メジャーバージョン | メジャーバージョンリリース日 | 最新マイナーバージョン(リリース日) |
2.6 | 2014/04/08 | 2.6.12(2016/3/24) |
3.0 | 2015/03/03 | 3.0.15(2017/05/15) |
3.2 | 2015/12/08 | 3.2.19(2018/02/06) |
3.4 | 2016/11/29 | 3.4.13(2018/02/10) |
3.6 | 2017/12/05 | 3.6.4(2018/04/16) |
※ 2018/04/16、バージョン3.6.4がリリースされました
最近では、概ね1年ごとに新しいメジャーバージョンが登場しています。
バージョン3.2以降は、最近までアップデートが提供されているようです。一方で、バージョン2.6は最新マイナーバージョンでも2年以上前となっています。
バージョンアップに伴うインフラ視点での変化点
バージョン 3.0
新しいストレージエンジン、WiredTigerが提供されました。WiredTigerは従来のMMAPv1と比較し、以下のようなメリットがあります。
- 更新時のロックがドキュメント単位に(2.6以前のMMAPv1はデータベース単位)なりました。ロック待ち時間が実質なくなり、書き込み性能の大幅向上が見込めます。
- データ圧縮に対応。JSONデータを格納する都合、データサイズが肥大化することが多いMongoDBですが、データ圧縮より最大1/20程度まで圧縮されることもあるようです。また、データファイルのフラグメンテーションも発生しなくなりますので、ディスク・メモリを無駄に消費することがなくなります。
- メモリ使用量の制限が可能になります。
- ストレージ統計情報を出力可能になりました。
バージョン2.6 -> 3.0にバージョンアップしても、基本的に利用していたストレージエンジンがそのまま引き継がれます。3.0におけるMMAPv1からWiredTigerへの移行は、以下の記事にて紹介しました。
バージョン 3.2
このバージョンでは、3.0で登場したストレージエンジン、WiredTigerがデフォルトになりました。従来のMMAPv1も使用可能ですが、その場合には明示的に指定する必要があります。
また、レプリケーション環境では、プロトコルのバージョンアップ(protocol version 1)によりプライマリ選出が高速化しました。これにより、フェイルオーバーが高速化しています。
シャード構成では、Configサーバをレプリカセット構成で組むことが可能になりました。これにより、通常のノードと同様に扱え、3台以上の構成も可能になります。バージョン3.2への移行および、Configサーバをレプリカセットに移行する手順は以下で紹介しています。
バージョン 3.4
このバージョンでは、従来型(非レプリカセット構成)のConfigサーバが非サポートとなりました。バージョンアップ、移行のためにはConfigサーバをレプリカセット構成にしておく必要があります。
また、Configサーバとして動作させるノードには、shardsvrとして明示的に指定する必要があります。以下が設定ファイルでのclusterRole指定方法です。
sharding: clusterRole: configsvr
バージョン 3.6
mongodおよびmongosのデフォルトで、lodalhost(127.0.0.1)のみにバインドするようになりました。バインドIPを明示的に設定する必要があります。
net: bindIp: 172.31.xxx.xxx
また、レプリカセットで従来のプロトコル(protocol version 0)は非推奨になっています。こちらは、クラスタメンバーが3.2以降を利用していれば特に問題ありません。
まとめ
以上、バージョン2.6から現状最新の3.6までの変遷と、インプラ観点での主要な変更点を紹介しました。バージョンアップすることで、多くの恩恵があることがわかるかと思います。
まもなく、最新のメジャーバージョン4.0が登場します。その前に、古い環境をバージョンアップして備えましょう!