全部產品
Search
文件中心

:通過Mongo Shell串連MongoDB複本集執行個體

更新時間:Jun 19, 2024

Mongo Shell是MongoDB內建的資料庫管理工具,您可以下載Mongo Shell工具並安裝至用戶端(本機伺服器或ECS伺服器),用於串連ApsaraDB for MongoDB複本集執行個體。

前提條件

已建立ApsaraDB for MongoDB複本集執行個體,建立方法請參見棄置站台集執行個體

背景資訊

ApsaraDB for MongoDB複本集執行個體提供的預設資料庫admin,儲存了執行個體的所有資料庫帳號和角色資訊,建議使用admin之外的資料庫實現業務需求(即不對admin庫進行任何操作)。

準備工作

  • 下載並安裝與ApsaraDB for MongoDB執行個體資料庫版本相同的Mongo Shell工具至用戶端(本機伺服器或Elastic Compute Service執行個體),下載連結和安裝方法,請參見MongoDB Shell DownloadThe mongo Shell
    如果應用部署在ECS執行個體,您需要確保ApsaraDB for MongoDB執行個體和ECS執行個體滿足以下條件,以保證網路的連通性。ECS執行個體資訊的查看方法請參見查看執行個體資訊
    • 所在地區相同。
    • 網路類型相同。
      說明
      • 同一可用性區域會減少網路延時,建議所在可用性區域相同。
      • 專用網路具有更高的安全性,建議使用專用網路。
      • 如果網路類型為專用網路,需確保使用相同的專用網路ID。
      • 如果您需要使用專用網路,但ECS執行個體的網路類型為傳統網路,您可以將ECS執行個體網路類型轉換為專用網路,具體請參見ECS執行個體從傳統網路遷移到專用網路
  • 將用戶端IP地址添加至ApsaraDB for MongoDB執行個體的白名單中,添加方法請參見設定白名單
  • 如果您需要使用公網地址串連ApsaraDB for MongoDB執行個體,可以手動申請公網地址,申請方法請參見(可選)申請公網串連地址
  • 如果需要串連唯讀節點,請確保ApsaraDB for MongoDB執行個體中已存在唯讀節點,如果沒有,您可以添加唯讀節點,添加方法請參見變更複本集執行個體配置

操作步驟

  1. 登入MongoDB管理主控台
  2. 在左側導覽列,單擊複本集執行個體列表
  3. 在頁面左上方,選擇執行個體所在的資源群組和地區。
  4. 單擊目標執行個體ID或目標執行個體所在行操作列的管理
  5. 在目標執行個體頁面的左側導覽列,單擊資料庫連接
  6. 查看並擷取ApsaraDB for MongoDB複本集執行個體的串連地址。
    專案說明
    地址類型
    • 私網串連
      • 專用網路:專用網路是一種隔離的網路環境,安全性和效能均高於傳統的傳統網路。 ApsaraDB for MongoDB執行個體預設提供專用網路串連地址,通過專用網路串連ApsaraDB for MongoDB執行個體可以擷取更高的安全性和效能。
      • 傳統網路:雲端服務在網路上不進行隔離,僅依靠雲端服務自身的安全性群組或白名單策略阻擋非法訪問。
    • 公網串連:由於通過公網串連執行個體存在一定的安全風險,ApsaraDB for MongoDB執行個體預設未提供公網串連地址。如果您需要通過公網串連ApsaraDB for MongoDB執行個體,可以手動申請公網串連地址,申請方法請參見(可選)申請公網串連地址
    角色
    • Primary:主節點,串連主節點地址可以執行資料庫的讀寫操作。
      重要 不建議在生產環境的應用程式通過該地址串連執行個體,當主節點出現故障時,會發生主備切換,主節點地址會發生變化,您需要串連新的主節點確保讀寫操作不受影響。
    • Secondary:從節點,串連從節點地址僅能執行資料庫的讀操作。
    • Readonly:唯讀節點,串連唯讀節點地址僅能執行資料庫的讀操作。
      說明 只有執行個體中已存在唯讀節點時,您才可以看到唯讀節點的地址。
    • ReadOnly ConnectionStringURI:執行個體的高可用地址,實現負載平衡及高可用,串連高可用地址可以執行資料庫的讀寫操作。該地址只包含執行個體所有隻讀節點的地址,在具有多個唯讀節點的情況下,建議讀操作多的應用程式通過該地址串連執行個體。
      說明
      • 只有執行個體中已存在唯讀節點時,您才可以看到ReadOnly ConnectionStringURI地址。
      • 通過ReadOnly ConnectionStringURI地址串連執行個體,會優先將讀請求發送到唯讀節點。
      • 當執行個體中的某個唯讀節點出現故障時,讀請求會自動切換到下一個唯讀節點,不會影響應用的讀操作。如果所有的唯讀節點都出現了故障,讀請求會切換到從節點。
    • ConnectionStringURI:執行個體的高可用地址,實現負載平衡及高可用,串連高可用地址可以執行資料庫的讀寫操作。該地址包含執行個體所有節點的地址,建議生產環境的應用程式通過該地址串連執行個體。
      重要 生產環境的應用程式建議通過ConnectionStringURI地址串連執行個體,可以確保串連的節點始終為主節點,不會因為主備切換而影響應用的讀寫操作。
    Primary、Secondary和Readonly節點地址格式:
    <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伺服器)上串連ApsaraDB for 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:時,輸入資料庫帳號的密碼並按斷行符號鍵確認。

常見的串連情境

相關問題