Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

6.0 のシャーディングされたクラスターを 5.0 にダウングレードする

項目一覧

  • ダウングレード パス
  • 前提条件
  • ダウングレード手順

ダウングレードを試みる前に、このページの内容を理解してください。

重要

シャーディングされたクラスターをアップグレードまたはダウングレードする前に、すべてのシャーディングされたクラスターのメンバーが実行されていることを確認してください。 そうしないと、すべてのメンバーが起動されるまでアップグレードまたはダウングレードは完了しません。

6.0 からダウングレードする必要がある場合は、5.0 の最新パッチ リリースにダウングレードします。

MongoDB は 1 つのバージョンのダウングレードのみをサポートします。現在のリリースより数バージョン前のリリースにダウングレードすることはできません。

たとえば、6.0 シリーズの配置を 5.0 シリーズにダウングレードできます。ただし、5.0 シリーズの配置から 4.4 シリーズの配置へのさらなるダウングレードはサポートされていません。

ダウングレード手順を開始する前に、次の前提条件手順を完了する必要があります。

1

任意ですが推奨します。 データベースのバックアップを作成します。

バックアップの作成方法については、「 自己管理型配置のバックアップ メソッド 」を参照してください。

2

6.0 から 5.0 にダウングレードするには、5.0 と 互換性のない 6.0 の機能を削除する必要があります。 互換性のない機能のリストと削除方法については、「ダウングレードの考慮事項 」を参照してください。

3

リシャーディング操作が正常に完了したことを確認します。 プライマリ フェイルオーバーが原因で最近のリシャーディング操作が失敗した場合は、シャーディングされたクラスターのfeatureCompatibilityVersionをダウングレードする前に、まず cleanupReshardCollectionコマンドを実行する必要があります。

シャーディングされたクラスターのfeatureCompatibilityVersionをダウングレードするときにリシャーディング操作がまだ実行中の場合、リシャーディング操作は完了しません。

4

シャーディングされたクラスターの fCVをダウングレードするには:

  1. 最初の同期が進行中でないことを確認します。 最初の同期の進行中にsetFeatureCompatibilityVersionコマンドを実行すると、最初の同期がリスタートされます。

  2. レプリカセット構成newlyAddedフィールドがないノードがないことを確認します。 これを確認するには、レプリカセット内の各ノードで次のコマンドを実行します。

    use local
    db.system.replset.find( { "members.newlyAdded" : { $exists : true } } );

    newlyAddedフィールドは、最初の同期の実行中とその直後にのみ、ノードのレプリカセット構成ドキュメントにのみ表示されます。

  3. レプリカセット ノードがROLLBACKまたはRECOVERING状態になっていないことを確認します。

  4. mongoshを使用してmongosインスタンスに接続します。

  5. featureCompatibilityVersion"5.0"にダウングレードします。

    db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )

    setFeatureCompatibilityVersionコマンドは内部システム コレクションへの書込みを実行し、冪等です。 コマンドが正常に完了しない場合は、 mongosインスタンスでコマンドを再試行してください。

    注意

    トラブルシューティング

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

    • setFeatureCompatibilityVersionManualInterventionRequiredエラーで失敗し、クラスターが最近 再シャーディング操作 を実行していて、選挙が原因で失敗した場合は、 setFeatureCompatibilityVersionを再度実行する前にcleanupReshardCollectionコマンドを実行する必要があります。

  6. レプリカセットのすべてのノードに更新されたfeatureCompatibilityVersionが適用されていることを確認するには、各レプリカセット ノードに接続し、 featureCompatibilityVersionを確認します。

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

    Tip

    アクセス制御

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

    すべてのノードは次の内容を含む結果を返す必要があります。

    "featureCompatibilityVersion" : { "version" : "5.0" }

    いずれかのノードが"6.0"featureCompatibilityVersionを返す場合は、続行する前にノードがバージョン"5.0"を返すまで待機します。

返されたfeatureCompatibilityVersion値の詳細については、 「 FeatureCompatibilityVersion の取得 」を参照してください。

警告

ダウングレード手順に入る前に、遅延レプリカセット ノードを含むすべてのシャーディングされたクラスター ノードに前提条件が変更されていることを確認してください。 そのためには、ダウングレードする前に、 featureCompatibilityVersionと を確認して、各ノードの互換性のない機能を削除します。

1

パッケージ マネージャーまたは手動ダウンロードのいずれかを使用して、5.0 シリーズの最新リリースを取得します。 パッケージ マネージャーを使用する場合は、5.0 バイナリの新しいリポジトリを追加してから、実際のダウングレード プロセスを実行します。

重要

レプリカセットをアップグレードまたはダウングレードする前に、すべてのレプリカセット ノードが実行されていることを確認してください。そうしないと、すべてのノードが起動されるまでアップグレードまたはダウングレードは完了しません。

6.0 からダウングレードする必要がある場合は、5.0 の最新パッチ リリースにダウングレードします。

2

5.0 バイナリがシステム パスにあることを確認します。 バイナリのバージョンを確認するには、次のコマンドを実行します。

mongod --version

コマンド出力に 5.0 シリーズのリリースが表示されるはずです。

3

バランサーを無効にするには、 mongoshをシャーディングされたクラスター内のmongosインスタンスに接続し、次のコマンドを実行します。

sh.stopBalancer()

注意

移行が進行中の場合、MongoDB はバランサーを停止する前に、進行中の移行を完了します。 バランサーの現在の状態を確認するには、 sh.isBalancerRunning()を実行します。

バランサーが無効になっていることを確認するには、次のコマンドを実行します。

sh.getBalancerState()

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

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

4
  1. mongosを停止するには、次のコマンドを実行します。

    db.shutdownServer()
  2. 5.0 バイナリでmongosを再起動します。

5
  1. シャードのセカンダリ ノードを一度に 1 つずつダウングレードします。

    1. ノードをシャットダウンします。

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

      db.adminCommand( { shutdown: 1 } )
    2. ノードを再起動します。

      mongodプロセスを開始するには、次のコマンドを実行します。

      mongod --dbpath </path-to-data-folder>
    3. ノードがSECONDARY状態になるまで待ちます。

      次のセカンダリをダウングレードする前に、ノードがSECONDARY状態に回復するまで待ちます。 メンバーの状態を確認するには、rs.status() mongoshで メソッドを使用します。

    4. 前の手順を繰り返して、各セカンダリ ノードをダウングレードします。

  2. シャード アービタ(存在する場合)をダウングレードします。

    レプリカセットにアービタが含まれていない場合は、この手順をスキップします。

    シャーディングされたクラスターのアービタノードをダウングレードします。

    1. ノードをシャットダウンします。

      アービタをシャットダウンするには、 mongoshを使用してアービタに接続し、次のコマンドを実行します。

      db.adminCommand( { shutdown: 1 } )
    2. アービタ データ ディレクトリの内容を削除します。

      アービタmongodのデータディレクトリを見つけるには、 storage.dbPath構成設定または--dbpathコマンドライン オプションのいずれかを確認します。

      次のコマンドを実行します:

      rm -rf /path/to/mongodb/datafiles/*
    3. アービタを再起動します。

      mongodプロセスを開始するには、次のコマンドを実行します。

      mongod --dbpath </path-to-mongodb-datafiles>
    4. ノードがARBITER状態になるまで待ちます。

      プライマリをダウングレードする前に、ノードがARBITER状態に回復するまで待ちます。 メンバーの状態を確認するには、rs.status() mongoshで メソッドを使用します。

  3. シャードプライマリをダウングレードします。

    1. プライマリを降格します。

      mongoshでは、 rs.stepDown()を使用てプライマリを降格し、新しいプライマリの選挙を開始します。

      rs.stepDown()
    2. プライマリが降格したことを確認します。

      次のコマンドを実行します:

      rs.status()

      プライマリが降格し、別のノードがPRIMARY状態になったことを確認します。

    3. 以前のプライマリ ノードをシャットダウンします。

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

      db.adminCommand( { shutdown: 1 } )
    4. 5.0バイナリを使用してmongodを再起動します。

      mongodプロセスを開始するには、次のコマンドを実行します。

      mongod --dbpath </path-to-mongodb-datafiles>
    5. 残りのシャードに対して を繰り返します。

6
  1. コンフィギュレーションサーバー レプリカセット(CSRS)のシャードのセカンダリ ノードを一度に 1 つずつダウングレードします。

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

      セカンダリに接続し、次のコマンドを実行します。

      db.adminCommand( { shutdown: 1 } )
    2. ノードを再起動します。

      mongodプロセスを開始するには、次のコマンドを実行します。

      mongod --dbpath </path-to-data-folder>
    3. ノードがSECONDARY状態になるまで待ちます。

      次のセカンダリをダウングレードする前に、ノードがSECONDARY状態に回復するまで待ちます。 メンバーの状態を確認するには、rs.status() mongoshで メソッドを使用します。

    4. 前の手順を繰り返して、各セカンダリ ノードをダウングレードします。

  2. コンフィギュレーションサーバーのプライマリをダウングレードします。

    1. プライマリを降格します。

      mongoshで、 rs.stepDown()を実行てプライマリを降格し、新しいプライマリの選挙を開始します。

      rs.stepDown()
    2. プライマリが降格したことを確認します。

      次のコマンドを実行します:

      rs.status()

      プライマリが降格し、別のノードがPRIMARY状態になったことを確認します。

    3. 以前のプライマリ ノードをシャットダウンします。

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

      db.adminCommand( { shutdown: 1 } )
    4. 5.0バイナリを使用してmongodを再起動します。

      mongodプロセスを開始するには、次のコマンドを実行します。

      mongod --dbpath </path-to-mongodb-datafiles>
7

シャーディングされたクラスターのすべてのコンポーネントをダウングレードした後、 mongosに接続し、次のコマンドを実行してバランサーを再度有効にします。

sh.startBalancer()

sh.startBalancer()メソッド も、シャーディングされたクラスターの自動分割を有効にします。

戻る

レプリカセット