文档首页> 云数据库 GaussDB> 常见问题> 数据库连接> GaussDB实例连接失败怎么办
更新时间:2024-05-07 GMT+08:00
分享

GaussDB实例连接失败怎么办

问题分析

主要从以下几个方面考虑:

  1. 排除数据库实例异常

    例如:数据库系统故障,实例状态异常,实例或表被锁定。

  2. (常见)使用正确的客户端连接方式
    • 内网连接需要GaussDB与ECS实例必须在同一区域、VPC。
    • 公网连接需要购买或使用已有EIP,并对GaussDB实例绑定该EIP 。
  3. 排除连接命令错误

    例如:连接地址错误、端口参数配置错误、用户名和密码错误。

  4. (常见)排除网络不通
    内网访问
    1. 确认ECS与GaussDB是否在同一个区域,VPC。
    2. 检查安全组规则。

      安全组外访问安全组内的GaussDB实例时,需要为安全组添加相应的入方向规则

    3. 在ECS上测试是否可以正常连接到GaussDB实例地址的端口。
    公网访问
    1. 检查安全组规则。

      安全组外访问安全组内的GaussDB实例时,需要为安全组添加相应的入方向规则

    2. 检查网络ACL规则。
    3. 相同区域主机进行ping测试。
  5. (常见)排除实例的磁盘满的情况

    当实例处于“磁盘空间满”状态时,影响数据的正常读写操作。

  6. 连接失败的常见报错

    包含连接失败的常见报错,以及相应的解决方法。

排查思路

图1 连接实例失败排查思路
  1. 排除数据库实例异常

    检查办法:请在控制台检查云实例状态是否为“正常”。

    可能原因:数据库系统故障,实例状态异常,实例或表被锁定等。

    解决方案:如果实例状态为“异常”,请尝试重启。

    图2 检查实例状态
  2. 使用正确的客户端连接方式

    内网和公网连接实例的具体操作步骤,请参见外部服务器能否访问GaussDB数据库

    表1 客户端连接方式

    连接方式

    使用场景

    连接样例

    内网方式

    系统默认提供内网IP地址。

    当应用部署在弹性云服务器上,且该弹性云服务器与GaussDB实例处于同一区域,同一VPC时,建议单独使用内网IP连接弹性云服务器与GaussDB实例。

    以连接postgres库为例:

    gsql -d postgres -h 10.0.0.0 -U root -p 8000

    说明:

    postgres为需要连接的数据库名称,10.0.0.0分布式为CN的IP地址,主备版为主DN的IP地址,root为登录数据库的用户名,8000为CN的端口号。

    公网方式

    不能通过内网IP地址访问GaussDB实例时,使用公网访问,建议单独绑定弹性公网IP连接弹性云服务器(或公网主机)与GaussDB实例。

    以连接postgres库为例:

    gsql -d postgres -h 10.0.0.0 -U root -p 8000

    说明:

    postgres为需要连接的数据库名称,10.0.0.0为实例绑定的公网IP地址,root为登录数据库的用户名,8000为实例的端口号。

  3. 排除连接命令错误

    请获取正确的连接地址、端口参数配置、用户名和密码,并重试连接实例。

    内网连接
    1. 连接地址

      目标实例的“基本信息”页面,“连接信息”页签的“内网地址”。

      图3 内网地址
    2. 数据库端口

      “数据库端口”

    3. 用户名和密码

      root管理员账号及其对应的密码。

    公网连接
    1. 连接地址

      目标实例的“基本信息”页面,“连接信息”页签的“弹性公网IP”。

      图4 弹性公网IP
    2. 数据库端口

      “数据库端口”

    3. 用户名和密码

      root管理员账号及其对应的密码。

  4. 排除网络不通
    内网访问
    1. 检查ECS与GaussDB是否在同一个区域,VPC。
      图5 查看ECS的VPC
      图6 查看GaussDB的VPC
    2. 检查安全组规则。
      • 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将GaussDB实例的内网IP地址和端口添加到出方向规则。
        图7 ECS的安全组
      • 查看GaussDB的安全组的入方向规则,如果源地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将ECS实例的IP地址和端口添加到入方向规则
        图8 GaussDB的安全组
    3. 在ECS上测试是否可以正常连接到GaussDB实例地址的端口。
      telnet <连接地址> <端口号>
      • 可以通信,说明网络是正常的。
      • 无法通信,您可以在管理控制台右上角,选择“工单 > 新建工单”联系华为云客服协助解决。
    公网访问
    1. 检查安全组规则。
      • 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将GaussDB实例的公网IP地址和端口添加到出方向规则。
        图9 ECS的安全组
      • 查看GaussDB的安全组的入方向规则,如果源地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将ECS实例的IP地址和端口添加到入方向规则
        图10 GaussDB的安全组
    2. 检查网络ACL规则。
      1. 进入虚拟私有云网络ACL列表。
      2. 检查EIP绑定的网卡是否在网络ACL关联的子网下。
      3. 查看网络ACL当前是“开启”状态还是“关闭”状态。

        若网络ACL为“开启”状态,需要添加ICMP放通规则进行流量放通

      注意:网络ACL的默认规则是丢弃所有出入方向的包,关闭“网络ACL”后,其默认规则仍然生效。

    3. 相同区域主机进行ping测试。

      如果在原ECS上没有ping通GaussDB实例绑定的EIP,请在相同区域的另一台ECS上去ping该EIP,如果可以正常ping通,说明虚拟网络正常,您可以在管理控制台右上角,选择“工单 > 新建工单”联系华为云客服协助解决。

  5. 排除实例的磁盘满的情况

    检查办法:磁盘空间使用率可通过管理控制台或云监控服务查看。

    • 通过管理控制台查看

      选择目标实例,单击实例名称,进入“基本信息”页面。在“存储/备份空间”模块,查看磁盘使用率。

      图11 查看磁盘使用率
    • 通过云监控服务查看

      选择目标实例,单击“查看监控指标”,跳转到云监控页面,查看目标实例的磁盘使用率指标。

      可能原因:内核监测到磁盘使用量超过阈值会将实例设置为只读,无法再写入数据,实例进入盘满只读状态。应用无法对GaussDB数据库进行写入操作,从而影响业务正常运行。

      解决方案:请参见磁盘扩容

  6. 连接失败的常见报错

    通过命令连接数据库实例时,可能出现的报错信息和解决方案如下所示:

    gsql: ERROR: dn_6001_6002_6003: Invalid username/password,login denied.

    连接GaussDB实例时出现该报错,请检查用户名或密码是否正确。

  7. 如果上述方法均不能解决您的疑问,请提交工单联系华为云客服为您解答。
分享:

数据库连接 所有常见问题

more