Mongo ShellMongoDB自帶的數據庫管理工具,您可以下載Mongo Shell工具并安裝至客戶端(本地服務器或ECS服務器),用于連接云數據庫MongoDB副本集實例。

前提條件

已創建云數據庫MongoDB副本集實例,創建方法請參見創建副本集實例。

背景信息

云數據庫MongoDB副本集實例提供的默認數據庫admin,存儲了實例的所有數據庫賬號和角色信息,建議使用admin之外的數據庫實現業務需求(即不對admin庫進行任何操作)。

準備工作

  • 下載并安裝與云數據庫MongoDB實例數據庫版本相同的Mongo Shell工具至客戶端(本地服務器或云服務器ECS實例),下載鏈接和安裝方法,請參見MongoDB Shell DownloadThe mongo Shell。
    如果應用部署在ECS實例,您需要確保云數據庫MongoDB實例和ECS實例滿足以下條件,以保證網絡的連通性。ECS實例信息的查看方法請參見查看實例信息。
    • 所在地域相同。
    • 網絡類型相同。
      說明
      • 同一可用區會減少網絡延時,建議所在可用區相同。
      • 專有網絡具有更高的安全性,建議使用專有網絡。
      • 如果網絡類型為專有網絡,需確保使用相同的專有網絡ID。
      • 如果您需要使用專有網絡,但ECS實例的網絡類型為經典網絡,您可以將ECS實例網絡類型轉換為專有網絡,具體請參見ECS實例從經典網絡遷移到專有網絡。
  • 將客戶端IP地址添加至云數據庫MongoDB實例的白名單中,添加方法請參見設置白名單
  • 如果您需要使用公網地址連接云數據庫MongoDB實例,可以手動申請公網地址,申請方法請參見(可選)申請公網連接地址
  • 如果需要連接只讀節點,請確保云數據庫MongoDB實例中已存在只讀節點,如果沒有,您可以添加只讀節點,添加方法請參見變更副本集實例配置

操作步驟

  1. 登錄MongoDB管理控制臺
  2. 在左側導航欄,單擊副本集實例列表。
  3. 在頁面左上角,選擇實例所在的資源組和地域。
  4. 單擊目標實例ID或目標實例所在行操作列的管理。
  5. 在目標實例頁面的左側導航欄,單擊數據庫連接
  6. 查看并獲取云數據庫MongoDB副本集實例的連接地址。
    項目說明
    地址類型
    • 私網連接
      • 專有網絡:專有網絡是一種隔離的網絡環境,安全性和性能均高于傳統的經典網絡。 云數據庫MongoDB實例默認提供專有網絡連接地址,通過專有網絡連接云數據庫MongoDB實例可以獲取更高的安全性和性能。
      • 經典網絡:云服務在網絡上不進行隔離,僅依靠云服務自身的安全組或白名單策略阻擋非法訪問。
    • 公網連接:由于通過公網連接實例存在一定的安全風險,云數據庫MongoDB實例默認未提供公網連接地址。如果您需要通過公網連接云數據庫MongoDB實例,可以手動申請公網連接地址,申請方法請參見(可選)申請公網連接地址
    角色
    • Primary:主節點,連接主節點地址可以執行數據庫的讀寫操作。
      重要 不建議在生產環境的應用程序通過該地址連接實例,當主節點出現故障時,會發生主備切換,主節點地址會發生變化,您需要連接新的主節點確保讀寫操作不受影響。
    • Secondary:從節點,連接從節點地址僅能執行數據庫的讀操作。
    • Readonly:只讀節點,連接只讀節點地址僅能執行數據庫的讀操作。
      說明 只有實例中已存在只讀節點時,您才可以看到只讀節點的地址。
    • ReadOnly ConnectionStringURI:實例的高可用地址,實現負載均衡及高可用,連接高可用地址可以執行數據庫的讀寫操作。該地址只包含實例所有只讀節點的地址,在具有多個只讀節點的情況下,建議讀操作多的應用程序通過該地址連接實例。
      說明
      • 只有實例中已存在只讀節點時,您才可以看到ReadOnly ConnectionStringURI地址。
      • 通過ReadOnly ConnectionStringURI地址連接實例,會優先將讀請求發送到只讀節點。
      • 當實例中的某個只讀節點出現故障時,讀請求會自動切換到下一個只讀節點,不會影響應用的讀操作。如果所有的只讀節點都出現了故障,讀請求會切換到從節點。
    • ConnectionStringURI:實例的高可用地址,實現負載均衡及高可用,連接高可用地址可以執行數據庫的讀寫操作。該地址包含實例所有節點的地址,建議生產環境的應用程序通過該地址連接實例。
      重要 生產環境的應用程序建議通過ConnectionStringURI地址連接實例,可以確保連接的節點始終為主節點,不會因為主備切換而影響應用的讀寫操作。
    Primary、SecondaryReadonly節點地址格式:
    <host>:<port>
    參數說明:
    • <host>:主節點、從節點或只讀節點的域名信息
    • <port>:主節點、從節點或只讀節點的端口。
    示例:
    dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717
    ReadOnly ConnectionstringURI地址格式:
    mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?readPreference=[secondary | secondaryPreferred][&readPreferenceTags=<readonly_Tags>]&replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>]
    參數說明:
    • <username>:數據庫賬號的名稱,默認為root。
    • <password>:數據庫賬號的密碼。
    • <host>:只讀節點的域名信息。
    • <port>:只讀節點的端口。
    • <database>:要訪問的數據庫名稱,默認為admin。
    • readPreference=[secondary | secondaryPreferred]:實現讀寫分離。
      重要
      • Mongo Shell不支持readPreference=[secondary | secondaryPreferred]參數,讀請求會發送到主節點。
      • 通過Mongo Shell連接實例時,您可以使用cursor.readPref()Mongo.setReadPref()實現讀寫分離,更多信息,請參見cursor.readPref()Mongo.setReadPref()。
    • readPreferenceTags=<readonly_Tags>(可選):將讀請求優先發送到標簽對應的只讀節點。
      重要
      • Mongo Shell不支持readPreferenceTags=<readonly_Tags>參數,讀請求會發送到主節點。
      • 通過Mongo Shell連接實例時,您可以使用cursor.readPref()Mongo.setReadPref()將讀請求發送到標簽對應的只讀節點,更多信息,請參見cursor.readPref()Mongo.setReadPref()。
    • replicaSet=<replicaSet_value>:將讀請求發送到副本集實例的所有節點。<replicaSet_value>為實例高可用連接地址的唯一標識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****
    ConnectionstringURI地址格式:
    mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>]
    參數說明:
    • <username>:數據庫賬號的名稱,默認為root。
    • <password>:數據庫賬號的密碼。
    • <host>:主節點、從節點和只讀節點的域名信息
    • <port>:主節點、從節點和只讀節點的端口
    • <database>:要訪問的數據庫名稱,默認為admin。
    • replicaSet=<replicaSet_value>:將讀請求發送到副本集實例的所有節點。<replicaSet_value>為實例高可用連接地址的唯一標識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. 根據業務需要,在安裝有Mongo Shell工具的客戶端(本地服務器或ECS服務器)上連接云數據庫MongoDB副本集實例。
    • 通過高可用地址連接實例

      通過高可用地址連接實例,可以連接實例的所有節點。在單個節點發生故障時,仍然能正常連接實例。

      語法:
      mongo "<連接地址>"    
      參數說明:<連接地址>為實例的ReadOnly ConnectionStringURI地址或ConnectionStringURI地址。
      重要
      • 您需要替換ReadOnly ConnectionStringURI地址或ConnectionStringURI地址中的****為數據庫賬號的密碼。
      • Mongo Shell不支持ReadOnly ConnectionStringURI連接地址中的readPreferencereadPreferenceTags參數,故使用該地址連接實例時,會將讀請求發送到主節點。

      示例:

      連接地址為實例的ConnectionStringURI地址,數據庫賬號為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. 執行連接命令。
        語法:
        mongo --host <host> --port <port> -u <username> -p --authenticationDatabase <authenticationDatabase>
        參數說明:
        • <host>:主節點、從節點或只讀節點的域名信息。
        • <port>:主節點、從節點或只讀節點的端口。
        • <username>:數據庫賬號的名稱,默認為root。
          說明 不建議直接使用root賬號連接數據庫。您可以創建數據庫賬號并分配權限,詳情請參見MongoDB數據庫賬號權限管理
        • <authenticationDatabase>:鑒權數據庫名稱,用于指定數據庫賬號所屬的數據庫。當數據庫賬號為root時,對應的數據庫為admin。如果您希望指定其他數據庫,請先在該數據庫中使用db.createUser()命令創建賬號,然后再使用該賬號進行連接。
          重要 數據庫賬號必須在所屬的數據庫下進行鑒權,才能鑒權成功。

        示例:

        數據庫賬號為test,所屬數據庫為admin。
        mongo --host dds-bp19f409d7512****.mongodb.rds.aliyuncs.com --port 3717 -u test -p --authenticationDatabase admin
      2. 輸入數據庫賬號的密碼。

        在命令行提示Enter password:時,輸入數據庫賬號的密碼并按回車鍵確認。

常見的連接場景

相關問題