LoginSignup
4
1

More than 5 years have passed since last update.

MongoDBをバージョン4.0にアップグレード in Docker

Posted at

MongoDB4.0がリリースされ、ついにMongoにもトランザクションが導入されました。

トランザクションは是非とも利用したいので現在稼働しているMongoを3.4から4.0にアップグレードしようと思います。

MongoはDocker上で1コンテナとして起動しています。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
d06abb0b764a        mongo               "docker-entrypoint.s…"   2 months ago        Up 13 minutes       27017/tcp                mongo

バージョンは3.4

$ docker exec -it mongo bin/bash
root@d06abb0b764a:/# mongo --version
MongoDB shell version v3.4.16

Mongo公式に沿ってアップグレードを進めていきます。
https://docs.mongodb.com/manual/release-notes/4.0-upgrade-standalone/

ただ、3.4からアップグレードを試みると、以下のように失敗します。

db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } )
{
    "ok" : 0,
    "errmsg" : "Invalid command argument. Expected '3.6' or '3.4', found 4.0 in: { setFeatureCompatibilityVersion: \"4.0\", $db: \"admin\" }. See http://dochub.mongodb.org/core/3.6-feature-compatibility.",
    "code" : 2,
    "codeName" : "BadValue"
}

ということで、まずは3.6へのアップグレード
https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/

3.4 → 3.6

まずは、Mongo3.6のイメージをpull

docker pull mongo:3.6

docker-composeを利用している方は、docker-compose.ymlのimageを3.6にして、docker-compose up -d

docker-compose.yml
  mongo:
    image: mongo:3.6

で、mongo3.6で起動したコンテナ内でFCVを3.6にする

> db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
{ "ok" : 1 }

これだけ!

いざ4.0へ

DockerHubから最新バージョンをインストール

DockerHubにあるMongoを確認すると、すでに4.0がlatestバージョンになっていました。

docker pull mongo:latest

コンテナをlatestにして再起動

  mongo:
    image: mongo
docker-compose up -d mongo

FCVを4.0にする

> db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } )
{ "ok" : 1 }

お疲れ様でした。これでアップグレード完了となります。

悲報

すでにお気づきの方いらっしゃるかもしれませんが、トランザクションはレプリカセットの場合のみ対応してます。。。
そう、この手順スタンドアローンなんです。mongo1台で運用してるんです。。。

ということで、次はレプリカセットの設定をしていきます。

今回はここまで。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1