rds实例连接失败怎么办-九游平台
操作视频
问题分析
主要从八个方面考虑:
- 排除数据库实例异常
例如:关系型数据库系统故障,实例状态异常,实例或表被锁定。
- (常见)使用正确的客户端连接方式
- 内网连接需要rds与ecs实例必须在同一区域、vpc内。
- 公网连接需要购买或使用已有eip,并对rds实例绑定该eip 。
- 使用正确的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与rds是否在同一个区域,vpc。
- 检查安全组规则。
安全组外访问安全组内的rds实例时,需要为安全组。
- 在ecs上测试是否可以正常连接到rds实例地址的端口。
公网访问
- 检查安全组规则。
安全组外访问安全组内的rds实例时,需要为安全组。
- 检查网络acl规则。
- 相同区域主机进行ping测试。
- (常见)排除实例的连接数满的情况
实例连接数过多,可能会导致业务侧无法正常连接。
- (常见)排除实例的磁盘满的情况
当实例处于“磁盘空间满”状态时,影响数据的正常读写操作。
- 连接失败的常见报错
包含连接失败的常见报错,以及相应的解决方法。
排查思路
- 排除数据库实例异常
检查办法:请在控制台检查云实例状态是否为“正常”。
可能原因:关系型数据库系统故障,实例状态异常,实例或表被锁定等。
九游平台的解决方案:如果实例状态为“异常”,请尝试重启。
图2 检查实例状态
- 使用正确的客户端连接方式
表1 客户端连接方式 连接方式
使用场景
连接样例
内网方式
系统默认提供内网ip地址。
当应用部署在ecs上,且该ecs与rds实例处于同一区域,同一vpc时,建议单独使用内网ip连接ecs与rds实例。
以rds for mysql为例:
mysql -h <内网地址> -p 3306 -u root -p --ssl-ca=/tmp/ca.pem
公网方式
不能通过内网ip地址访问rds实例时,使用公网访问,建议单独绑定弹性公网ip连接ecs(或公网主机)与rds实例。
用户需要购买弹性公网ip,请参见。
以rds for mysql为例:
mysql -h <弹性公网ip> -p 3306 -u root -p --ssl-ca=/tmp/ca.pem
- 使用正确的ssl方式安全连接
- (推荐)ssl方式:实例连接管理页面的ssl开关开启,并且上传证书到ecs。
mysql -h 172.16.0.31 -p 3306 -u root -p --ssl-ca=/tmp/ca.pem
图3 ssl开关开启
- 普通方式:实例基本信息页面的ssl开关关闭。
mysql -h 172.16.0.31 -p 3306 -u root -p
- (推荐)ssl方式:实例连接管理页面的ssl开关开启,并且上传证书到ecs。
- 排除连接命令错误
请获取正确的连接地址、端口参数配置、用户名和密码、ssl方式下命令错误,并重试连接实例。
ssl内网连接rds for mysql示例:mysql -h 172.16.0.31 -p 3306 -u root -p --ssl-ca=/tmp/ca.pem
- 连接地址
目标实例的“连接管理”页面,“内网连接”页签的“内网地址”。
图4 内网地址
- 数据库端口
目标实例的“连接管理”页面,“内网连接”页签的“数据库端口”。
- 用户名和密码
root管理员账号及其对应的密码。
- 证书名称
ssl证书文件名,该文件需放在执行该命令的路径下。
ssl公网连接rds for mysql示例:mysql -h 公网地址 -p 3306 -u root -p --ssl-ca=/tmp/ca.pem
- 连接地址
目标实例的“连接管理”页面,“公网连接”页签的“弹性公网ip”。
图5 弹性公网ip
- 数据库端口
目标实例的“连接管理”页面,“公网连接”页签的“数据库端口”。
- 用户名和密码
root管理员账号及其对应的密码。
- 证书名称
ssl证书文件名,该文件需放在执行该命令的路径下。
- 连接地址
- 排除网络不通
内网访问
- 检查ecs与rds是否在同一个区域,vpc。
- 不同区域的云服务之间内网互不相通,无法访问实例。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。
- 如果不在同一vpc,可以修改ecs的vpc,请参见。
图6 查看ecs的vpc
图7 查看rds的vpc
- 检查安全组规则。
- 查看ecs的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将rds实例的内网ip地址和端口添加到出方向规则。
图8 ecs的安全组
- 查看rds的安全组的入方向规则,需要将ecs实例的ip地址和端口添加到。
- 查看ecs的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将rds实例的内网ip地址和端口添加到出方向规则。
- 在ecs上测试是否可以正常连接到rds实例地址的端口。
telnet <连接地址> <端口号>
- 可以通信,说明网络是正常的。
- 无法通信,请联系华为云客服协助解决。
公网访问
- 检查安全组规则。
- 查看ecs的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将rds实例的公网ip地址和端口添加到出方向规则。
图9 ecs的安全组
- 查看rds的安全组的入方向规则,需要将ecs实例的ip地址和端口添加到。
- 查看ecs的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将rds实例的公网ip地址和端口添加到出方向规则。
- 检查网络acl规则。
- 进入虚拟私有云列表。
- 检查eip绑定的网卡是否在网络acl关联的子网下。
- 查看网络acl当前是“开启”状态还是“关闭”状态。
若网络acl为“开启”状态,需要。
注意:网络acl的默认规则是丢弃所有出入方向的包,关闭“网络acl”后,其默认规则仍然生效。
- 相同区域主机进行ping测试。
如果在原ecs上没有ping通rds实例绑定的eip,请在相同区域的另一台ecs上去ping该eip,如果可以正常ping通,说明虚拟网络正常,请联系华为云客服协助解决。
- 检查ecs与rds是否在同一个区域,vpc。
- 排除实例的连接数满的情况
检查办法:
- 通过show variables like '%max%connections%';命令查看实例连接数,示例:
- max_connections:允许同时连接的客户端总数。如果设定值为default,表示该参数随内存规格变化,具体请参见rds数据库实例支持的最大数据连接数是多少。
- max_user_connections:特定rds for mysql账户允许的最大同时连接数。
- 查看是否已达上限,可查看目标实例的“数据库总连接数”和“当前活跃连接数”,判断是否需要释放连接。
可能原因:数据库连接数过多,可能会导致业务侧无法正常连接,也会导致实例全量备份和增量备份失败,影响业务的正常使用。
九游平台的解决方案:- 请及时排查业务侧连接是否有效,优化实例连接,释放不必要的连接。
- 如果设定值为default,可以对数据库进行规格扩容,用以提高max_connections的值,具体请参见。
- 云监控服务目前可以监控数据库cpu、内存、磁盘、连接数等指标,并且设置告警策略,出现告警时可以提前识别风险。支持的监控指标请参见支持的监控指标。
- 通过show variables like '%max%connections%';命令查看实例连接数,示例:
- 排除实例的磁盘满的情况
检查办法:磁盘空间使用率可通过管理控制台或云监控服务查看。
- 通过管理控制台查看
选择目标实例,单击实例名称,进入“基本信息”页面。在“存储空间”模块,查看磁盘使用率。
图10 查看磁盘使用率
- 通过云监控服务查看
选择目标实例,单击“查看监控指标”,跳转到云监控页面,查看目标实例的磁盘使用率指标。
可能原因及九游平台的解决方案:请参见。
- 通过管理控制台查看
- 连接失败的常见报错
通过命令连接数据库实例时,可能出现的报错信息和九游平台的解决方案如下所示:
- error 2013:lost connection to mysql server during query
连接超时参数“wait_timeout”和“interactive_timeout”设置过小时,rds for mysql会自动断开超时的空连接。具体请参见。
- error 1045 (28000): access denied for user 'root'@'192.168.0.30' (using password: yes)
排除是否密码错误问题,确认该主机是否有连接数据库实例的权限,以及rds for mysql客户端和实例vip是否可以连通,具体请参见。
- error 1226 (42000): user 'test' has exceeded the 'max_user_connections' resource (current value:10)
排查是否限制了实例的连接数,导致连接失败,具体请参见。
- error 1129 (hy000): host '192.168.0.111' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
排查是否由于rds for mysql客户端连接数据库的失败次数(不包括密码错误),超过了max_connection_errors的值,导致连接失败,具体请参见。
- [warning] access denied for user 'username'@'yourip' (using password: no)
连接rds for mysql和rds for postgresql实例时出现该报错,请检查用户名或密码是否正确。
- [warning] access denied for user 'username'@'yourip' (using password: yes)
连接rds for mysql和rds for postgresql实例时出现该报错,请检查用户名或密码是否正确。
- login failed for user 'username'
连接rds for sql server实例时出现该报错,请检查用户名或密码是否正确。
- error 2013:lost connection to mysql server during query
- 如果上述方法均不能解决您的疑问,请联系华为云客服为您解答。
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨