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

ApsaraDB for MongoDB:トラブルシューティング

最終更新日:Oct 22, 2025

ApsaraDB for MongoDB インスタンスを管理する際に、予期しないエラーが発生すると、重大な操作が停止する可能性があります。根本原因は、不正なホワイトリストエントリや接続文字列などの単純な設定ミスから、ゾーン内のリソース制限、API のレート制限、高可用性フェールオーバーイベントなど、マネージド環境に固有のより複雑な問題まで多岐にわたります。このガイドでは、一般的なエラーメッセージとその原因を示し、問題を迅速に解決し、ダウンタイムを最小限に抑え、データベースの安定性を確保するための実用的なソリューションを提供します。

エラーメッセージ

原因と解決策

指定されたパラメーター AccountDescription が無効です。

バックアップデータを新しいインスタンスに復元する際は、インスタンス名が指定された制限を満たしていることを確認してください。

シャードの合計数が範囲外です。

シャードクラスターインスタンスから新しいインスタンスにデータを復元する際は、新しいインスタンスのシャード数がソースインスタンスと同じであることを確認してください。

dbinstance ストレージのスペックダウンはサポートされていません。

ApsaraDB for MongoDB は、インスタンスのストレージ容量の削減をサポートしていません。ストレージ容量を削減するには、新しいインスタンスを作成してソースインスタンスを置き換えます。詳細については、「その他の設定変更シナリオと方法」をご参照ください。

クラシックネットワークはサポートされなくなりました。VPC の使用を推奨します。

クラシックネットワーク内の ApsaraDB for MongoDB インスタンスでは、更新、インスタンスタイプの変更、課金方法の変更はできなくなりました。詳細については、「[通知] クラシックネットワーク上の ApsaraDB for MongoDB インスタンスの EOL」をご参照ください。

リクエストされた操作のためのリソースが不足しています。

このエラーは、インスタンスが存在するゾーンにスペックアップのためのリソースが不足しているために発生します。インスタンスを別の仕様に変更するか、チケットを送信してテクニカルサポートに支援を依頼してください。

ソースデータベースの oplog が有効になっていません。

このエラーは、データ移行タスクの設定に失敗した場合に発生します。インスタンスのアーキテクチャを確認してください。スタンドアロンインスタンスには oplog がないため、Data Transmission Service (DTS) による増分移行をサポートしていません。代わりに完全移行を設定してください。

リクエストが不正なコンポーネントを参照しています。カスタマーサポートにお問い合わせください。

このエラーは、リソースの可用性がゾーンによって異なるため、インスタンスの購入中に発生する可能性があります。ゾーンまたはインスタンスタイプを変更するか、チケットを送信してテクニカルサポートに支援を依頼してください。

API のレート制限によりリクエストが拒否されました。

API アクセスを管理および制御するために、Alibaba Cloud は API 呼び出しの頻度を制限しています。[クォータセンター] でクォータを表示し、クォータの引き上げをリクエストしてください。

データベースに対する読み取り権限が不足しています。

DTS を使用してデータを移行する場合、ソースデータベースとターゲットデータベースのデータベースアカウントに必要な権限が必要です。権限を付与する方法は次のとおりです:

指定された復元時間が無効です。

API を呼び出してインスタンスを復元する際は、復元時間が有効であることを確認してください。時間は yyyy-MM-ddTHH:mm:ssZ 形式で、UTC で指定する必要があります。たとえば、北京時間 (UTC+8) の `2024-11-08 20:00:00` を UTC に変換するには、8 時間を引きます。結果は `2024-11-08T12:00:00Z` になります。

SASL 認証ステップでサーバーがエラーを返しました: BSON フィールド 'saslContinue.mechanism' は不明なフィールドです。

バージョン間でインスタンスを復元する場合、認証メカニズムが異なると認証が失敗します。MongoDB 4.0 のデフォルトの認証メカニズムは SCRAM-SHA-1 です。MongoDB 5.0 以降のデフォルトは SCRAM-SHA-256 です。バージョン間でインスタンスを復元する場合は、バージョン 4.0 などの古いバージョンの mongorestore ツールを使用してください。

TypeError: db.xxx.find は関数ではありません。

コレクション名が予約キーワードである可能性があります。クエリを実行するには db.getCollection("xxx").find を使用するか、コレクションの名前を変更してください。

createUser が失敗しました: コマンドがエラー xx (Unauthorized) で失敗しました: 'admin でコマンド xxx を実行する権限がありません。

Alibaba Cloud アカウントには制限された権限があり、admin システムデータベースへの書き込み権限を付与することはできません。これは、admin データベースへのデータ書き込みによって引き起こされる可能性のあるパフォーマンスのジッターを防ぐためです。詳細については、「インスタンス作成時に指定されたルートアカウントの権限」をご参照ください。

指定されたネットワークタイプが一致しません。

クラシックネットワークのセキュリティグループがすでにインスタンスに追加されている場合、VPC セキュリティグループを追加することはできません。

インスタンスのマイナーバージョンはこの API ではサポートされていません。

インスタンスのマイナーバージョンが古すぎます。データベースのマイナーバージョンをアップグレードしてください

インスタンスは完全サポート終了 (EOFS) 段階にあります。

インスタンスのバージョンは完全サポート終了 (EOFS) 段階にあり、更新できません。データベースのメジャーバージョンをアップグレードしてください

リソースが利用できません。

このエラーは、インスタンスの作成、スペックアップ、またはスペックダウン時にリソースの問題が発生したことを示します。リクエスト ID を取得し、チケットを送信してテクニカルサポートに支援を依頼することをお勧めします。

接続とネットワークのエラー

エラーメッセージ

原因と解決策

ホスト 'dds-xxxx.mongodb.rds.aliyuncs.com:3717' でコマンド 'isMaster' を実行しようとしているときにネットワークエラーが発生しました: 例外: 接続に失敗しました

  • ReadPreferenceServerSelector{readPreference=primary} に一致するサーバーを待機中に 3000ms 後にタイムアウトしました。例外=(com.mongodb.MongoSocketReadException: ストリームの終わりに早く到達しました)

  • ソケット recv() errno:54 ピア x.x.x.x:27017 によって接続がリセットされました

ApsaraDB for MongoDB インスタンスへの接続数が上限に達し、新しい接続を確立できない可能性があります。

解決策:

  1. インスタンスの接続が使い果たされているかどうかを確認します。詳細については、「インスタンスへの接続数を照会する方法」をご参照ください。

  2. 接続の使用を最適化します。詳細については、「インスタンスへの接続数が上限に達した場合の対処方法」をご参照ください。

MongoDB.Driver.MongoWaitQueueFullException: サーバー xxx への接続を取得するための待機キューがいっぱいです。

MongoDB ドライバーの待機キューがいっぱいです。これは、接続プールに指定された接続数が少ないか、同時リクエストが多いために発生する可能性があります。そのため、利用可能な接続が提供されません。

解決策:

  1. まず、このエラーが報告されたプログラムの接続プール設定を確認することをお勧めします。たとえば、接続プールに妥当な数の接続が指定されていることを確認します。詳細については、「クライアントからの接続数を制限する方法」をご参照ください。

  2. プログラムを調整してもこの問題が解決しない場合は、ApsaraDB for MongoDB インスタンスの接続が使い果たされていないか確認してください。詳細については、次のトピックをご参照ください。

    1. インスタンスへの接続数を照会する方法

    2. インスタンスへの接続数が上限に達した場合の対処方法

(TooManyLogicalSessions) アクティブなセッション数が多すぎるため、セッションをキャッシュに追加できません。

過剰な数の同時接続が確立されると、利用可能なセッションが使い果たされる可能性があります。

解決策:

  1. 接続の枯渇によって引き起こされる接続失敗の問題をトラブルシューティングします。詳細については、次のトピックをご参照ください。

    1. インスタンスへの接続数を照会する方法

    2. インスタンスへの接続数が上限に達した場合の対処方法

  2. 接続数に問題がない場合は、他のインスタンスのパフォーマンス項目がビジネス要件を満たしていないかどうかを確認します。

    1. ノードモニタリング機能を使用して、一般的なリソース (CPU 使用率やメモリ使用量など) の使用状況を確認し、インスタンスの仕様がビジネス要件を満たしているかどうかを判断します。

    2. インスタンスの仕様が過度に小さいにもかかわらず負荷が高い場合は、オフピーク時にインスタンスの構成を変更できます。

  • getaddrinfo が失敗しました。

  • 適切なサーバーが見つかりませんでした (`serverSelectionTryOnce` が設定されています)。

使用されているインスタンスのエンドポイントが正しいかどうかを確認してください。インスタンスのエンドポイントの詳細については、次のトピックをご参照ください。

  • 5000 ミリ秒後に 10.*.*.8:3717 への接続に失敗しました、あきらめます。エラー: サーバー 10.*.*.8:3717 (10.*.*.8) に接続できませんでした、接続試行が失敗しました

  • pymongo.errors.ServerSelectionTimeoutError: dds-xxxx.mongodb.rds.aliyuncs.com:3717: [Errno 113] ホストへのルートがありません,dds-xxxx.mongodb.rds.aliyuncs.com:3717

  • InvalidInstanceId.NotFound: インスタンスが現在の vpc にありません。

ECS インスタンスがプライベートネットワーク経由で ApsaraDB for MongoDB インスタンスに接続できません。

解決策:

  1. ホワイトリストの設定を確認します。ECS インスタンスのプライベート IP アドレスがApsaraDB for MongoDB インスタンスの IP アドレスホワイトリストに追加されていることを確認します。

  2. ECS インスタンスと ApsaraDB for MongoDB インスタンス間のネットワーク接続を確保します。

    ECS インスタンスと ApsaraDB for MongoDB インスタンスが同じ VPC にある場合、2 つのインスタンスはプライベートネットワーク経由で直接相互接続できます。ECS インスタンスを VPC をまたいで ApsaraDB for MongoDB インスタンスに接続するには、次のいずれかの方法を使用できます。

org.springframework.data.mongodb.UncategorizedMongoDbException: メッセージ受信中にタイムアウトしました。ネストされた例外は com.mongodb.MongoSocketReadTimeoutException: メッセージ受信中にタイムアウトしました

  • "errmsg": "not master", "code": 10107, "codeName": "NotMaster"

  • "errmsg": "not master", "code": 10107, "codeName": "NotWritablePrimary"

  • writableServerSelector に一致するサーバーを待機中に 30000ms 後にタイムアウトしました。

  • コマンドがエラー 10107 (NotWritablePrimary): 'not primary' でサーバー xxx で失敗しました

  • Explain の子コマンドはこのノードでは実行できません。セカンダリで書き込みコマンドを explain していますか?

  • not master and slaveOk=false.

  • MongoNotPrimaryException: コマンドがエラー 10107 (NotMaster): 'not master' でサーバー xxx で失敗しました。

  • 理由: TopologyDescription { type: 'ReplicaSetNoPrimary',...}

データがレプリカセットインスタンスのプライマリノードに書き込まれていません。

原因: 書き込み操作はプライマリノードでのみ実行できます。以前にプライマリノードのエンドポイントを接続に使用していた場合、プライマリ/セカンダリのスイッチオーバー後に接続されたノードがセカンダリノードになり、書き込み操作が失敗します。

解決策:

  • アプリケーションが本番環境で実行されている場合は、接続文字列 URI を使用してアプリケーションをインスタンスに接続することをお勧めします。ノードに障害が発生した場合、アプリケーションの読み取り/書き込み操作はプライマリ/セカンダリのスイッチオーバーの影響を受けません。インスタンスのエンドポイントの詳細については、次のトピックをご参照ください。

  • 手動でノードのロールを切り替えます。接続に使用されているエンドポイントのノードを新しいプライマリノードに切り替えます。

アプリケーションが切断された後に ApsaraDB for MongoDB インスタンスに自動的に再接続し、例外を処理して業務継続性を保護できるようにすることをお勧めします。

[Unauthorized] クラウドインスタンスエラー、ディスクがロックされています、ディスククォータを確認してアップグレードしてください、

ディスク容量が不足しているため、ApsaraDB for MongoDB インスタンスがロックされています。

解決策: 詳細については、「ディスク容量の不足によりインスタンスがロックされたり、インスタンスにデータを書き込めなくなったりした場合の対処方法」をご参照ください。

(AuthenticationFailed) 認証に失敗しました。

  • !xxx@dds-xxx.mongodb.rds.aliyuncs.com: イベントが見つかりません

提供されたデータベースアカウントのパスワードに特殊文字が含まれています。特殊文字には ! @ # $ % ^ & * ( ) _ + = が含まれます

解決策: 詳細については、「接続文字列のアカウント名またはパスワードに特殊文字が含まれているために接続に失敗した場合の解決方法」をご参照ください。

クラスター ID の取得エラー: (CommandNotFound) replSetGetConfig はセキュリティ上の理由からクラウドプロバイダーによって禁止されています

ApsaraDB for MongoDB は replSetGetConfig コマンドをサポートしていません。詳細については、「ApsaraDB for MongoDB でサポートされているコマンドとサポートされていないコマンド」をご参照ください。

バージョン 4.2 から 4.4 へのアップグレード時のエラー

エラーメッセージ

原因と解決策

CHECK_USER_COLLECTIONS_IN_ADMIN_FAILED

原因: admin データベースにシステム以外のコレクションが含まれています。セキュリティ上の理由から、バージョン 4.4 以降では、ルートアカウントおよびカスタムアカウントは `admin` データベースへの書き込み権限を持つことができなくなりました。これらのカスタムコレクションを他のデータベースに移動する必要があります。

解決策:

  1. 次のコマンドを実行して、old_collection コレクションを new_dbnew_collection コレクションに移動します。古いコレクション名と新しいコレクション名は同じでもかまいません。

    db.getSiblingDB("admin").runCommand({renameCollection: "<admin.old_collection>", to: "<new_db.new_collection>"})
    重要

    コレクションが大きい場合、コマンドの実行に時間がかかることがあります。この間、コレクションへのすべての書き込み操作がブロックされます。移行のために十分な O&M ウィンドウを確保してください。

  2. 名前の変更操作が完了したら、drop コマンドを実行して元のコレクションを削除します。その後、バージョン 4.4 にアップグレードできます。

    db.getSiblingDB("admin").getCollection("<old_collection>").drop()

CHECK_USERS_AND_ROLES_FAILED

原因: admin データベースにカスタムの特権アカウントが含まれています。セキュリティ上の理由から、バージョン 4.4 以降では、ルートアカウントおよびカスタムアカウントは admin データベースへの書き込み権限を持つことができなくなりました。カスタムアカウントから admin データベースの書き込み権限を削除する必要があります。

解決策: 変更が必要なアカウントとロールは、コンソールのエラーメッセージに「user my_user has high privilege role readWrite」と表示されます。次のコマンドを実行して、admin データベースの my_user アカウントから readWrite ロールを削除します。

重要

コマンドを実行する前に、アプリケーションがこのアカウントを使用して admin データベースにデータを書き込まないことを確認してください。

db.getSiblingDB("admin").runCommand({revokeRolesFromUser: "my_user", roles: [{role: "readWrite", db: "admin"}]})