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 Download和The mongo Shell。如果應用部署在ECS執行個體,您需要確保ApsaraDB for MongoDB執行個體和ECS執行個體滿足以下條件,以保證網路的連通性。ECS執行個體資訊的查看方法請參見查看執行個體資訊。
- 所在地區相同。
- 網路類型相同。說明
- 同一可用性區域會減少網路延時,建議所在可用性區域相同。
- 專用網路具有更高的安全性,建議使用專用網路。
- 如果網路類型為專用網路,需確保使用相同的專用網路ID。
- 如果您需要使用專用網路,但ECS執行個體的網路類型為傳統網路,您可以將ECS執行個體網路類型轉換為專用網路,具體請參見ECS執行個體從傳統網路遷移到專用網路。
- 將用戶端IP地址添加至ApsaraDB for MongoDB執行個體的白名單中,添加方法請參見設定白名單。
- 如果您需要使用公網地址串連ApsaraDB for MongoDB執行個體,可以手動申請公網地址,申請方法請參見(可選)申請公網串連地址。
- 如果需要串連唯讀節點,請確保ApsaraDB for MongoDB執行個體中已存在唯讀節點,如果沒有,您可以添加唯讀節點,添加方法請參見變更複本集執行個體配置。
操作步驟
- 登入MongoDB管理主控台。
- 在左側導覽列,單擊複本集執行個體列表。
- 在頁面左上方,選擇執行個體所在的資源群組和地區。
- 單擊目標執行個體ID或目標執行個體所在行操作列的管理。
- 在目標執行個體頁面的左側導覽列,單擊資料庫連接。
- 查看並擷取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()。
- 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伺服器)上串連ApsaraDB for 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執行個體不在同一阿里雲帳號時如何串連