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

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

最終更新日:Apr 29, 2025

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

接続文字列と URI

エンドポイントの選択

本番環境では、負荷分散と高可用性を実現するために、接続文字列 URI または SRV 高可用性接続文字列 URI を使用してインスタンスに接続することをお勧めします。 インスタンスに読み取り専用ノードが含まれている場合は、読み取り専用接続文字列 URI を使用して、インスタンスにデータを読み取るだけのアプリケーションからインスタンスに接続することをお勧めします。 プライマリ/セカンダリのスイッチオーバーにより、ノードの役割が変わる可能性があります。 ノードの接続文字列を使用してインスタンスに接続することはお勧めしません。

エンドポイントの種類

エンドポイントの種類

説明

SRV 高可用性接続文字列 URI(推奨)

ApsaraDB for MongoDB では、SRV は、接続文字列を簡素化し、レプリカセットメンバーを自動的に識別するメカニズムを提供する、Domain Name System(DNS)レコードの一種です。

レプリカセットインスタンスのノードを追加または削除する場合は、SRV 高可用性接続文字列 URI を使用して、アプリケーションとインスタンスをシームレスに連携させ、アプリケーションの設計とメンテナンスを簡素化します。

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

  • パブリック SRV 高可用性接続文字列 URI を申請する前に、インスタンスのパブリックエンドポイントをアクティブ化します。

  • SRV 高可用性接続文字列 URI は、クラウドディスクを使用するインスタンスでのみ使用できます。

  • 本番環境では、SRV 高可用性接続文字列 URI を使用してアプリケーションをレプリカセットインスタンスに接続することをお勧めします。 クライアントは負荷分散のために複数のノードにリクエストを自動的に送信します。 ノードに障害が発生した場合、クライアントはリクエストを他の正常なノードに自動的にリダイレクトします。 ノードを追加または削除する場合は、アプリケーションとインスタンスをシームレスに連携させ、アプリケーションの設計とメンテナンスを簡素化します。

  • 以前のバージョンのドライバーは、SRV 高可用性接続文字列 URI をサポートしておらず、ノードを自動的に識別しません。例:

    • バージョン 3.9.0 より前の pymongo

    • バージョン 3.10.0 より前の MongoDB Java Driver

    • バージョン 1.1.0 より前の MongoDB Go Driver

    • バージョン 3.3.0 より前の MongoDB Node.js Driver

    • バージョン 3.8 より前の MongoDB Cxx Driver

接続文字列 URI

負荷分散を保証するインスタンスの高可用性接続文字列 URI。 接続文字列 URI は、インスタンス内のデータベースのデータの読み取りと書き込みに使用できます。 接続文字列 URI を使用すると、インスタンス内のノードに接続できます。

重要
  • 本番環境では、プライマリ/セカンダリのスイッチオーバーによるアプリケーションからの読み取り/書き込み操作の中断なしに、接続文字列 URI を使用してアプリケーションをインスタンスに接続することをお勧めします。

  • readPreference パラメーターと readPreferenceTags パラメーターが指定されていない場合、読み取りリクエストはプライマリノードに送信されます。

  • ノードを追加または削除する場合は、接続文字列 URI を変更し、対応するノード接続情報を追加または削除します。

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

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

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

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

  • インスタンス内の 1 つの読み取り専用ノードに障害が発生した場合、読み取りリクエストは次の読み取り専用ノードに切り替えられ、接続性が確保されます。 インスタンス内のすべての読み取り専用ノードに障害が発生した場合、読み取り専用接続文字列 URI を引き続き使用してインスタンスに接続しようとすると、接続例外が発生します。

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

インスタンス内のプライマリノードのエンドポイント。 プライマリエンドポイントを使用して、インスタンス内のデータベースのデータの読み取りと書き込みを行うことができます。

重要

本番環境では、プライマリエンドポイントを使用してアプリケーションをインスタンスに接続することはお勧めしません。 インスタンスに対してプライマリ/セカンダリのスイッチオーバーがトリガーされると、プライマリエンドポイントが変更されます。 この場合、読み取り/書き込み操作が影響を受けないように、新しいプライマリノードに接続する必要があります。

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

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

重要

本番環境では、セカンダリエンドポイントを使用してアプリケーションをインスタンスに接続することはお勧めしません。 インスタンスに対してプライマリ/セカンダリのスイッチオーバーがトリガーされると、セカンダリノードがプライマリノードになる可能性があります。 プライマリエンドポイントは書き込み操作をサポートしているため、データと権限のセキュリティ上の問題が発生します。

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

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

説明

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

エンドポイントの形式

SRV 高可用性接続文字列 URI

形式:

mongodb+srv://<username>:<password>@<srv-host>/<database>?[authSource=<authenticationDatabase>]<other_options>

パラメーター:

パラメーター

説明

mongodb+srv://

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

<username>

データベースアカウント。

<password>

データベースアカウントのパスワード。

<srv-host>

ホスト名。

<database>

アクセスするデータベースの名前。値を admin に設定します。

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

データベースアカウントが属するデータベース。<authenticationDatabase> は認証データベースの名前を示します。

説明

ApsaraDB for MongoDB の SRV 高可用性接続文字列 URI の TXT レコードは、<database> の認証プロパティをオーバーライドする authSource=admin を指定します。そのため、認証データベースを変更する場合は、<database> パラメーターを変更する代わりに、authSource=<authenticationDatabase> を手動で指定します。詳細については、「接続文字列」をご参照ください。

<other_options>

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

説明

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

例:

この例では、データベースアカウントは 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>?replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>][&readPreference=<readPreference_value>][&readPreferenceTags=<readonly_Tags>]

パラメーター:

パラメーター

説明

<username>

データベースアカウント。値を root に設定します。

<password>

データベースアカウントのパスワード。

<host>

プライマリ、セカンダリ、または読み取り専用ノードの [ドメイン名情報]

<port>

プライマリ、セカンダリ、または読み取り専用ノードの [ポート]

<database>

アクセスするデータベースの名前。値を admin に設定します。

replicaSet=<replicaSet_value>

読み取りリクエストがインスタンスのすべてのノードに送信されるように指定します。<replicaSet_value> は、インスタンスの高可用性エンドポイントの一意の 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=secondary

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

説明

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

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****

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

形式:

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

パラメーター:

パラメーター

説明

<username>

データベースアカウントです。値を root に設定します。

<password>

データベースアカウントのパスワード。

<host>

[ドメイン名情報] は読み取り専用ノードのものです。

<port>

読み取り専用ノードの [ポート] です。

<database>

接続先のデータベースの名前。値を 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>

パラメータ:

パラメータ

説明

<host>

プライマリノードの [ドメイン名情報] です。

<port>

プライマリノードの [ポート] です。

例:

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

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

形式:

<host>:<port>

パラメータ:

パラメータ

説明

<host>

セカンダリノードの [ドメイン名情報] です。

<port>

セカンダリノードの [ポート] です。

例:

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

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

フォーマット:

<host>:<port>

パラメータ:

パラメータ

説明

<host>

読み取り専用ノードの [ドメイン名情報] です。

<port>

読み取り専用ノードの [ポート] です。

例:

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

エンドポイントの表示

ネットワークタイプ

説明

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

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

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

インターネット

インターネット経由で ApsaraDB for MongoDB インスタンスに接続する場合、インスタンスはセキュリティリスクにさらされる可能性があります。 そのため、デフォルトでは、ApsaraDB for MongoDB インスタンスにパブリックエンドポイントは提供されません。 インターネット経由で ApsaraDB for MongoDB インスタンスに接続するには、パブリックエンドポイントを申請します。

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

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

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

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

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

    • インスタンスの接続文字列と URI.

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

      説明

      本番環境では、ルートアカウントを使用してデータベースに接続しないことをお勧めします。データベースアカウントを作成し、必要な権限を付与できます

    • インスタンスの特定のデータベースへの接続に使用するアカウントのパスワード。データベースアカウントのパスワードを指定していない場合、またはパスワードを忘れた場合は、パスワードを指定またはリセットします

    • 接続するデータベースの名前。アカウントがルートの場合は、「admin」と入力します。

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

一般的な接続シナリオ

よくある質問