文档首页/ 云数据库 GaussDB/ 常见问题/ 数据库连接/ GaussDB实例连接失败怎么办
更新时间:2024-11-11 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. 连接地址

      目标实例的“基本信息”页面,“节点列表”模块的“IP地址”

    2. 数据库端口

      “数据库端口”

    3. 用户名和密码

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

    公网连接
    1. 连接地址

      目标实例的“基本信息”页面,“节点列表”模块的“弹性公网IP”

    2. 数据库端口

      “数据库端口”

    3. 用户名和密码

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

  4. 排除网络不通
    内网访问
    1. 检查ECS与GaussDB是否在同一个区域,VPC。
      • 不同区域的云服务之间内网互不相通,无法访问实例。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。
      • 不同VPC下,请参考如下方式操作。
        • 将ECS的虚拟私有云切换为与GaussDB相同的虚拟私有云。
        • 为两个不同的虚拟私有云建立对等连接,实现内网互通。
      图3 查看ECS的VPC
      图4 查看GaussDB的VPC

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

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

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

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

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

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

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

    • 通过管理控制台查看

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

    • 通过云监控服务查看

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

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

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

  6. 连接失败的常见报错

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

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

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

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