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

ApsaraDB for MongoDB:mongoシェルを使用してレプリカセットインスタンスに接続する

最終更新日:Jun 13, 2024

mongoシェルは、MongoDBに付属するデータベース管理ツールです。 オンプレミスサーバーまたはElastic Compute Service (ECS) インスタンスであるクライアントにmongoシェルをインストールできます。

前提条件

レプリカセットインスタンスが作成されます。 詳細については、「レプリカセットインスタンスの作成」をご参照ください。

背景情報

デフォルトのデータベース管理者では、レプリカセットインスタンスにすべてのデータベースアカウントとロールを保存できます。 ビジネス要件を実装するためにadmin以外のデータベースを使用し、adminで操作を実行しないことを推奨します。

準備

  • レプリカセットインスタンスと同じエンジンバージョンを使用するmongoシェルがダウンロードされ、オンプレミスサーバーまたはECSインスタンスにインストールされます。 詳細については、MongoDB Shellダウンロードおよびmongo Shellをご参照ください。

    アプリケーションがElastic Compute Service (ECS) インスタンスにデプロイされている場合は、ApsaraDB for MongoDBインスタンスとECSインスタンスがネットワーク接続を確保するための次の要件を満たしていることを確認してください。ECSインスタンス情報の表示方法の詳細については、「インスタンス情報の表示」をご参照ください。

    • ApsaraDB for MongoDBインスタンスとECSインスタンスは同じリージョンにデプロイされています。

    • ApsaraDB for MongoDBインスタンスとECSインスタンスは同じネットワークタイプを使用しています。

      説明
      • 同じゾーンを使用するとネットワークの遅延が減少するため、同じゾーンを推奨します。

      • VPCはより高いセキュリティを提供するため、VPCを推奨します。

      • ネットワークタイプがVPCの場合、同じVPC IDを使用していることを確認する必要があります。

      • VPCを使用したいが、ECSインスタンスのネットワークタイプがクラシックネットワークの場合、ECSインスタンスのネットワークタイプをVPCに変更できます。 詳細については、「クラシックネットワークからVPCへのECSインスタンスの移行」をご参照ください。

  • オンプレミスサーバーまたはECSインスタンスのIPアドレスがインスタンスのホワイトリストに追加されます。 詳細については、「ApsaraDB For MongoDBインスタンスのホワイトリストの設定」をご参照ください。

  • インターネット経由でインスタンスに接続する場合は、パブリックエンドポイントを申請する必要があります。 詳細については、「 (オプション) ApsaraDB For MongoDBインスタンスのパブリックエンドポイントの申請」をご参照ください。

  • インスタンス内の読み取り専用ノードに接続する場合は、インスタンスに少なくとも1つの読み取り専用ノードが含まれていることを確認してください。 インスタンスに読み取り専用ノードがない場合は、インスタンスに1つ以上の読み取り専用ノードを追加します。 詳細については、「レプリカセットインスタンスの設定の変更」をご参照ください。

手順

  1. ApsaraDB for MongoDBコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、レプリカセットインスタンス をクリックします。

  3. ページの左上隅で、インスタンスが属するリソースグループとリージョンを選択します。

  4. インスタンスのIDをクリックするか、インスタンスに対応する 操作 列のMore iconをクリックし、管理 を選択します。

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

  6. インスタンスへの接続に必要なエンドポイントを取得します。

    項目

    説明

    エンドポイント種類

    • プライベートエンドポイント:

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

      • クラシックネットワーク: クラシックネットワーク内のクラウドサービスは分離されません。 クラウドサービスへの不正アクセスは、セキュリティグループまたはホワイトリストを使用してブロックされます。

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

    ロール

    • プライマリノード: レプリカセットインスタンスのプライマリノードは、インスタンスデータベースに対して読み取り操作と書き込み操作の両方を実行できます。

      重要

      接続文字列を使用して本番環境のプライマリノードに接続しないことをお勧めします。 それ以外の場合、プライマリ /セカンダリの切り替えがノードの接続文字列の変更をトリガーすると、接続が中断されます。 この場合、読み取り操作と書き込み操作が影響を受けないように、新しい接続文字列に接続する必要があります。

    • セカンダリノード: レプリカセットインスタンスのセカンダリノードは、インスタンスデータベースに対してのみ読み取り操作を実行できます。

    • 読み取り専用ノード: レプリカセットインスタンスの読み取り専用ノードは、インスタンスデータベースに対してのみ読み取り操作を実行できます。

      説明

      読み取り専用ノードの接続文字列は、レプリカセットインスタンスに読み取り専用ノードが含まれている場合にのみ表示されます。

    • 読み取り専用接続文字列URI: 負荷分散とHAを保証するHA接続文字列URI。 このURIを使用してレプリカセットインスタンスに接続すると、インスタンスデータベースで読み取りおよび書き込み操作を実行できます。 このURIを使用すると、インスタンス内の読み取り専用ノードに接続できます。 インスタンスに複数の読み取り専用ノードが含まれている場合、多数の読み取り操作を処理する必要があるシナリオでは、このURIに接続することを推奨します。

      説明
      • このURIは、インスタンスに少なくとも1つの読み取り専用ノードが含まれている場合にのみ表示できます。

      • このURIを使用すると、読み取り要求は読み取り専用ノードに優先的に送信されます。

      • 1つの読み取り専用ノードに障害が発生した場合、読み取り要求は次の読み取り専用ノードに切り替えられ、接続が保証されます。 すべての読み取り専用ノードに障害が発生した場合、読み取り要求はセカンダリノードに切り替えられます。

    • 接続文字列URI: 負荷分散およびHAを保証するHA接続文字列URI。 このURIを使用してレプリカセットインスタンスに接続すると、インスタンスデータベースで読み取りおよび書き込み操作を実行できます。 このURIを使用すると、インスタンス内のノードに接続できます。 本番環境でこのURIに接続することを推奨します。

      重要

      このURIに接続すると、すべてのリクエストはプライマリノードによって処理されます。 読み取りおよび書き込み操作は、プライマリ /セカンダリの切り替えの影響を受けません。

    プライマリ、セカンダリ、または読み取り専用ノードの接続文字列

    形式:

    <ホスト >:< ポート>

    パラメーター:

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

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

    例:

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

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

    形式:

    mongodb://<username >:< password >@< host1 >:< port1 >,< host2 >:< port2>,...,<hostN >:< portN>/<database>?readPreference=[セカンダリ | secondaryPreferred][&readPreferTags=<readonly_Tags>]&replicaSet=<authenticationDatabase>

    パラメーター:

    • <username>: データベースアカウントの名前。 デフォルト値:root。

    • <password>: データベースアカウントのパスワード。

    • <host>: 読み取り専用ノードへの接続に使用されるドメイン名情報

    • <port>: 読み取り専用ノードへの接続に使用されるポート番号

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

    • readPreference=[secondary | secondaryPreferred]: 読み書き分離を実装します。

      重要
      • mongoシェルは、readPreference=[secondary | secondaryPreferred] パラメーターをサポートしていません。 読み取り要求はプライマリノードに送信されます。

      • mongoシェルを使用してインスタンスに接続する場合、cursor.readPref() またはMongo.setReadPref() を使用して読み書き分離を実装できます。 詳細については、「cursor.readPref() 」または「Mongo.setReadPref() 」をご参照ください。

    • readPreferenceTags=<readonly_Tags> (オプション): 読み取り要求は、ラベルに対応する読み取り専用ノードに優先的に送信されます。

      重要
      • mongoシェルは、readPreferenceTags=<readonly_Tags> パラメーターをサポートしていません。 読み取り要求はプライマリノードに送信されます。

      • mongoシェルを使用してインスタンスに接続する場合、cursor.readPref() またはMongo.setReadPref() を使用して、タグに対応する読み取り専用ノードに読み取り要求を送信できます。 詳細については、「cursor.readPref() 」または「Mongo.setReadPref() 」をご参照ください。

    • replicaSet=<replicaSet_value>: インスタンスのすべてのノードに読み取り要求を送信します。 <replicaSet_value>: インスタンスへの接続に使用される一意のURI ID。

    • authSource=<authenticationDatabase>: 指定されたデータベースアカウントが属するデータベースを指定します。 このパラメーターはオプションです。 <authenticationDatabase>: 認証に使用されるデータベースの名前。 認証データベースを指定しない場合は、<database> で指定したデータベースが認証データベースとして使用されます。

      重要

      認証を成功させるには、指定されたデータベースアカウントが指定された認証データベースに属している必要があります。

    例:

    データベースアカウントはtestで、データベースはadminです。

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

    Connection string URI

    形式:

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

    パラメーター:

    • <username>: データベースアカウントの名前。 デフォルト値:root。

    • <password>: データベースアカウントのパスワード。

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

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

    • <database>: 接続するデータベースの名前。

    • replicaSet=<replicaSet_value>: インスタンスのすべてのノードに読み取り要求を送信します。 <replicaSet_value>: インスタンスへの接続に使用される一意のURI ID。

    • authSource=<authenticationDatabase>: 指定されたデータベースアカウントが属するデータベースを指定します。 このパラメーターはオプションです。 <authenticationDatabase>: 認証に使用されるデータベースの名前。 認証データベースを指定しない場合は、<database> で指定したデータベースが認証データベースとして使用されます。

      重要

      認証を成功させるには、指定されたデータベースアカウントが指定された認証データベースに属している必要があります。

    例:

    データベースアカウントはtestで、データベースはadminです。

    mongodb:// test:**** @ dds-bp19f409d7512 **** .mongodb.rds.aliyuncs.com:3717、dds-bp19f409d7512 **** .mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108 ****
  7. オンプレミスサーバーまたはECSインスタンスをインスタンスに接続します。

    • HA接続文字列URIを使用してインスタンスに接続する

      このURIを使用すると、すべてのインスタンスノードを接続できます。 ノードに障害が発生しても、インスタンスは接続できます。

      形式:

      mongo "<Connection string URI>"

      パラメーター: <Connection string URI> は、読み取り専用の接続文字列URIまたは接続文字列URIを指定します。

      重要
      • 読み取り専用の接続文字列URIまたは接続文字列URIの **** を、データベースアカウントの実際のパスワードに置き換えます。

      • mongoシェルは、読み取り専用接続文字列URIでreadPreferenceパラメーターとreadPreferenceTagsパラメーターを識別できません。 このURIを使用すると、プライマリノードが自動的に接続されます。

      例:

      接続文字列URIが使用されます。 データベースアカウントはtestで、データベースはadminです。

      mongo "mongodb:// test:**** @ dds-bp19f409d7512 **** .mongodb.rds.aliyuncs.com:3717、dds-bp19f409d7512 **** .mongodb.rds.aliyuncs.com:3717、dds-bp19f409d7512 **** .mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108 ****"
    • ノードの接続文字列を使用してインスタンスに接続する

      この方法を使用すると、1つのノードのみが接続されます。 ノードに障害が発生した場合、インスタンスに接続できません。

      1. 次のコマンドを実行します。

        形式:

        mongo -- host <host> -- port <port> -u <username> -p -- authenticationDatabase <authenticationDatabase>

        パラメーター:

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

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

        • <username>: データベースアカウントの名前。 デフォルト値:root。

          説明

          データベースログインにはrootアカウントを使用しないことを推奨します。 データベースアカウントを作成し、そのアカウントに権限を付与できます。 詳細については、「MongoDBデータベースユーザーの権限の管理」をご参照ください。

        • <database>: データベースアカウントが属する認証データベースの名前。 アカウントがrootの場合は、adminと入力します。 認証データベース以外のデータベースを指定する場合は、db.createUser() コマンドを実行してアカウントを作成し、そのアカウントを使用してデータベースに接続します。

          重要

          認証を成功させるには、指定されたデータベースアカウントが指定された認証データベースに属している必要があります。

        例:

        データベースアカウントはtestで、データベースはadminです。

        mongo -- ホストdds-bp19f409d7512 **** .mongodb.rds.aliyuncs.com -- port 3717 -u test -p -- authenticationDatabase admin
      2. データベースへのログインに使用するパスワードを入力します。

        Enter password: が表示されたら、データベースアカウントのパスワードを入力してenterキーを押します。

一般的な接続シナリオ

よくある質問