すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for MongoDB:インスタンスを新しい MongoDB バージョンにアップグレードする必要がある理由

最終更新日:Jun 11, 2025

MongoDB コミュニティの進化に伴い、MongoDB は、新しいバージョンでパフォーマンスの向上、セキュリティの最適化、幅広い機能など、より多くのメリットを提供しています。MongoDB コミュニティは、以前の MongoDB バージョンのサポートとメンテナンスを段階的に停止しています。以前の MongoDB バージョンを引き続き使用すると、さまざまな問題やセキュリティと安定性のリスクが発生する可能性があります。

MongoDB 4.4 は、MongoDB ソフトウェアのライフサイクルスケジュールに基づき、2024 年 2 月にサービス終了 (EOL) になりました。最適化されたサービスをご利用いただくために、MongoDB 5.0、MongoDB 6.0、MongoDB 7.0、または MongoDB 8.0 などの新しいバージョンにインスタンスをアップグレードすることをお勧めします。詳細については、「ライフサイクルスケジュール」をご参照ください。

以前のバージョンのリスク

ApsaraDB for MongoDB チームは、クラウドデータベースの運用保守における長年の経験に基づいて、以前のバージョンのリスクをまとめています。このセクションでは、リスクと、これらのリスクを解決するための推奨バージョンについて説明します。

シャードクラスターインスタンスに孤立ドキュメントが存在するため、データ移行中にデータの不整合が発生する

  • 影響を受けるバージョンとアーキテクチャ: MongoDB 4.2 以降を実行するシャードクラスターインスタンス。

  • 説明: シャードクラスターインスタンス内の孤立ドキュメントをできるだけ早くクリーンアップしないと、データ移行中にデータの不整合が発生する可能性があります。

  • 推奨バージョン: MongoDB 4.4 以降。

  • 推奨理由:

    チャンクがソースシャードから新しいシャードに移行された後、ソースシャードのチャンクは削除されるまで一定期間保持されます。ほとんどの場合、孤立ドキュメントは移行の中断によって生成されます。孤立ドキュメントは mongos ノードへのリクエストには影響しません。これは、リクエストが ConfigServer ノードのルーティングデータによってチェックされるためです。

    MongoDB 4.4 以後は、自己回復チャンク移行と孤立ドキュメントの自動クリーンアップをサポートしています。ノードに障害が発生した場合、MongoDB は、中断された移行プロセスを自動的に回復します。孤立ドキュメントをクリーンアップするために cleanupOrphaned コマンドを実行する必要はありません。このコマンドを実行して、バックエンド スレッドがインスタンス内の孤立ドキュメントをクリーンアップしているかどうかを確認できます。

    詳細については、「cleanupOrphaned」をご参照ください。

圧縮操作により、読み取りおよび書き込みリクエストがブロックされる

  • 影響を受けるバージョンとアーキテクチャ: MongoDB 4.2 以前を実行するすべてのアーキテクチャのインスタンス。

  • 説明: ディスクを最適化する場合、以前のバージョンを実行しているインスタンスで圧縮操作を実行すると、読み取りおよび書き込みリクエストがブロックされます。この場合、操作を中断できないため、インスタンスを再起動するしかありません。これはビジネスに影響を与えます。

  • 推奨バージョン: MongoDB 4.4 以降。

  • 推奨理由:

    MongoDB 4.4 以降では、createIndex や dropIndex などの一部の DDL 操作を除き、読み取りおよび書き込み (CRUD) 操作がブロックされないように、compact コマンドのロック動作が最適化されています。指定されたメンテナンスウィンドウ外の期間に compact コマンドを実行できます。

    詳細については、「インスタンスのディスクを最適化してディスク使用率を向上させる」および「compact Blocking」をご参照ください。

    説明

    ディスクを最適化するには、ApsaraDB for MongoDB が提供するストレージ分析機能を使用することをお勧めします。この機能の詳細については、「ストレージ分析」をご参照ください。

圧縮操作により、ノードが RECOVERING 状態になる

  • 影響を受けるバージョンとアーキテクチャ: メジャーバージョンが MongoDB 4.2 以前、マイナーバージョンが MongoDB 4.2.18 より前のすべてのアーキテクチャのインスタンス。

  • 説明: ディスクを最適化する場合、以前のバージョンを実行しているインスタンスで圧縮操作を実行すると、インスタンス内のノードが RECOVERING 状態になります。ノードがこの状態が長時間続くと、ApsaraDB for MongoDB のインスタンスアクティベーションコンポーネントによってノードが異常と見なされます。この場合、再構築操作がトリガーされます。

  • 推奨バージョン: MongoDB 4.4 以降。

  • 推奨理由:

    MongoDB 4.2.18 以降では、ノードで compact コマンドを実行した後、mongos ノードは RECOVERING 状態になりません。これにより、使用できない mongos ノードの存在と予期しない再構築タスクフローが防止されます。

    詳細については、「インスタンスのディスクを最適化してディスク使用率を向上させる」および「compact RECOVERING」をご参照ください。

    説明

    ディスクを最適化するには、ApsaraDB for MongoDB が提供するストレージ分析機能を使用することをお勧めします。この機能の詳細については、「ストレージ分析」をご参照ください。

非表示ノードの物理バックアップが大量のディスク容量を消費する

  • 影響を受けるバージョンとアーキテクチャ: MongoDB 4.2 以前を実行し、ローカルディスクを使用するすべてのアーキテクチャのインスタンス。

  • 説明: 物理バックアップメカニズムにより、バックアップのアップロード中にディスクファイルのサイズが大きくなり続けます。大量のディスクファイルが蓄積されると、大量のディスク容量が消費されます。ノード障害またはスイッチオーバーが発生した場合、ディスク使用量に関連する誤ったアラートがトリガーされます。

  • 推奨バージョン: MongoDB 5.0 以降 (クラウドディスク)。

  • 推奨理由:

    クラウドディスクを使用するインスタンスのフルバックアップは、物理バックアップとディスクスナップショットを組み合わせたものです。フルバックアップは、WiredTiger (WT) でバックアップチェックポイントを維持するために必要な時間を短縮し、効率的な方法で非表示ノードのバックアップによるディスク容量の肥大化を解決します。

    クラウドディスクを使用するインスタンスが提供するスナップショットバックアップとスナップショットバックアップに基づくデータ復旧により、パフォーマンスが向上します。レプリカセットインスタンスのデータ量が 2 TB を超える場合は、スナップショットバックアップを使用してインスタンスのデータをバックアップすることをお勧めします。こうすることで、バックアップ中に発生しません。これらの問題には、ローカルディスクを使用するインスタンスに必要な長い物理バックアップ時間、高いバックアップ失敗率、その他の運用保守操作の実行の失敗などが含まれます。

削除されたデータベースと同じ名前のデータベースを再作成すると、シャードクラスターインスタンスにルーティングデータが存在する

  • 影響を受けるバージョンとアーキテクチャ: MongoDB 4.4 以前を実行するシャードクラスターインスタンス。

  • 説明: シャードクラスターインスタンスで dropDatabase コマンドを実行し、削除されたデータベースと同じ名前のデータベースを再作成すると、インスタンスの ConfigServer ノードにルーティングデータが存在するため、インスタンスの読み取りおよび書き込み操作を期待どおりに実行できません。

  • 推奨バージョン: MongoDB 5.0 以降。

  • 推奨理由:

    MongoDB 5.0 以降では、dropDatabase コマンドのルーティングデータ処理が最適化されています。このため、MongoDB 5.0 以降を実行しているシャードクラスターインスタンスには、ルーティングデータは存在しません。MongoDB 4.2 以前では、dropDatabase コマンドを繰り返し実行する必要があります。また、すべての Mongos ノードで flushRouterConfig コマンドを実行して、ルーティングデータをリフレッシュする必要があります。そうしないと、残留ルーティングデータによってデータベースのパフォーマンスが低下します。

    詳細については、「dropDatabase」および「flushRouterConfig」をご参照ください。

{w:1} のデフォルトの writeConcern 設定により、プライマリノードとセカンダリノード間のデータ同期が異常になる

  • 影響を受けるバージョンとアーキテクチャ: MongoDB 5.0 より前のバージョンを実行するすべてのアーキテクチャのインスタンス。

  • 説明: データがインスタンスのプライマリノードにすばやく書き込まれると、インスタンス内のセカンダリノードはデータの一部のみを受信し、RECOVERING 状態になる可能性があります。これはインスタンスの可用性を低下させます。セカンダリノードは予期されるデータを読み取ることができず、読み取り/書き込み分離を必要とするビジネスに影響を与えます。この場合、増分バックアップを期待どおりに実行できません。また、データを以前の時点に復元できません。

  • 推奨バージョン: MongoDB 5.0 以降。

  • 推奨理由:

    MongoDB 5.0 以降、writeConcern のデフォルト値は {w:1} から {w:"majority"} に変更されました。これは、書き込まれるデータが、レプリカセットインスタンスのほとんどのノードによって確認された後にのみクエリできることを示します。 これにより、わずかなパフォーマンスの低下はありますが、データの信頼性が向上します。 また、セカンダリノードで受信したデータの一部と、プライマリノードでトリガーされたフロー制御が原因で、スロークエリの応答や ROLLBACK 状態のプライマリノードによって発生するデータ損失も解決されます。

    書き込みパフォーマンスの高いシナリオでは、writeConcern を {w:1} に設定できます。

    詳細については、「デフォルトの書き込みコンサーン」および「setDefaultRWConcern」をご参照ください。

バランサーはデータを低速で均等に分散し、スケーリングパフォーマンスが低く、ピーク時にスケールアウトアクティビティを実行できない

  • 影響を受けるバージョンとアーキテクチャ: MongoDB 5.0 より前のバージョンを実行するすべてのアーキテクチャのインスタンス。

  • 説明: バランサーはデータを高速に移行できません。その結果、スケールアウトアクティビティを必要とするシナリオでは、データを高速で均等に分散できません。これはデータベースのパフォーマンスを低下させます。

  • 推奨バージョン: MongoDB 5.0 以降。

  • 推奨理由:

    MongoDB 5.0 以降、バランサーの移行の同時実行性とパフォーマンスを調整するために、chunkMigrationConcurrency パラメーターと balancerMigrationsThrottlingMs パラメーターが追加されました。

    詳細については、「chunkMigrationConcurrency」および「balancerMigrationsThrottlingMs」をご参照ください。

    説明

    インスタンスが MongoDB 5.0 を実行していて、2 つのパラメータをサポートしていない場合は、インスタンスのマイナーバージョンを更新します。詳細については、「インスタンスのマイナーバージョンを更新する」をご参照ください。

データの不均衡により、シャードクラスターインスタンスの負荷が不均等に分散される

  • 影響を受けるバージョンとアーキテクチャ: メジャーバージョンが MongoDB 5.0 以前、マイナーバージョンが MongoDB 6.0.3 より前のすべてのアーキテクチャのインスタンス。

  • 説明: バランサーは、シャード間のチャンク数に基づいてデータが均等に分散されているかどうかをチェックします。ジャンボチャンクと空のチャンクが存在し、データの一部に頻繁にアクセスする場合、シャード間でデータと負荷の不均衡が発生します。

  • 推奨バージョン: MongoDB 6.0 以降。

  • 推奨理由:

    MongoDB 6.0.3 以降では、バランサーは、シャード間のチャンク数の差ではなく、シャード間のデータ量の差に基づいてデータを均等に分散します。これは、以前のバージョンでジャンボチャンクと空のチャンクが存在し、頻繁にアクセスされるデータが原因で発生するデータと負荷の不均衡を解決します。

    詳細については、「MongoDB 6.0.3 のバランサーの変更点」をご参照ください。

その他のカーネルの問題

バージョン

カーネルの問題

リスクレベル

説明

MongoDB 3.4

SERVER-34192

SERVER-20328

SERVER-21307

[原因]: インスタンスで読み取り/書き込み分離が有効になっています。

[問題の説明]: セカンダリノードが oplog を再生するときにグローバルロックが追加され、リクエストが遅くなります。

MongoDB

4.0

SERVER-70783

[原因]: サーバー上の接続数が大幅に増加しています。

[問題の説明]: セッションが不足しているため、アサーションがトリガーされる可能性があります。この場合、Mongos ノードに障害が発生し、ノードのスイッチオーバーがトリガーされます。

MongoDB

MongoDB 3.6 から MongoDB 4.2

SERVER-40535

[原因]: 散発的。

[問題の説明]: Cache Reader No keys found for HMAC that is valid for time エラーが表示されます。この場合、再試行ロジックが必要です。

MongoDB

MongoDB 4.2 以前

SERVER-43641

SERVER-51803

[原因]: 散発的。この問題は /dev/urandom に関連しています。

[問題の説明]: Mongos ノードがクラッシュします。ノードは、再起動後に障害から自動的に回復します。

MongoDB

MongoDB 4.0 から MongoDB 4.2

SERVER-43889

[原因]: 散発的。

[問題の説明]: サーバーはトランザクションと再試行可能な書き込みを正しく区別できず、リクエストの失敗とエラーが発生します。

MongoDB

MongoDB 4.0 から MongoDB 4.4

SERVER-51281

SERVER-50365

[原因]: 長時間実行されるトランザクション。

[問題の説明]: ライトスルーキャッシュが予期どおりにエビクトされず、ダーティキャッシュラインの割合が 20% を超えています。タイムアウトトランザクションをクリーンアップするスレッドがスタックする可能性があり、リクエストのレイテンシが大幅に増加し、データベースのパフォーマンスが低下します。

MongoDB

MongoDB 3.6 から MongoDB 4.4

SERVER-52654

[トリガー条件]: ConfigServer ノードが 90 日間切り替えられていません。

[問題の説明]: ConfigServer ノードでハッシュベースのメッセージ認証コード (HMAC) キーを生成することに関する問題により、Mongos ノードがクラッシュし、障害から自動的に回復できません。

MongoDB

MongoDB 4.0 から MongoDB 4.4

SERVER-53566

[原因]: 散発的。

[問題の説明]: opContext によってトリガーされたアサーションエラーにより、mongod がクラッシュし、スイッチオーバーがトリガーされます。

MongoDB

MongoDB 4.4 以前

SERVER-21307

[原因]: バックエンドのセカンダリノードでインデックスが作成されているときに、DDL 操作が oplog に記録されます。

[問題の説明]: DDL 操作がブロックされ、セカンダリノードに障害が発生します。

MongoDB

MongoDB 4.4 以前

WT-5809

[原因]: ノードが再起動されるか、データ同期が初期化されます。

[問題の説明]: ノードの回復プロセスで、WT の履歴ストアの時間順序を決定することに関する問題により、WT アサーションエラーがトリガーされ、mongod がクラッシュします。

MongoDB

MongoDB 4.2 から MongoDB 4.4

SERVER-51041

[原因]: インスタンスで読み取り/書き込み分離が有効になっており、セカンダリノードの負荷が高い。

[問題の説明]: POSIX スレッドがミューテックスロックを競合すると、セカンダリノードの読み取りチケットが使い果たされ、データベースのパフォーマンスが低下します。

MongoDB

MongoDB 4.2 から MongoDB 4.4

SERVER-52556

SERVER-66176

[原因]: アプリケーションが listCollections 操作を頻繁に呼び出しています。

[問題の説明]: 基礎となる CollectionCatalog コンポーネントのミューテックスロックに関連する問題により、データベースのパフォーマンスが大幅に低下します。

MongoDB

MongoDB 6.0 以前

SERVER-63865

SERVER-67038

SERVER-69877

[原因]: 以前のバージョンを実行しているインスタンスでインデックスが作成されているときに、メモリ不足 (OOM) エラーが発生します。

[問題の説明]: Mongod が繰り返し再起動され、障害から自動的に回復できません。レプリカセットインスタンス内の 2 つのノードがこの状態になると、インスタンスは使用できなくなります。

MongoDB

MongoDB 6.0 以前

SERVER-56194

[原因]: Time to Live (TTL) インデックスを作成した後、または有効期限を変更した後に、多数の期限切れドキュメントが生成されます。

[問題の説明]: バックエンド TTL スレッドがスタックし、障害から自動的に回復できません。このため、TTL 機能が有効になりません。

新機能と以降のバージョンでの最適化

バージョン

新機能または最適化

説明

MongoDB 5.0

時系列コレクション

MongoDB 5.0 以降では、コネクテッドカーや IoT などのシナリオで、時系列データをより効果的に処理できます。

長時間実行されるスナップショットクエリ

MongoDB 5.0 以降では、履歴スナップショットを読み取ることができます。

バージョン管理された API

MongoDB 5.0 以降では、バージョン管理された API 機能がサポートされています。この機能は、アプリケーションライフサイクルとデータベースライフサイクルを切り離し、完全な互換性を確保します。データベースバージョンのアップグレードによって発生する互換性のリスクに対処する必要はありません

MongoDB 6.0

ChangeStream

MongoDB 6.0 以降では、ChangeStream は以下の点で最適化されています。

  • 変更前のビューが表示されます

  • 実行効率とリソース使用率が向上しました。

  • 孤立ドキュメントの更新をフィルタリングできます。

  • より多くの DDL 変更イベントを処理できます。これにより、Change Data Capture (CDC) シナリオに対する ApsaraDB for MongoDB のサポートが強化されます。

JOIN クエリ

MongoDB 6.0 以降を実行する ApsaraDB for MongoDB シャードクラスターインスタンスは、$lookup 演算子と $graphLookup 演算子をサポートして JOIN クエリを実行し、JOIN クエリに関連する演算子のパフォーマンスを向上させます。

シャードクラスターインスタンスの自動最適化

MongoDB 6.0 以降を実行する ApsaraDB for MongoDB シャードクラスターインスタンスでは、configureCollectionBalancing コマンドを実行して複数のシャードに異なるチャンクサイズを指定し、自動最適化をサポートできます。compact コマンドを実行してシャードクラスターインスタンスのディスクを最適化する必要はありません。

時系列コレクション

MongoDB 6.0 以降では、時系列コレクションは以下の点で最適化されています。

  • シャーディングがサポートされています。

  • 列指向圧縮がサポートされており、ストレージ使用量を削減できます。

  • セカンダリインデックスと複合インデックスが導入され、読み取りパフォーマンスが向上しました。

  • 時空間データ用に地理空間インデックスが導入されました。

  • 時系列データのソートが最適化されました。より多くの時系列シナリオで時系列コレクションを使用でき、パフォーマンスが大幅に向上します。

強化された compact コマンド

ApsaraDB for MongoDB は、WT の compact コマンドを完全に最適化します。これにより、コマンドのパフォーマンスが大幅に向上し、コマンドの実行中のエビクションプロセスによって発生する障害が減少します。

MongoDB 7.0

シャードキー分析

MongoDB 7.0 以降では、サンプリングされたクエリの結果に基づいて、コレクションのシャードキーが適切かどうかを判断できます。この方法で、インスタンスの スキーマとシャードキーを構成 し、シャードクラスタアーキテクチャをより効率的に使用できます。

クエリ可能な暗号化

MongoDB 7.0 以降では、クエリ可能な暗号化により、機密データがデータのライフタイム全体にわたって暗号化され、クライアントでのみ復号化されます。データのライフタイムには、送信、保存、使用、ログ記録、バックアップの各フェーズが含まれます。この機能は、強化された包括的なデータセキュリティを確保し、データの盗難によるデータ漏洩のリスクを効果的に軽減します。

メタデータ整合性チェック

MongoDB 7.0 以降では、データベースのメンテナンス期間が終了した後、または OOM エラーやフェールオーバーなどの例外が発生しなかった場合に、潜在的なメタデータまたはインデックスの不整合リスクを自動的に検出できます。

ChangeStream によって処理される大規模な変更イベント

MongoDB 7.0 以降では、$changeStreamSplitLargeEvent 演算子が追加され、サイズが 16 MB を超える大規模な変更イベントを分割できるようになりました。これは、以前のバージョンでChangeStream が大規模な変更イベントを処理できなかった問題を解決します。

WT の動的調整

MongoDB 7.0 以降では、WT のトランザクション同時実行性を動的に調整して調整を実装します。デフォルトでは、WT のトランザクション同時実行性は 128 に設定されています。これは、以前のバージョンで例外後にリクエストが蓄積されて発生するデータベース障害を解決します。

MongoDB 8.0

高度な TCMalloc

MongoDB 8.0 以降、高度な TCMalloc が使用されます。

  • 高度な TCMalloc は、各スレッドではなく各 CPU のキャッシュを使用して、メモリフラグメントを削減し、データベースでより重い負荷を実行できるようにします。

  • 高度な TCMalloc は、毎秒オペレーティングシステムにメモリを解放しようとするバックエンドスレッドを作成します。

レプリケーションパフォーマンスの最適化

  • MongoDB 8.0 以降、writeConcernmajority に設定されている場合、MongoDB は変更が適用されるのを待つのではなく、ほとんどのレプリカセットメンバーに oplog が書き込まれた後に oplog を返します。これにより、majority モードでの書き込みパフォーマンスが向上します。

  • MongoDB 8.0 以降、セカンダリノードは各バッチの oplog を並行して書き込み、適用します。Writer スレッドがプライマリノードから新しい oplog エントリを読み取り、ローカル oplog に書き込むと、Applier スレッドはこれらの変更をローカルデータベースに非同期的に適用します。これにより、セカンダリノードのレプリケーションスループットが向上します。

再シャーディングパフォーマンスの最適化

MongoDB 8.0 以降、reshardCollection パフォーマンスが向上しました。このコマンドを使用して、コレクションのシャードキーとデータの分散を変更できます。

参考資料