本文介紹如何排查無法串連ApsaraDB for MongoDB執行個體的問題。
若您已收到用戶端返回的錯誤資訊,請查閱串連失敗常見報錯匹配解決方案。
概覽
檢查白名單設定
您需要將正確的用戶端IP地址添加到ApsaraDB for MongoDB執行個體的白名單中,才能串連ApsaraDB for MongoDB執行個體。
排查方法:請在資料庫的白名單中臨時添加0.0.0.0/0
,如果設定後可以正常訪問,說明是白名單設定存在問題。
解決方案:刪除0.0.0.0/0
白名單,將正確的IP地址添加到ApsaraDB for MongoDB執行個體的白名單中。如何設定白名單,請參見修改白名單。
檢查網路環境
- 私網:確保執行個體處於同一個地區、執行個體的網路類型相同且私網串連地址正確。
若執行個體的網路類型都是Virtual Private Cloud,您還需要確保執行個體在同一個專用網路中。
- 公網:確保公網串連地址正確。
如何解決由網路環境導致的執行個體串連失敗問題,請參見如何解決由網路環境導致的執行個體串連失敗問題?。
檢查執行個體串連地址
您需要使用正確的執行個體串連地址,才能串連ApsaraDB for MongoDB執行個體。
- 常見原因一:使用了錯誤的網路環境的串連地址。
例如計劃通過公網串連ApsaraDB for MongoDB執行個體卻使用了執行個體的專用網路串連地址,導致串連失敗。
解決方案:請根據網路環境,使用正確的串連地址。
- 常見原因二:串連地址中的鑒權資料庫有誤。
解決方案:請在串連串中填寫正確的鑒權資料庫。
如果您使用高可用地址串連ApsaraDB for MongoDB執行個體,串連串中包含資料庫和鑒權資料庫,這兩個資料庫可以相同也可以不同。本文以複本集執行個體的ConnectionstringURI地址為例進行介紹,串連串格式如下:mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>]
資料庫和鑒權資料庫的參數說明如下:<database>
:資料庫,執行個體串連成功後預設要訪問的資料庫,相當於自動執行命令use <database>
。authSource=<authenticationDatabase>
(可選):<authenticationDatabase>
為鑒權資料庫名稱。如果不配置該參數,<database>
會作為鑒權資料庫。鑒權資料庫用於儲存資料庫帳號和密碼。資料庫帳號必須在所屬的資料庫下進行鑒權,才能鑒權成功。
樣本:- root帳號儲存在admin資料庫中,在admin資料庫鑒權成功後,執行個體進入admin資料庫。
mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****
- test帳號儲存在newDB資料庫中,在newDB資料庫鑒權成功後,執行個體進入admin資料庫。
mongodb://test:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****&authSource=newDB
- test帳號儲存在newDB資料庫中,在newDB資料庫鑒權成功後,執行個體進入newDB資料庫。
mongodb://test:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/newDB?replicaSet=mgset-6108****&authSource=newDB
- 常見原因三:實際串連的節點不是主節點(Primary節點)。此原因僅適用於複本集執行個體。如果您的業務通過主節點的地址串連複本集執行個體,主備切換後實際串連的節點角色變成了從節點(Secondary節點),所以寫入失敗。說明 導致執行個體發生主備切換的原因有很多種,具體請參見為什麼執行個體會發生主備切換。解決方案:
- 手動切換執行個體的節點角色,將業務實際串連的單節點地址對應節點切換為主節點。如何切換節點角色,請參見切換節點角色。
- 推薦生產環境的應用程式通過ConnectionStringURI地址串連資料庫。當某個節點出現故障時,不會因為主備切換而影響應用的讀寫操作,更多資訊,請參見複本集執行個體串連說明。
- 請為業務設計重連機制和異常處理能力,串連閃斷後可自動重連,保障業務穩定運行。
- 常見原因四:串連地址中的帳號密碼包含特殊字元
!@#$%^&*()_+=
。通過Mongo Shell或程式碼串連ApsaraDB for MongoDB執行個體時,如果串連串中的帳號密碼包含特殊字元
!@#$%^&*()_+=
,這些特殊字元在串連時無法被識別,會導致執行個體串連失敗。解決方案:您需要對帳號密碼中的特殊字元進行轉義處理,詳情請參見如何解決串連串中帳號密碼包含特殊字元導致串連失敗的問題。
檢查網域名稱解析情況
網域名稱解析正確,才能串連ApsaraDB for MongoDB執行個體。
排查方案:通過ping <網域名稱>
或telnet <網域名稱> <連接埠號碼>
命令測試網路的連通性。
解決方案:請參見Linux系統的ECS執行個體內部無法正常解析網域名稱。
檢查執行個體狀態
執行個體的狀態為運行中,才能串連ApsaraDB for MongoDB執行個體。
- 常見原因:磁碟空間耗盡。
- 解決方案:請參見解決因磁碟空間耗盡導致的鎖定或無法寫入問題。
檢查第三方工具
當第三方工具(如Navicat、Compass等工具)無法串連ApsaraDB for MongoDB執行個體時,有可能是執行個體的設定或者第三方工具的設定不正確等原因造成的。您需要確保執行個體和第三方工具的設定都正確,才能通過第三方工具串連ApsaraDB for MongoDB執行個體。
- 串連成功:第三方工具的設定不正確。請根據您實際使用的工具,具體排查工具的各種設定。
- 串連失敗:執行個體的設定不正確。請參照本文排查白名單設定、網路環境、執行個體串連地址、網域名稱解析情況和執行個體狀態。