Mongo Shell是MongoDB資料庫內建的資料庫管理工具,您可以在本地或ECS上安裝Mongo Shell工具,然後通過Mongo Shell串連MongoDB分區叢集執行個體。
前提條件
為保障鑒權成功,請安裝與MongoDB執行個體版本相對應的Mongo Shell版本,下載連結和安裝方法,請參見MongoDB Shell Download和The mongo Shell。
已將用戶端的IP地址加入到MongoDB執行個體的白名單。
說明如需通過公網串連MongoDB執行個體,需要申請公網串連地址。
操作步驟
訪問MongoDB分區叢集執行個體列表,在上方選擇資源群組和地區,然後單擊目標執行個體ID。
在目標執行個體頁面的左側導覽列,單擊資料庫連接。
查看並擷取串連地址。
確定地址類型。
私網串連
專用網路是一種隔離的網路環境,安全性和效能均高於傳統的傳統網路。 ApsaraDB for MongoDB執行個體預設提供專用網路串連地址,通過專用網路串連ApsaraDB for MongoDB執行個體可以擷取更高的安全性和效能。
公網串連
由於通過公網串連執行個體存在一定的安全風險,ApsaraDB for MongoDB執行個體預設未提供公網串連地址。如果您需要通過公網串連ApsaraDB for MongoDB執行個體,可以申請公網串連地址。
擷取串連地址。
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執行個體可以靈活使用
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://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
根據業務需要,在安裝有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****"
通過單節點地址串連
執行串連命令。
文法:
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
在命令列提示
Enter password:
時,輸入資料庫帳號對應的密碼並按斷行符號鍵確認。說明輸入密碼時,密碼字元是不可見的。