Mongo Shell是MongoDB自帶的數據庫管理工具,您可以下載Mongo Shell工具并安裝至客戶端(本地服務器或ECS服務器),用于連接云數據庫MongoDB副本集實例。
前提條件
已創建云數據庫MongoDB副本集實例,創建方法請參見創建副本集實例。背景信息
云數據庫MongoDB副本集實例提供的默認數據庫admin,存儲了實例的所有數據庫賬號和角色信息,建議使用admin之外的數據庫實現業務需求(即不對admin庫進行任何操作)。準備工作
- 下載并安裝與云數據庫MongoDB實例數據庫版本相同的Mongo Shell工具至客戶端(本地服務器或云服務器ECS實例),下載鏈接和安裝方法,請參見MongoDB Shell Download和The mongo Shell。如果應用部署在ECS實例,您需要確保云數據庫MongoDB實例和ECS實例滿足以下條件,以保證網絡的連通性。ECS實例信息的查看方法請參見查看實例信息。
- 所在地域相同。
- 網絡類型相同。說明
- 同一可用區會減少網絡延時,建議所在可用區相同。
- 專有網絡具有更高的安全性,建議使用專有網絡。
- 如果網絡類型為專有網絡,需確保使用相同的專有網絡ID。
- 如果您需要使用專有網絡,但ECS實例的網絡類型為經典網絡,您可以將ECS實例網絡類型轉換為專有網絡,具體請參見ECS實例從經典網絡遷移到專有網絡。
- 將客戶端IP地址添加至云數據庫MongoDB實例的白名單中,添加方法請參見設置白名單。
- 如果您需要使用公網地址連接云數據庫MongoDB實例,可以手動申請公網地址,申請方法請參見(可選)申請公網連接地址。
- 如果需要連接只讀節點,請確保云數據庫MongoDB實例中已存在只讀節點,如果沒有,您可以添加只讀節點,添加方法請參見變更副本集實例配置。
操作步驟
- 登錄MongoDB管理控制臺。
- 在左側導航欄,單擊副本集實例列表。
- 在頁面左上角,選擇實例所在的資源組和地域。
- 單擊目標實例ID或目標實例所在行操作列的管理。
- 在目標實例頁面的左側導航欄,單擊數據庫連接。
- 查看并獲取云數據庫MongoDB副本集實例的連接地址。
項目 說明 地址類型 - 私網連接:
- 專有網絡:專有網絡是一種隔離的網絡環境,安全性和性能均高于傳統的經典網絡。 云數據庫MongoDB實例默認提供專有網絡連接地址,通過專有網絡連接云數據庫MongoDB實例可以獲取更高的安全性和性能。
- 經典網絡:云服務在網絡上不進行隔離,僅依靠云服務自身的安全組或白名單策略阻擋非法訪問。
- 公網連接:由于通過公網連接實例存在一定的安全風險,云數據庫MongoDB實例默認未提供公網連接地址。如果您需要通過公網連接云數據庫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()。
- Mongo Shell不支持
readPreferenceTags=<readonly_Tags>
(可選):將讀請求優先發送到標簽對應的只讀節點。重要- Mongo Shell不支持
readPreferenceTags=<readonly_Tags>
參數,讀請求會發送到主節點。 - 通過Mongo Shell連接實例時,您可以使用
cursor.readPref()
或Mongo.setReadPref()
將讀請求發送到標簽對應的只讀節點,更多信息,請參見cursor.readPref()或Mongo.setReadPref()。
- Mongo Shell不支持
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****
- 私網連接:
- 根據業務需要,在安裝有Mongo Shell工具的客戶端(本地服務器或ECS服務器)上連接云數據庫MongoDB副本集實例。
- 通過高可用地址連接實例
通過高可用地址連接實例,可以連接實例的所有節點。在單個節點發生故障時,仍然能正常連接實例。
語法:mongo "<連接地址>"
參數說明:<連接地址>
為實例的ReadOnly ConnectionStringURI地址或ConnectionStringURI地址。重要- 您需要替換ReadOnly ConnectionStringURI地址或ConnectionStringURI地址中的
****
為數據庫賬號的密碼。 - Mongo Shell不支持ReadOnly ConnectionStringURI連接地址中的
readPreference
和readPreferenceTags
參數,故使用該地址連接實例時,會將讀請求發送到主節點。
示例:
連接地址為實例的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****"
- 您需要替換ReadOnly ConnectionStringURI地址或ConnectionStringURI地址中的
- 通過單節點地址連接實例
通過單節點地址連接實例,只能連接實例的單個節點。在單個節點發生故障時,將無法連接實例。
- 執行連接命令。語法:
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
- 輸入數據庫賬號的密碼。
在命令行提示
Enter password:
時,輸入數據庫賬號的密碼并按回車鍵確認。
- 執行連接命令。
- 通過高可用地址連接實例
常見的連接場景
- 如何通過公網連接MongoDB實例說明 通過公網地址連接實例時,建議使用SSL加密連接,詳情請參見使用Mongo Shell通過SSL加密連接數據庫。
- 不同網絡類型的ECS實例與MongoDB實例如何連接
- ECS實例與MongoDB實例地域不同時如何連接
- ECS實例與MongoDB實例不在同一阿里云賬號時如何連接