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

ApsaraDB for MongoDB:レプリカセットインスタンスへの接続

最終更新日:Dec 10, 2024

ApsaraDB for MongoDBは、レプリカセットインスタンスのプライマリノード、各セカンダリノード、または各読み取り専用ノードの接続文字列を提供します。 ApsaraDB for MongoDBには、アプリケーション接続用の高可用性 (HA) Uniform Resource Identifier (URI) も提供されます。接続文字列URIと読み取り専用の接続文字列URIです。 このトピックでは、レプリカセットインスタンスの接続文字列とHA URIを表示する方法、およびインスタンスの特定のデータベースにログオンする方法について説明します。

接続文字列とURI

エンドポイントの選択

実稼働環境での負荷分散と高可用性を実現するために、接続文字列URIを使用してインスタンスに接続することを推奨します。 インスタンスに読み取り専用ノードが含まれている場合は、読み取り専用接続文字列URIを使用して、データのみを読み取るアプリケーションをインスタンスに接続することを推奨します。 プライマリ /セカンダリの切り替えにより、ノードの役割が変更される場合があります。 ノードの接続文字列を使用してインスタンスに接続しないことを推奨します。

エンドポイントの種類

Endpointタイプ

Connection string URI

負荷分散とHAを保証するインスタンスのHA接続文字列URI。 接続文字列URIを使用して、インスタンス内のデータベースからデータを読み書きできます。 接続文字列URIを使用すると、インスタンス内のノードに接続できます。

重要
  • 接続文字列URIを使用して、本番環境のアプリケーションをインスタンスに接続することを推奨します。 この場合、読み取り /書き込み操作は、プライマリ /セカンダリの切り替えの影響を受けません。

  • readPreferenceおよびreadPreferenceTagsパラメーターが指定されていない場合、読み取り要求はプライマリノードに送信されます。

SRV HAエンドポイント

SRV HAエンドポイントは、インスタンスのメンテナンスと管理を簡素化できます。 ノードの追加または削除時にエンドポイントを変更する必要はありません。 クライアントは、サービスを中断することなくインスタンスと対話でき、アプリケーションの設計とメンテナンスが簡単になります。

アプリケーションが本番環境にデプロイされている場合は、接続文字列URIを使用してインスタンスに接続することを推奨します。 これにより、クライアントは複数のノードにリクエストを自動的に分散して、インスタンス内の負荷を分散できます。 ノードに障害が発生した場合、クライアントは他の正常なノードにリクエストを自動的にリダイレクトできます。

重要
  • デフォルトでは、SRV HAエンドポイントはApsaraDB for MongoDBコンソールに表示されません。 SRV HAエンドポイントを使用するには、[データベース接続] ページで [プライベートSRVアドレスの申請] または [パブリックSRVアドレスの申請] をクリックします。

  • パブリックSRVエンドポイントを申請する前に、インスタンスのパブリックエンドポイントを申請してください。

  • SRV HAエンドポイントは、クラウドディスクを使用するインスタンスでのみ使用できます。

読み取り専用接続文字列URI

インスタンスの読み取り専用接続文字列URI。 読み取り専用接続文字列URIを使用すると、インスタンス内の読み取り専用ノードに接続できます。 読み取り専用接続文字列URIを使用してインスタンス内のノードに接続すると、読み取り要求がノードに送信されます。

説明
  • インスタンスに読み取り専用ノードが含まれている場合は、読み取り専用接続文字列URIを使用して、データのみを読み取るアプリケーションをインスタンスに接続することを推奨します。

  • インスタンスに読み取り専用ノードが含まれている場合にのみ、読み取り専用接続文字列URIを表示できます。

  • インスタンス内の1つの読み取り専用ノードに障害が発生した場合、接続を確保するために、読み取り要求は次の読み取り専用ノードに切り替えられます。 インスタンス内のすべての読み取り専用ノードに障害が発生した場合、読み取り専用接続文字列URIを使用してインスタンスに接続し続けると、接続例外が発生します。

プライマリエンドポイント

インスタンス内のプライマリノードのエンドポイント。 プライマリエンドポイントを使用して、インスタンス内のデータベースからデータを読み書きできます。

重要

運用環境のアプリケーションをインスタンスに接続するために、プライマリエンドポイントを使用しないことを推奨します。 インスタンスに対してプライマリ /セカンダリの切り替えがトリガーされると、プライマリエンドポイントが変更されます。 この場合、読み取り /書き込み操作が影響を受けないように、新しいプライマリノードに接続する必要があります。

セカンダリエンドポイント

インスタンス内のセカンダリノードのエンドポイント。 セカンダリエンドポイントは、インスタンス内のデータベースからデータを読み取るためにのみ使用できます。

重要

本番環境のアプリケーションをインスタンスに接続するために、セカンダリエンドポイントを使用しないことを推奨します。 インスタンスに対してプライマリ /セカンダリの切り替えがトリガーされると、セカンダリノードがプライマリノードになる場合があります。 プライマリエンドポイントは、データとアクセス許可のセキュリティ問題を引き起こす書き込み操作をサポートします。

読み取り専用エンドポイント

インスタンス内の読み取り専用ノードのエンドポイント。 読み取り専用エンドポイントは、インスタンス内のデータベースからデータを読み取るためにのみ使用できます。

説明

読み取り専用エンドポイントは、インスタンスに読み取り専用ノードが含まれている場合にのみ表示されます。

エンドポイント形式

接続文字列URI

形式:

mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>][&readPreference=<readPreference_value>][&readPreferenceTags=<readonly_Tags>]

パラメーター:

パラメーター

説明

<username>

データベースへのログインに使用されるデータベースアカウントの名前。 デフォルト値:root。

<パスワード>

データベースアカウントのパスワードを設定します。

<ホスト>

プライマリ、セカンダリ、または読み取り専用ノードへの接続に使用されるドメイン名

<ポート>

プライマリ、セカンダリ、または読み取り専用ノードへの接続に使用されるポート

<データベース>

接続するデータベースの名前。 デフォルト値: admin。

replicaSet=<replicaSet_value>

読み取り要求がインスタンスのすべてのノードに送信されることを指定します。 <replicaSet_value> は、インスタンスのHAエンドポイントの一意のIDを示します。

authSource=<authenticationDatabase> (オプション)

指定されたデータベースアカウントが属するデータベース。 <authenticationDatabase> は、認証に使用するデータベースの名前を示します。 認証データベースを指定しない場合は、<database> で指定したデータベースが認証データベースとして使用されます。

readPreference=[primary | primaryPreferred | secondary | secondaryPreferred] (オプション)

書き込み要求がプライマリノードに送信され、読み取り要求がパラメーターで指定されたノードに送信されることを指定します。 このパラメータは、読み書き分離と負荷分散を保証します。 有効な値:

  • readPreference=primary: 読み取り要求はプライマリノードにのみ送信されます。

  • readPreference=primaryPreferred: 読み取り要求は優先的にプライマリノードに送信されます。 プライマリノードに障害が発生した場合、読み取り要求はセカンダリノードと読み取り専用ノードに送信されます。

  • readPreference=secondary: 読み取り要求は、セカンダリおよび読み取り専用ノードにのみ送信されます。 セカンダリノードと読み取り専用ノードに障害が発生した場合、読み取り要求は失敗し、プライマリノードに送信されません。

  • readPreference=secondaryPreferred: 読み取り要求は、セカンダリノードと読み取り専用ノードに優先的に送信されます。 セカンダリノードと読み取り専用ノードに障害が発生した場合、読み取り要求はプライマリノードに送信されます。

説明

読み取り要求がセカンダリノードと読み取り専用ノードに送信されると、不均一な負荷が発生する可能性があります。 読み取り要求を受信するノードをさらに指定するには、readPreferenceTagsパラメーターを設定します。

readPreferenceTags=<readonly_Tags> (オプション)

指定したタグに対応するノードに優先的に読み取り要求を送信するように指定します。 ほとんどの場合、パラメーターはreadPreferenceパラメーターと一緒に指定され、primaryモードと互換性がありません。 <readonly_Tags> は、読み取り専用ノードのタグキーとタグ値を示し、role:electableオプションとrole:readonlyオプションが含まれます。 有効な値:

  • readPreferenceTags=role:electable: セカンダリノードから優先的にデータが読み取られます。

    説明

    このオプションは、クラウドディスクを使用するインスタンスでのみ使用できます。

  • readPreferenceTags=role:readonly: データは読み取り専用ノードから優先的に読み取られます。

インスタンスでは、readPreferenceパラメーターとreadPreferenceTagsパラメーターを使用できます。 異なるタグの組み合わせは、様々なシナリオの要件を満たすことができる。 次の表に、さまざまなシナリオでのパラメーターの組み合わせを示します。

読み取り要求を受信するプライマリノードの応答ポリシー

読み取り要求を受信するノード

パラメータの組み合わせソリューション

失敗した読み取り要求をプライマリノードに送信する

プライマリノードから優先的にデータを読み取る

readPreference=primaryPreferred

セカンダリノードと読み取り専用ノードから優先的にデータを読み取る

readPreference=secondaryPreferred

セカンダリノードから優先的にデータを読み取る

説明

セカンダリノードに障害が発生した場合、読み取り要求がプライマリノードに送信されます。

readPreference=secondaryPreferred&readPreferenceTags=role:electable

読み取り専用ノードから優先的にデータを読み取る

説明

読み取り専用ノードに障害が発生した場合、読み取り要求はプライマリノードに送信されます。

readPreference=secondaryPreferred&readPreferenceTags=role:readonly

失敗した読み取り要求をプライマリノードに送信しない

セカンダリノードと読み取り専用ノードからのみデータを読み取る

readPreference=セカンダリ

セカンダリノードからのみデータを読み取る

説明

セカンダリノードに障害が発生した場合、読み取り操作は失敗します。

readPreference=secondary&readPreferenceTags=role:electable

読み取り専用ノードからのみデータを読み取る

説明

読み取り専用ノードに障害が発生した場合、読み取り操作は失敗します。

readPreference=secondary&readPreferenceTags=role:readonly

例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****

SRV HAエンドポイント

形式:

mongodb+srv://<username>:<password>@<srv-host>/<database>?<options>

パラメーター

項目

説明

mongodb + srv://

接続文字列のプレフィックス。DNS SRVレコードを使用してサービスを識別することを示します。

<username>

データベースアカウントの名前。

<パスワード>

データベースアカウントのパスワードを設定します。

<srv-host>

ホスト名。

<データベース>

接続するデータベースの名前。 デフォルト値: admin。

<オプション>

その他のオプションパラメーター。

説明

SRV HAエンドポイントのsslパラメーターのデフォルト値はtrueです。 SSLを使用して接続を暗号化する必要がない場合は、falseに設定されているsslパラメーターをエンドポイントに追加します。 オプションパラメーターの詳細については、「MongoDBドキュメント」をご参照ください。

例:

次のサンプルコマンドでは、ユーザー名はtest、データベースはadminです。

mongodb+srv://test:****@dds-bp19215393a0****-srv.mongodb.nosql.aliyuncs.com/admin?ssl=false

読み取り専用接続文字列URI

形式:

mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?readPreference=secondary&readPreferenceTags=role:readonly&replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>]

パラメーター:

パラメーター

説明

<username>

データベースへのログインに使用されるデータベースアカウントの名前。 デフォルト値:root。

<パスワード>

データベースアカウントのパスワードを設定します。

<ホスト>

読み取り専用ノードへの接続に使用されるドメイン名

<ポート>

読み取り専用ノードへの接続に使用されるポート

<データベース>

接続するデータベースの名前。 デフォルト値: admin。

readPreference=secondary&readPreferenceTags=role:readonly

読み取り要求を読み取り専用ノードに送信することを指定します。 readPreferenceTagsは、読み取り専用ノードに対応するタグキーとタグ値を示します。 値はrole:readonlyに固定されています。 パラメーターは変更できません。

replicaSet=<replicaSet_value>

読み取り要求がインスタンスのすべてのノードに送信されることを指定します。 <replicaSet_value> は、インスタンスのHAエンドポイントの一意のIDを示します。

authSource=<authenticationDatabase> (オプション)

指定されたデータベースアカウントが属するデータベース。 <authenticationDatabase> は、認証に使用するデータベースの名前を示します。 認証データベースを指定しない場合は、<database> で指定したデータベースが認証データベースとして使用されます。

例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?readPreference=secondary&readPreferenceTags=role:readonly&replicaSet=mgset-6108****

プライマリエンドポイント

形式:

<host>:<port>

パラメーター:

パラメーター

説明

<ホスト>

プライマリノードへの接続に使用されるドメイン名

<ポート>

プライマリノードへの接続に使用されるポート

例:

dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717

セカンダリエンドポイント

形式:

<host>:<port>

パラメーター:

パラメーター

説明

<ホスト>

セカンダリノードへの接続に使用されるドメイン名

<ポート>

セカンダリノードへの接続に使用されるポート

例:

dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717

読み取り専用エンドポイント

形式:

<host>:<port>

パラメーター:

パラメーター

説明

<ホスト>

読み取り専用ノードへの接続に使用されるドメイン名

<ポート>

読み取り専用ノードへの接続に使用されるポート

例:

dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717

エンドポイントのネットワークタイプ

ネットワークタイプ

プライベートネットワーク

  • VPC: 仮想プライベートクラウド (VPC) は、クラシックネットワークよりも高いセキュリティとパフォーマンスを提供する分離されたネットワークです。 デフォルトでは、ApsaraDB for MongoDBはインスタンスのVPCエンドポイントを提供します。

  • クラシックネットワーク: クラシックネットワークは、クラウドサービスが分離されていないネットワーク環境です。 クラシックネットワークは、セキュリティグループまたはホワイトリストを使用して、クラウドサービスへの不正アクセスをブロックします。 新しいインスタンスはクラシックネットワークタイプをサポートしていません。 詳細については、「 [通知] 新しいApsaraDB For MongoDBインスタンスのクラシックネットワークが利用できない」をご参照ください。

インターネット

インターネット経由でApsaraDB for MongoDBインスタンスに接続すると、インスタンスがセキュリティリスクにさらされる可能性があります。 したがって、ApsaraDB for MongoDBインスタンスには、デフォルトでパブリックエンドポイントは提供されません。 インターネット経由でApsaraDB for MongoDBインスタンスに接続する場合は、パブリックエンドポイントを申請する必要があります。 詳細については、「 (オプション) ApsaraDB For MongoDBインスタンスのパブリックエンドポイントの申請」をご参照ください。

インスタンスの接続文字列とURIの表示

  1. レプリカセットインスタンスページに移動します。 上部のナビゲーションバーで、インスタンスが存在するリージョンを選択します。 次に、インスタンスを見つけて、インスタンスのIDをクリックします。

  2. インスタンスの詳細ページの左側のナビゲーションウィンドウで、データベース接続をクリックします。

インスタンスの特定のデータベースにログインする

  1. 次の情報を取得します。

    • インスタンスの接続文字列とHA URI。 詳細については、「レプリカセットインスタンスの接続文字列とURIの表示」をご参照ください。

    • インスタンスの特定のデータベースに接続するために使用されるアカウント。 初期アカウントはルートアカウントです。

      説明

      ルートアカウントを使用して本番環境の特定のデータベースに接続しないことをお勧めします。 アカウントを作成し、ビジネス要件に基づいてアカウントに権限を付与できます。 詳細については、「MongoDBデータベースユーザーの権限の管理」をご参照ください。

    • インスタンスの特定のデータベースに接続するために使用されるアカウントのパスワード。 アカウントのパスワードを設定しなかった場合、またはパスワードを忘れた場合は、アカウントのパスワードを設定またはリセットします。 詳細については、「 (オプション) パスワードのリセット」をご参照ください。

    • 接続するデータベースの名前。 ユーザー名がrootの場合は、adminと入力します。

  2. インスタンスの特定のデータベースにログインします。 詳細については、以下のトピックを参照してください。

一般的な接続シナリオ

よくある質問