場景描述
數據庫通過公網或內網連接,連接失敗。
原因分析
主要從以下幾個方面考慮:
排除數據庫實例異常
例如:關系數據庫MySQL版系統故障,實例狀態異常,或已退訂。
(常見)使用正確的客戶端連接方式
內網連接需要實例與ECS云主機必須在同一區域、VPC內。
公網連接需要購買或使用已有彈性IP,并對RDS實例綁定該彈性IP 。
使用正確的SSL方式安全連接
界面SSL開關開啟和關閉,分別對應不用的連接命令。例如:
開關開啟:mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem
開關關閉:mysql -h 172.16.0.31 -P 3306 -u root -p
排除連接命令錯誤
例如:連接地址錯誤、端口參數配置錯誤、用戶名和密碼錯誤、SSL方式下命令錯誤。
(常見)排除網絡不通
內網訪問
確認ECS云主機與關系數據庫MySQL版實例是否在同一個區域,同一VPC內。
檢查安全組規則。
安全組外訪問安全組內的關系數據庫MySQL版實例時,需要為安全組添加相應的入方向規則。
在ECS上測試是否可以正常連接到RDS實例地址的端口。
公網訪問
檢查安全組規則。
安全組外訪問安全組內的RDS實例時,需要為安全組添加相應的入方向規則。
檢查網絡ACL規則。
相同區域主機進行ping測試。
白名單添加
未將客戶端IP加入到白名單,導致無法連接數據庫。
注意
需注意:該原因為常見的數據庫連接失敗原因,請優先排查。
(常見)排除實例的連接數滿的情況
實例連接數過多,可能會導致業務側無法正常連接。
(常見)排除實例的磁盤滿的情況
當實例處于“磁盤空間滿”狀態時,影響數據的正常讀寫操作。
連接失敗的常見報錯
包含連接失敗的常見報錯,以及相應的解決方法。
解決方案
內網無法連接數據庫
檢查ECS云主機和MySQL實例是否在同一區域和VPC內。
對等連接和虛擬專用網絡VPN:不同區域的VPC可以互連,跨區域連接實現全球云上網絡。具體操作,可參見VPC連接。
檢查安全組規則,ECS與MySQL實例在不同安全組時,需要為MySQL和ECS分別設置安全組規則。可參見設置安全組規則。
檢查IP白名單,無論內外網訪問,都需要加白名單才可訪問,可參見設置IP白名單。
連接時所使用的數據庫密碼是否正確,可通過數據庫管理控制臺界面進行重置密碼。
外網無法連接數據庫
MySQL實例綁定公網IP后無法ping通
檢查安全組規則。在 頁面中,找到屬于目標數據庫實例的安全組,檢查入方向規則。
檢查“ 網絡ACL”規則。
相同區域主機進行ping測試。在相同區域的彈性云主機去嘗試ping,如果可以正常ping通彈性公網IP說明虛擬網絡正常,如果仍然沒有ping通請聯系技術支持。
MySQL實例連接數滿
請及時排查業務側連接是否有效,優化實例連接,釋放不必要的連接。
規格偏小,請對數據庫進行規格擴容。
修改最大連接數。
數據庫實例默認最大數據連接數為3000,您可以通過下述命令查看當前實例設置的最大連接數:
show global variables like 'max_connections';如果您需要對最大數據連接數進行調整,您可以通過調整數據庫實例參數max_connections進行調整,修改方式參見修改參數組。
如果ECS和數據庫部署在了不同的VPC,無法連接怎么辦
您可以采用如下任一方式處理該問題:
可以將ECS的虛擬私有云切換為與數據庫相同的虛擬私有云。具體操作,請參考虛擬私有云-虛擬私有云VPC管理-修改虛擬私有云。
為兩個不同的虛擬私有云建立對等連接,實現內網互通。具體操作,請參考創建對等連接-申請對等連接(同賬號)。
MySQL實例狀態是否異常
排查數據庫實例是否異常,可以在管理控制臺上查看實例的狀態。如果實例因欠費或者到期而處于不可用的狀態,或者因實例本身因某些原因導致異常,也會導致客戶端無法連接到實例。