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

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

最終更新日:Dec 04, 2025

ApsaraDB for MongoDB のレプリカセットインスタンスは、プライマリノード、セカンダリノード、および読み取り専用ノード用に個別のエンドポイントを提供します。また、アプリケーション接続用に、ConnectionStringURI、ConnectionStringURI SRV、ReadOnly ConnectionStringURI などの高可用性接続文字列 URI も提供します。このトピックでは、これらのエンドポイントの取得方法と接続手順について説明します。

エンドポイントの詳細

エンドポイントの選択

本番環境では、負荷分散と高可用性を確保するために、ConnectionStringURI または ConnectionStringURI SRV アドレスを使用してインスタンスに接続します。インスタンスに読み取り専用ノードがある場合、読み取り操作のみを実行するアプリケーションは、ReadOnly ConnectionStringURI アドレスを使用してインスタンスに接続する必要があります。プライマリ/セカンダリのスイッチオーバーによってノードのロールが変更される可能性があるため、単一ノードのエンドポイントでインスタンスに接続することは推奨されません。次の表に、エンドポイントタイプの違いを示します。

エンドポイントのタイプ

アドレスタイプ

説明

ConnectionStringURI SRV アドレス (推奨)

MongoDB では、SRV は接続文字列を簡素化し、レプリカセットクラスター内のメンバーの自動検出をサポートする DNS レコードタイプです。

レプリカセットインスタンスにノードを追加または削除する場合、SRV アドレスを使用すると、変更を意識することなくインスタンスと対話できます。これにより、アプリケーションの設計とメンテナンスが簡素化されます。

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

  • パブリック SRV アドレスをリクエストする前に、まずインスタンスのパブリックエンドポイントを有効にする必要があります。

  • SRV アドレスは、ディスクを使用するインスタンスでのみサポートされます。

  • 本番環境のアプリケーションは、ConnectionStringURI SRV アドレスを使用してデータベースに接続する必要があります。クライアントは、インスタンスの複数のノードに自動的にリクエストを送信して、負荷分散を実装します。ノードに障害が発生した場合、クライアントは自動的にフェールオーバーを実行し、正常なノードにリクエストを送信します。ノードを追加または削除する場合、変更を意識することなくクラスターと対話できます。これにより、アプリケーションの設計とメンテナンスが簡素化されます。

  • SRV アドレスまたはノードの自動検出は、次のような古いバージョンのドライバーではサポートされていません。

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

    • 3.10.0 より前の mongo-java-driver バージョン。

    • 1.1.0 より前の mongodb-go-driver バージョン。

    • 3.3.0 より前の mongodb node.js バージョン。

    • 3.8 より前の mongo-cxx-driver バージョン。

ConnectionStringURI アドレス

ConnectionStringURI アドレスは、負荷分散と高可用性を提供します。このアドレスには、インスタンス内のすべてのノードのアドレスが含まれています。このアドレスに接続して、データベースに対する読み取りおよび書き込み操作を実行できます。

重要
  • 本番環境のアプリケーションは、ConnectionStringURI アドレスを使用してインスタンスに接続する必要があります。これにより、プライマリ/セカンダリのスイッチオーバーによって読み取りおよび書き込み操作が影響を受けないことが保証されます。

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

  • レプリカセットインスタンスにノードを追加または削除する場合は、この接続文字列を変更して、対応するノードの接続情報を追加または削除する必要があります。

ReadOnly ConnectionStringURI アドレス

ReadOnly ConnectionStringURI アドレスには、インスタンス内のすべての読み取り専用ノードのアドレスのみが含まれます。このアドレスに接続すると、読み取りリクエストは読み取り専用ノードに送信され、書き込みリクエストはプライマリノードに送信されます。

説明
  • インスタンスに読み取り専用ノードがある場合、読み取り操作のみを実行するアプリケーションは、このアドレスを使用してインスタンスに接続する必要があります。

  • ReadOnly ConnectionStringURI アドレスは、インスタンスに読み取り専用ノードがある場合にのみ表示されます。

  • インスタンス内の読み取り専用ノードに障害が発生した場合、読み取りリクエストは自動的に次の読み取り専用ノードに切り替えられます。これは、アプリケーションの読み取り操作には影響しません。すべての読み取り専用ノードに障害が発生した場合、このエンドポイントを引き続き使用すると接続エラーが発生します。

プライマリアドレス

プライマリノードのエンドポイント。このアドレスに接続して、データベースに対する読み取りおよび書き込み操作を実行できます。

重要

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

セカンダリアドレス

セカンダリノードのエンドポイント。このアドレスに接続して、データベースに対する読み取り操作のみを実行できます。

重要

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

読み取り専用アドレス

読み取り専用ノードのエンドポイント。このアドレスに接続して、データベースに対する読み取り操作のみを実行できます。

説明

このアドレスは、インスタンスに読み取り専用ノードがある場合にのみ表示されます。

接続アドレスのフォーマット

ConnectionStringURI SRV アドレス

フォーマット:

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

パラメーターの説明:

パラメーター

説明

mongodb+srv://

接続文字列のプレフィックス。サービスディスカバリに DNS SRV レコードが使用されることを示します。

<username>

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

<password>

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

<srv-host>

ホスト名。

<database>

アクセスするデータベースの名前。デフォルト値は admin です。

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

このパラメーターは、データベースアカウントが存在するデータベースを指定します。<authenticationDatabase> は認証データベースの名前です。

説明

ApsaraDB for MongoDB の SRV 接続文字列の TXT レコードは authSource=admin を指定します。これは <database> の認証プロパティを上書きします。したがって、認証データベースを変更するには、<database> パラメーターを変更するのではなく、手動で authSource=<authenticationDatabase> を指定する必要があります。詳細については、MongoDB の公式ドキュメントをご参照ください。

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

このパラメーターは、読み書き分離と負荷分散を実装します。書き込みリクエストをプライマリノードに送信し、読み取りリクエストをこのパラメーターで指定されたノードに送信します。有効な値:

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

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

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

  • readPreference=secondaryPreferred:読み取りリクエストは優先的にセカンダリノードと読み取り専用ノードに送信されます。すべてのセカンダリノードと読み取り専用ノードに障害が発生した場合、このパラメーターは読み取りリクエストをプライマリノードに送信します。

説明

読み取りリクエストがセカンダリノードと読み取り専用ノードに送信される場合、負荷が不均等になる可能性があります。ノードをさらに指定するには、readPreferenceTags パラメーターを設定します。

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

このパラメーターは、指定されたタグに一致するノードに読み取りリクエストを優先的に送信します。通常、readPreference パラメーターと共に使用され、primary モードとは互換性がありません。<readonly_Tags> は、読み取り専用ノードのタグのキーと値のペアのリストです。次のタイプがサポートされています。

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

    説明

    このオプションは、ディスクを使用するインスタンスでのみ有効です。

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

<other_options>

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

説明

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

MongoDB インスタンスでは、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

例:

データベースアカウントは test で、admin データベースに属しています。

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

ConnectionStringURI アドレス

フォーマット:

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> は、読み取り専用ノードのタグのキーと値のペアのリストです。次のタイプがサポートされています。

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

    説明

    このオプションは、ディスクを使用するインスタンスでのみ有効です。

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

MongoDB インスタンスでは、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****

ReadOnly ConnectionStringURI アドレス

フォーマット:

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> は、インスタンスの高可用性エンドポイントの一意の ID です。

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

このパラメーターは、データベースアカウントが存在するデータベースを指定します。<authenticationDatabase> は認証データベースの名前です。このパラメーターを設定しない場合、<database> が認証データベースとして使用されます。

例:

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

プライマリアドレス

フォーマット:

mongodb://<username>:<password>@<host>:<port>/<database>?[directConnection=true]

説明:

パラメーター

説明

<username>

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

<password>

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

<host>

プライマリノードのドメイン名

<port>

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

<database>

アクセスするデータベースの名前。デフォルト値は admin です。

directConnection=true (オプション)

リクエストが現在のエンドポイント (プライマリノード) にのみ送信されるように指定します。

  • このパラメーターを指定し、その値を true に設定すると、読み取りリクエストと書き込みリクエストの両方がプライマリノードに送信されます。

  • このパラメーターを指定しないか、その値を false に設定すると、読み取りリクエストが他のノードに転送される可能性があります。

例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?directConnection=true

セカンダリ アドレス

フォーマット:

mongodb://<username>:<password>@<host>:<port>/<database>?[directConnection=true]

説明:

パラメーター

説明

<username>

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

<password>

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

<host>

セカンダリノードのドメイン名

<port>

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

<database>

アクセスするデータベースの名前。デフォルト値は admin です。

directConnection=true (オプション)

リクエストが現在のエンドポイント (セカンダリノード) にのみ送信されるように指定します。

  • このパラメーターを指定し、その値を true に設定すると、書き込みリクエストは拒否されます。

  • このパラメーターを指定しないか、その値を false に設定すると、書き込みリクエストはプライマリノードに転送されます。

例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?directConnection=true

読み取り専用アドレス

フォーマット:

mongodb://<username>:<password>@<host>:<port>/<database>?[directConnection=true]

説明:

パラメーター

説明

<username>

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

<password>

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

<host>

読み取り専用ノードの[ドメイン名]

<port>

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

<database>

アクセスするデータベースの名前。デフォルト値は admin です。

directConnection=true

リクエストが現在のエンドポイント (読み取り専用ノード) にのみ送信されるように指定します。

  • このパラメーターを指定し、その値を true に設定すると、書き込みリクエストは拒否されます。

  • このパラメーターを指定しないか、その値を false に設定すると、書き込みリクエストはプライマリノードに転送されます。

例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?directConnection=true

接続アドレスのネットワークタイプ

ネットワークタイプ

説明

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

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

  • クラシックネットワーク:Alibaba Cloud サービスのセキュリティグループまたはホワイトリストに依存して保護される、非分離型のネットワークです。新しいインスタンスはクラシックネットワークをサポートしなくなりました。詳細については、「[お知らせ] 新しい ApsaraDB for MongoDB インスタンスはクラシックネットワークをサポートしなくなりました」をご参照ください。

パブリックネットワーク

インターネット経由でインスタンスに接続すると、セキュリティリスクが生じます。ApsaraDB for MongoDB インスタンスは、デフォルトではパブリックエンドポイントを提供しません。パブリックネットワーク経由で接続するには、手動でパブリックエンドポイントを申請できます。

データベースエンドポイントの取得

  1. [レプリカセットインスタンス] ページに移動します。ページの上部でリソースグループとリージョンを選択し、対象のインスタンスの ID をクリックします。

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

MongoDB データベースへのログイン

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

  2. データベースにログインします。次のいずれかの方法を使用できます。

一般的な接続シナリオ

よくある質問

クライアントが接続文字列にないノードにリクエストを送信するのはなぜですか?

この動作は正常であり、高可用性を確保するために設計されたサービスディスカバリと呼ばれる MongoDB クライアントのコア機能です。サービスディスカバリにより、クライアントはプライマリノードのダウン時など、クラスターのトポロジーの変更に自動的に適応し、サービスの継続性を確保できます。単一の接続アドレスにのみリクエストを送信するには、接続文字列に directConnection=true を追加します。詳細については、「directConnection」をご参照ください。

例:

5 ノードのインスタンスが接続文字列 mongodb://root:xxx@dds-xxxxx1-pub.mongodb.rds.aliyuncs.com:3717,dds-xxxxx2-pub.mongodb.rds.aliyuncs.com:3717/admin を使用している場合、クライアントは他の 2 つのノード dds-xxxxx3-pub.mongodb.rds.aliyuncs.com:3717,dds-xxxxx4-pub.mongodb.rds.aliyuncs.com:3717 にもリクエストを送信し、そのステータスをモニターします。