MongoDBの更新
2024年11月13日の時点で
オンプレ版もなるべく6.0まで更新する事をおすすめしますshokai.icon
MongoDB 5.0未満(4.x系など)では、appコンテナが起動しません
MongoDBはプログラムだけでなく、データにもバージョンが付いている MongoDB serverは、1つ前のバージョンのデータを読む事ができます
MongoDB server 3.8は、3.8と3.6のデータを読める
MongoDB server 3.6は、3.6と3.4のデータを読める
MongoDB server 4.0は、4.0のデータを読める
MongoDB 3.8は存在しない
3.6は読めない。4系と3系ではデータの互換性が無い
MongoDB server 4.2は、4.2と4.0のデータを読める
MongoDB server 4.4は、4.2と4.4のデータを読める
MongoDB 4.6は存在しない
MongoDB server 5.0は、4.4と5.0のデータを読める
MongoDB server 6.0は、5.0と6.0のデータを読める
MongoDBが古い場合
推奨バージョンを満たしていない場合、警告が表示されます
必要バージョンを満たしていない場合、appコンテナが起動せず、即座に終了します
緊急回避方法
MongoDBの更新
1つ上のバージョンのmongodbサーバーを起動し
これを3.6→4.0→4.2と1バージョンずつ繰り返す
MongoDBは3.4、3.6、4.0、4.2、4.4、5.0、6.0、7.0、8.0とバージョンが上がります
3.8と4.6は存在しません
準備
サーバーを停止させてから、./mongoディレクトリをまるごとバックアップ取っておきましょう
$ docker-compose down
$ cp -R mongo mongo-backup
mongodbサーバーのバージョン指定
code:docker-compose.yml
mongo:
image: mongo:3.4 # ここを3.6, 4.0, 4.2と上げていく
mongodb更新 3.4→3.6
docker-compose.ymlをimage: mongo:3.6に変更してから
$ docker compose up mongo -d
mongoだけです。アプリケーションサーバーは起動させる必要はありませんshokai.icon
$ docker compose exec mongo mongo
featureCompatibilityVersionが3.4である事を確認し、3.6に書き換える
code:mongo
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "3.4" }, "ok" : 1 }
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
{ "ok" : 1 }
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "3.6" }, "ok" : 1 }
$ docker compose down
しっかり終了させる
以下、同じ操作の繰り返しです
mongodb更新 3.6→4.0
docker-compose.ymlをimage: mongo:4.0に変更してから
$ docker compose up mongo
$ docker compose exec mongo mongo
code:mongo
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "3.6" }, "ok" : 1 }
db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } )
{ "ok" : 1 }
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "4.0" }, "ok" : 1 }
$ docker compose down
mongodb更新 4.0→4.2
docker-compose.ymlをimage: mongo:4.2に変更してから
$ docker compose up mongo
$ docker compose exec mongo mongo
code:mongo
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "4.0" }, "ok" : 1 }
db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } )
{ "ok" : 1 }
$ docker-compose down
mongodb更新 4.2→4.4
docker-compose.ymlをimage: mongo:4.4に変更してから
$ docker compose up mongo
$ docker compose exec mongo mongo
code:mongo
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "4.2" }, "ok" : 1 }
db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
{ "ok" : 1 }
$ docker compose down
mongodb更新 4.4→5.0
docker-compose.ymlをimage: mongo:5.0に変更してから
$ docker compose up mongo
$ docker compose exec mongo mongo
code:mongo
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "4.4" }, "ok" : 1 }
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
{ "ok" : 1 }
$ docker compose down
mongodb更新 5.0→6.0
docker-compose.ymlをimage: mongo:6.0に変更してから
$ docker compose up mongo
$ docker compose exec mongo mongosh
code:mongo
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "5.0" }, "ok" : 1 }
db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
{ "ok" : 1 }
$ docker compose down
Cosenseが起動する事を確認し、これで完了です。お疲れさまでしたshokai.icon
$ docker-compose up