全部產品
Search
文件中心

ApsaraDB for MongoDB:通過Mongo Shell串連MongoDB分區叢集執行個體

更新時間:May 07, 2025

Mongo Shell是MongoDB資料庫內建的資料庫管理工具,您可以在本地或ECS上安裝Mongo Shell工具,然後通過Mongo Shell串連MongoDB分區叢集執行個體。

前提條件

操作步驟

  1. 訪問MongoDB分區叢集執行個體列表,在上方選擇資源群組和地區,然後單擊目標執行個體ID。

  2. 在目標執行個體頁面的左側導覽列,單擊資料庫連接

  3. 查看並擷取串連地址。

    1. 確定地址類型。

      • 私網串連

        專用網路是一種隔離的網路環境,安全性和效能均高於傳統的傳統網路。 ApsaraDB for MongoDB執行個體預設提供專用網路串連地址,通過專用網路串連ApsaraDB for MongoDB執行個體可以擷取更高的安全性和效能。

      • 公網串連

        由於通過公網串連執行個體存在一定的安全風險,ApsaraDB for MongoDB執行個體預設未提供公網串連地址。如果您需要通過公網串連ApsaraDB for MongoDB執行個體,可以申請公網串連地址

    2. 擷取串連地址。

      ConnectionStringURI SRV

      ConnectionStringURI SRV:執行個體的高可用地址,可以執行資料庫的讀寫操作。建議生產環境的應用程式通過該地址串連執行個體,當分區叢集執行個體增刪mongos節點時,使用SRV地址可以無感與執行個體互動,簡化了應用程式的設計和維護。

      重要
      • 預設情況下控制台不顯示SRV地址,如需使用請單擊資料庫連接頁面的申請私網SRV地址申請公網SRV地址

      • 申請公網SRV地址前,您需要先開通Mongos節點的公網地址。通過公網SRV地址串連MongoDB執行個體後,用戶端會自動將請求發送到已開通公網地址的Mongos節點上。

      • SRV地址僅支援雲端硬碟版執行個體。

      • 專用網路的私網SRV地址最多關聯20個Mongos節點,因專用網路內DNS解析協議的限制,在超出20個Mongos節點的情況下,超出的節點將不能分擔請求負載。公網SRV地址不受此限制。

      • 推薦生產環境的應用程式通過ConnectionStringURI SRV地址串連資料庫,用戶端自動將請求發送到執行個體的多個節點上,實現負載平衡。當某個節點出現故障時,用戶端能自動進行故障切換,將請求發送到狀態正常的節點上。當增刪節點時,可以無感與叢集互動,簡化了應用程式的設計和維護。

      • 低版本Driver不支援SRV地址或不支援自動探索節點,例如:

        • pymongo低於3.9.0版本。

        • mongo-java-driver低於3.10.0版本。

        • mongodb-go-driver低於1.1.0版本。

        • mongodb node.js低於3.3.0版本。

        • mongo-cxx-driver低於3.8 版本。

      格式:

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

      參數說明:

      參數

      說明

      mongodb+srv://

      連接字串的首碼,表示使用DNS SRV記錄進行服務發現。

      <username>

      資料庫帳號的名稱,預設為root。

      <password>

      資料庫帳號的密碼。

      <srv-host>

      主機名稱。

      <database>

      要訪問的資料庫名稱,預設為admin。

      authSource=<authenticationDatabase>(可選)

      該參數用於指定資料庫帳號所屬的資料庫。<authenticationDatabase>為鑒權資料庫名稱。

      說明

      ApsaraDB for MongoDB的SRV串連串的TXT記錄指明了authSource=admin,會覆蓋<database>的鑒權屬性。因此,當您需要修改鑒權資料庫時,需要手動指明authSource=<authenticationDatabase>,而非修改<database>參數。更多介紹,請參見MongoDB官網文檔

      <other_options>

      其他選擇性參數。

      說明

      SVR串連的SSL選項預設值為true,如果您不需要使用SSL加密串連,需要在串連串上添加參數ssl=false。更多選擇性參數的介紹,請參見MongoDB官網文檔

      樣本:

      資料庫帳號為test,所屬資料庫為admin。

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

      ConnectionStringURI

      ConnectionStringURI:執行個體的高可用地址,可以執行資料庫的讀寫操作。低版本Driver不支援SRV地址或不支援自動探索節點時,可使用該地址串連資料庫。

      ApsaraDB for MongoDB提供了Mongos組件和Shard組件的ConnectionStringURI地址。用戶端自動將請求發送到對應組件的多個節點上,實現負載平衡。當組件內的某個節點出現故障時,用戶端能自動進行故障切換,將請求發送到狀態正常的節點上。

      說明
      • 預設情況下,控制台僅會展示Mongos的ConnectionStringURI地址,Shard的ConnectionStringURI地址需要申請對應節點的串連地址

      • 未設定readPreference和readPreferenceTags參數時,會將讀請求發送到主節點。

      • 當分區叢集執行個體增刪mongos節點後,需要修改該串連串,增刪對應的節點串連資訊。

      Mongos組件和Shard組件的ConnectionStringURI地址的說明分別如下:

      Mongos

      重要

      推薦生產環境的應用程式通過ConnectionStringURI串連資料庫,用戶端自動將請求發送到Mongos組件的多個節點上,實現負載平衡。Mongos組件的某個節點出現故障時,用戶端能自動進行故障切換,將請求發送到狀態正常的Mongos節點上。

      格式:

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

      參數

      說明

      <username>

      資料庫帳號的名稱,預設為root。

      <password>

      資料庫帳號的密碼。

      <host>

      Mongos組件中節點的網域名稱資訊

      <port>

      Mongos組件中節點的連接埠

      <database>

      要訪問的資料庫名稱,預設為admin。

      authSource=<authenticationDatabase>(可選)

      該參數用於指定資料庫帳號所屬的資料庫。<authenticationDatabase>為鑒權資料庫名稱。如果不配置該參數,<database>會作為鑒權資料庫。

      樣本:

      資料庫帳號為test,所屬資料庫為admin。

      mongodb://test:****@s-bp1c010266f6****.mongodb.rds.aliyuncs.com:3717,s-bp1773180e38****.mongodb.rds.aliyuncs.com:3717/admin

      Shard

      Shard組件的ConnectionStringURI地址為高可用地址,實現負載平衡及高可用,串連該地址可以執行資料庫的讀寫操作。該地址包含Shard組件中所有節點的地址,建議生產環境的應用程式通過該地址串連執行個體。

      重要

      生產環境的應用程式建議通過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>會作為鑒權資料庫。

      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執行個體可以靈活使用readPreferencereadPreferenceTags參數,通過不同標籤的組合,實現不同的情境需求:

      讀請求主節點響應策略

      讀請求發送的節點

      參數組合方案

      讀請求失敗情況下,讀請求發送到主節點

      優先讀主節點

      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://test:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****

      Mongos地址

      Mongos組件的串連地址,包括主節點(Primary)的串連地址。

      說明

      日常測試時,僅需串連Mongos組件的任意節點。

      格式:

      <host>:<port>

      參數說明:

      參數

      說明

      <host>

      Mongos組件中節點的網域名稱資訊

      <port>

      Mongos組件中節點的連接埠

      樣本:

      s-bp1c010266f6****.mongodb.rds.aliyuncs.com:3717

      Shard地址

      Shard組件的串連地址,包括主節點(Primary)、從節點(Secondary)和唯讀節點(ReadOnly)的串連地址。

      說明
      • 預設情況下,控制台僅會展示Mongos的串連地址,Shard和ConfigServer的串連地址需要申請對應節點串連地址

      • 只有Shard組件中存在唯讀節點時,您才能看到Shard組件的唯讀節點串連地址。

      格式:

      <host>:<port>

      參數說明:

      參數

      說明

      <host>

      Shard組件中節點的網域名稱資訊

      <port>

      Shard組件中節點的連接埠

      樣本:

      s-bp1c010266f6****.mongodb.rds.aliyuncs.com:3717

      ConfigServer地址

      ConfigServer組件的串連地址,包括主節點(Primary)和從節點(Secondary)的串連地址。

      說明
      • 預設情況下,控制台僅會展示Mongos的串連地址,Shard和ConfigServer的串連地址需要申請對應節點串連地址

      • 僅本地碟版分區叢集執行個體支援申請ConfigServer的串連地址。

      ConfigServer地址

      格式:

      <host>:<port>

      參數說明:

      參數

      說明

      <host>

      ConfigServer組件中節點的網域名稱資訊

      <port>

      ConfigServer組件中節點的連接埠

      樣本:

      s-bp1c010266f6****.mongodb.rds.aliyuncs.com:3717
  4. 根據業務需要,在安裝有Mongo Shell工具的用戶端(本機伺服器或ECS伺服器)上串連ApsaraDB for MongoDB分區叢集執行個體。

    通過高可用地址串連

    文法:

    mongo "<串連地址>"    

    參數說明:<串連地址>為執行個體的ConnectionStringURI SRV或ConnectionStringURI高可用地址。您需要替換高可用地址中的****為資料庫帳號的密碼。

    樣本:

    串連地址為執行個體的ConnectionStringURI地址,資料庫帳號為test,所屬資料庫為admin。

    mongo "mongodb://test:****@s-bp1d7b6277cd****.mongodb.rds.aliyuncs.com:3717,s-bp129f75f1d6****.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帳號串連資料庫。您可以建立資料庫帳號並分配許可權

      • <authenticationDatabase>:鑒權資料庫名稱,用於指定資料庫帳號所屬的資料庫。當資料庫帳號為root時,對應的資料庫為admin。如果您希望指定其他資料庫,請先在該資料庫中使用db.createUser()命令建立帳號,然後再使用該帳號進行串連。

        重要

        資料庫帳號必須在所屬的資料庫下進行鑒權,才能鑒權成功。

      樣本:

      資料庫帳號為test,所屬資料庫為admin。

      mongo --host s-bp1ea17b41abecf43****.mongodb.rds.aliyuncs.com --port 3717 -u test -p --authenticationDatabase admin
    2. 在命令列提示Enter password:時,輸入資料庫帳號對應的密碼並按斷行符號鍵確認。

      說明

      輸入密碼時,密碼字元是不可見的。

常見的串連情境

相關問題