Docs Menu
Docs Home
/
データベース マニュアル
/ / /

シャーディングされたクラスターを 8.2 にアップグレード

重要

MongoDB8.2 は最新のマイナー リリースです。 MongoDB8.2 以降では、特定のユースケースに対応したオンプレミス配置(MongoDB Community と Enterprise)でマイナー リリースを利用できます。詳細については、 「 MongoDB のバージョン管理 」を参照してください。

オンプレミスでサポートされている最新のMongoDBバージョンをインストールするには、インストール手順を参照してください。

このドキュメントの内容をよく読み、前提条件を十分に確認してから、 MongoDB 8.2にアップグレードしてください。

次の手順では、シャード メンバーである mongod をバージョン 8.0 から 8.2 にアップグレードする手順について説明します。

8.2へのアップグレードに関するガイダンスが必要な場合は、 MongoDB プロフェッショナル サービスがメジャー バージョン アップグレード サポートを提供して、MongoDB アプリケーションを中断することなくスムーズに移行できるようにします。

アップグレードの際には、次の点を考慮してください。

既存の MongoDB デプロイを8.2にアップグレードするには、 8.0シリーズのリリースを実行している必要があります。

8.0シリーズより前のバージョンの場合、最終的に8.0シリーズになるまで、メジャー リリースを順次アップグレードする必要があります。 たとえば、7.0 シリーズを実行している場合、 にアップグレードする8.0 前に 、 まず にアップグレード8 する必要があります。2 。

MongoDB をアップグレードする前に、MongoDB 8.2の互換性があるドライバーを使用していることを確認してください。 MongoDB 8.2との互換性を確認するには、特定のドライバーのドライバー のドキュメントを参照してください。

互換性のないドライバーでアップグレードを実行した場合、予期しないまたは未定義の動作が発生する可能性があります。

アップグレードを開始する前に、ドキュメント「 MongoDB 8.2での互換性の変更 」で、ご利用のアプリケーションとデプロイが MongoDB 8.2と互換性があることを確認してください。 アップグレードを開始する前に、お使いの環境の互換性の問題を解決してください。

MongoDB をアップグレードする際は、アップグレードを本番環境にデプロイする前に、必ずアプリケーションをステージング環境でテストします。

配置のバイナリ バージョンをダウングレードするには、サポートによる支援が必要です。

詳しくは、「 8.2から8.0へのダウングレード 」を参照してください。

シャーディングされたクラスターを8.2にアップグレードするには、クラスターのすべてのノードが 以上のバージョン8.0である必要があります。 アップグレード プロセスでは、クラスターのすべてのコンポーネントがチェックされ、 8.0より前のバージョンを実行しているコンポーネントがある場合は警告が発せられます。

8.0のシャーディングされたクラスターでは、 featureCompatibilityVersion"8.0"に設定する必要があります。

シャーディングされたクラスターのすべてのノードでfeatureCompatibilityVersion"8.0"に設定されていることを確認するには、各シャード レプリカセット ノードと各コンフィギュレーションサーバー レプリカセット ノードに接続し、 featureCompatibilityVersionを確認します。

Tip

アクセス制御が有効になっているシャーディングされたクラスターの場合、シャード レプリカセット ノードに対して次のコマンドを実行するには、シャード ローカル ユーザー としてノードに接続する必要があります。

db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

すべてのノードは "featureCompatibilityVersion" : { "version" : "8.0" } を含む結果を返す必要があります。

featureCompatibilityVersionを設定または更新するには、 mongosで次のコマンドを実行します。

db.adminCommand( { setFeatureCompatibilityVersion: "8.0", confirm: true } )

詳細については、setFeatureCompatibilityVersion を参照してください。

シャードとコンフィギュレーションサーバーでは、レプリカセット ノードがROLLBACKまたはRECOVERING状態になっていないことを確認します。

db.adminCommand( { replSetGetStatus: 1 } )

任意ですが推奨します。 予防手段として、シャーディングされたクラスターをアップグレードするに、 configデータベースのバックアップを取得してください。

にアップグレードする際に、時系列コレクションではないdrop rename8.2コレクションがある場合は、system.buckets に応じて、アップグレードする前にそれらのコレクションを または8 する必要があります。0 }パッチ リリース:

MongoDB 8.0.5 以降
アップグレードする前に、時系列コレクションではない system.buckets コレクションを削除する必要はありません。ただし、アップグレードが完了した後に、これらを削除するか、名前を変更する必要があります。
MongoDB 8.0.4 以前
アップグレードする前に、時系列コレクションではない system.buckets コレクションを削除するか、名前を変更する必要があります。すべてのsystem.buckets コレクションは、 8.0.0-8.0.4 のバージョンにアップグレードする前に、有効な時系列オプションを構成する必要があります。

時系列コレクションではない system.buckets コレクションがあるかどうかを判断するには、フィルタを指定した db.getCollectionInfos() メソッドを使用します。

db.getCollectionInfos(
{
$and: [
{ name: { $regex: /^system\.buckets/ } },
{ 'options.timeseries': { $exists: false } }
]
}
)

MongoDB を MongoDB aptyumdnf 、またはzypperリポジトリからインストールした場合、パッケージ マネージャーを使用して8.2にアップグレードする必要があります。

Linux システムの場合は、 8.2のインストール手順を参照してください。 新しいリリース用にリポジトリを追加して、実際にアップグレードを行う方法を解説しています。

パッケージ マネージャーを使用して MongoDB をインストールしていない場合は、 MongoDB ダウンロード センターから MongoDB バイナリを手動でダウンロードできます。

詳しくは、 8.2インストール手順を参照してください。

1

mongoshmongosシャーディングされたクラスター内のsh.stopBalancer() インスタンスに接続し、 を実行してバランサーを無効にします。

sh.stopBalancer()

注意

移行が進行中の場合、システムは進行中の移行を完了してから、バランサーを停止します。 sh.isBalancerRunning()を実行して、バランサーの現在の状態を確認できます。

バランサーが無効になっていることを確認するには、 sh.getBalancerState()を実行します。バランサーが無効になっている場合は false を返します。

sh.getBalancerState()

バランサーを無効にする方法の詳細については、「 バランサーを無効にする 」を参照してください。

2
  1. レプリカセットのセカンダリノードを一度に 1 つずつアップグレードします。

    1. セカンダリ インスタンスをシャットダウンします。

      mongodプロセスをシャットダウンするには、 mongoshを使用してクラスター ノードに接続し、次のコマンドを実行します。

      db.adminCommand( { shutdown: 1 } )
    2. 8.0バイナリを8.2バイナリに置き換えます。

    3. 8.2バイナリを起動します。

      --configsvr--replSet--portを使用して8.2バイナリを起動します。 配置で使用されるその他のオプションを含めます。

      mongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address>

      構成ファイルを使用している場合は、ファイルを更新してsharding.clusterRole: configsvrreplication.replSetNamenet.portnet.bindIpを指定してから、 8を起動します。 2 バイナリ:

      sharding:
      clusterRole: configsvr
      replication:
      replSetName: <string>
      net:
      port: <port>
      bindIp: localhost,<ip address>
      storage:
      dbpath: <path>

      配置に適したその他の設定を含めます。

    4. 次のセカンダリ ノードをアップグレードする前に、ノードがSECONDARY状態に回復するまで待機します。

      メンバーの状態を確認するには、rs.status()mongosh を発行します。

  2. レプリカセットのプライマリを降格します。

    1. mongoshをプライマリに接続し、 rs.stepDown()を使用してプライマリを降格し、新しいプライマリの選出を強制します。

      rs.stepDown()
    2. 降格したプライマリをシャットダウンします。

      rs.status()でプライマリが降格し、別のノードがPRIMARY状態になったことが示されたら、降格したプライマリをシャットダウンします。

      降格したプライマリをシャットダウンするには、 mongoshを使用してプライマリに接続し、次のコマンドを実行します。

      db.adminCommand( { shutdown: 1 } )
    3. mongodバイナリを8.2バイナリに置き換えます。

    4. 8.2バイナリを起動します。

      --configsvr--replSet--port--bind_ipオプションを使用して8.2を起動します。 以前の配置で使用された任意の コマンドライン オプションを含めます。

      mongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address>

      構成ファイルを使用している場合は、ファイルを更新してsharding.clusterRole: configsvrreplication.replSetNamenet.portnet.bindIpを指定してから、 8を起動します。 2 バイナリ:

      sharding:
      clusterRole: configsvr
      replication:
      replSetName: <string>
      net:
      port: <port>
      bindIp: localhost,<ip address>
      storage:
      dbpath: <path>

      配置に適したその他の構成を含めます。

3

シャードを一度に 1 つずつアップグレードします。

各シャード レプリカセット:

  1. レプリカセットのセカンダリノードを一度に 1 つずつアップグレードします。

    1. セカンダリ インスタンスをシャットダウンします。

      mongodプロセスをシャットダウンするには、 mongoshを使用してクラスター ノードに接続し、次のコマンドを実行します。

      db.adminCommand( { shutdown: 1 } )
    2. 8.0バイナリを8.2バイナリに置き換えます。

      --shardsvr--replSet--port--bind_ipオプションを使用して8.2バイナリを起動します。 配置に適した追加のコマンドライン オプションを含めます。

      mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address>

      構成ファイルを使用している場合は、ファイルを更新してsharding.clusterRole: shardsvrreplication.replSetNamenet.portnet.bindIpを含めてから、 8を起動します。 2 バイナリ:

      sharding:
      clusterRole: shardsvr
      replication:
      replSetName: <string>
      net:
      port: <port>
      bindIp: localhost,<ip address>
      storage:
      dbpath: <path>

      配置に適したその他の構成を含めます。

    3. 次のセカンダリ ノードをアップグレードする前に、ノードがSECONDARY状態に回復するまで待機します。

      メンバーの状態を確認するには、rs.status()mongosh を発行します。

    4. セカンダリ ノードごとに繰り返します。

  2. レプリカセットのプライマリを降格します。

    mongoshをプライマリに接続し、 rs.stepDown()を使用してプライマリを降格し、新しいプライマリの選出を強制します。

    rs.stepDown()
  3. 降格したプライマリをアップグレードします。

    rs.status()でプライマリが降格し、別のノードがPRIMARY状態になったことが示されたら、降格したプライマリをアップグレードします。

    1. 降格したプライマリをシャットダウンします。

      降格したプライマリをシャットダウンするには、 mongoshを使用してレプリカセット ノードに接続し、次のコマンドを実行します。

      db.adminCommand( { shutdown: 1 } )
    2. mongodバイナリを置き換えます。 8.2バイナリ。

    3. 8.2バイナリを起動します。

      --shardsvr--replSet--port--bind_ipオプションを使用して8.2バイナリを起動します。 配置に適した追加のコマンドライン オプションを含めます。

      mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address>

      構成ファイルを使用している場合は、ファイルを更新してsharding.clusterRole: shardsvrreplication.replSetNamenet.portnet.bindIpを指定してから、 8を起動します。 2 バイナリ:

      sharding:
      clusterRole: shardsvr
      replication:
      replSetName: <string>
      net:
      port: <port>
      bindIp: localhost,<ip address>
      storage:
      dbpath: <path>

      配置に適したその他の構成を含めます。

4

mongosインスタンスを8.2バイナリで置き換え、再起動します。 配置に適したその他の構成を含めます。

注意

シャーディングされたクラスター メンバーが異なるホスト上で実行されている場合、またはリモート クライアントがシャーディングされたクラスターに接続する場合は、 --bind_ipオプションを指定する必要があります。

mongos --configdb csReplSet/<rsconfigsver1:port1>,<rsconfigsver2:port2>,<rsconfigsver3:port3> --bind_ip localhost,<ip address>
5

mongoshを使用してクラスター内のmongosに接続し、 sh.startBalancer()を実行してバランサーを再度有効にします。

sh.startBalancer()

バランサーを再度有効にする方法の詳細については、「 バランサーを有効にする 」を参照してください

6

この時点で、 8.0と互換性のない8.2機能を使わずに8.2バイナリを実行できます。

これらの 8.2 機能を有効にするには、機能の互換性バージョン(FCV)を 8.2 に設定します。7.0 以降にアップグレードする場合は、confirm を true に設定する必要があります。

Tip

下位互換性のないこうした機能を有効にすると、ダウングレード前に保持されていた下位互換性のない機能をすべて削除する必要があるため、ダウングレード プロセスが複雑になる場合があります。

ダウングレードの可能性を最小限に抑えるには、アップグレード後、バーンイン期間中にこれらの機能を有効にせずにデプロイを運用することをお勧めします。ダウングレードの可能性を最小限に抑えられたと確信できたら、これらの機能を有効にします。

mongosインスタンスで、 adminデータベースでsetFeatureCompatibilityVersionコマンドを実行します。

db.adminCommand( { setFeatureCompatibilityVersion: "8.2", confirm: true } )

featureCompatibilityVersion (FCV) : "8.2 " に設定しますreplSetReconfig暗黙的に各シャードで を実行し、シャードレプリカ構成ドキュメントにterm フィールドを追加します。

コマンドは、新しい構成がレプリカセット ノードの大部分に伝播するまで完了しません。

このコマンドは、内部システム コレクションへの書込みを実行する必要があります。 何らかの理由でコマンドが正常に完了しない場合は、操作が冪等であるため、安全にコマンドを再試行できmongos

注意

setFeatureCompatibilityVersionがシャーディングされたクラスターで実行されている場合、チャンクの移行、分割、マージはConflictingOperationInProgressで失敗する可能性があります。

シャードに存在する孤立したドキュメントは、 setFeatureCompatibilityVersionを8.2に設定するとクリーンアップされます。 クリーンアップ プロセス:

警告

mongos FCV の互換性

mongosmongodバイナリは、機能の互換性バージョン(FCV)が よりも大きいmongos インスタンスに接続できません。例、 MongoDB 8 は接続できません。0 バージョンmongos 8から.2FCV 8が. に設定されているシャーディングされたクラスター。2ただし、 MongoDB 8 を接続することは可能です。0 バージョンmongos 8から.2FCV 8が. に設定されているシャーディングされたクラスター。0

戻る

レプリカセット

項目一覧