You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法连接AWS Aurora集群端点但可访问写入实例的技术求助

解决AWS Aurora集群实例只读与集群端点连接问题

我来帮你捋清楚这个问题的来龙去脉和解决步骤——之前维护Aurora集群时我也踩过类似的坑,太懂这种突然写不了的焦虑了!

为什么之前的实例端点会变成只读?

Aurora的单个实例端点是绑定到具体某台数据库实例的,如果你的主实例发生了故障切换(比如AWS自动故障转移、手动切换主实例),原来的主实例会变成只读副本,这时候再连这个端点自然就只能读不能写了。而集群端点的作用就是自动把读写请求路由到当前的主实例,只读请求路由到副本,这才是生产环境应该用的正确端点。

集群端点连接失败的排查步骤

如果连集群端点遇到问题,可以按下面的步骤逐一排查:

  • 先确认你用的是正确的集群端点:
    登录AWS控制台,进入RDS服务,找到你的Aurora集群,切换到「连接与安全性」标签,这里有三个端点:

    • 集群端点(Cluster Endpoint):负责路由读写请求到主实例
    • 只读集群端点(Reader Endpoint):只路由只读请求到副本
    • 实例端点(Instance Endpoint):绑定单个实例
      别把只读集群端点当成普通集群端点用了,那本来就只能读!
  • 检查安全组配置:
    集群端点的安全组规则要和你之前用的实例端点一致,确保应用服务器的IP地址或者所在的安全组被允许访问集群的3306(或你自定义的)端口。可以在控制台的「连接与安全性」里查看安全组,进去检查入站规则。

  • 验证DNS解析是否正常:
    有时候本地DNS缓存会导致集群端点解析到旧的实例IP,在应用服务器上执行以下命令验证:

    nslookup your-cluster-endpoint.rds.amazonaws.com
    # 或者用dig
    dig your-cluster-endpoint.rds.amazonaws.com
    

    把解析出来的IP和控制台里当前主实例的私有IP对比,如果不一致,刷新DNS缓存(不同系统命令不同,比如Linux用systemctl restart systemd-resolved,Windows用ipconfig /flushdns)。

  • 确认数据库用户权限:
    虽然之前用实例端点能写,但还是可以验证下用户权限——用集群端点(如果能连进去的话)执行:

    SHOW GRANTS FOR 'your_db_user'@'%';
    

    确保用户拥有INSERT、UPDATE、DELETE等写权限,不过这个概率比较低,但可以排除。

  • 检查主实例状态:
    回到RDS控制台,查看集群的主实例状态是不是「可用」,有没有正在进行故障切换、备份或者维护操作。如果主实例处于过渡状态,集群端点可能暂时无法正常路由请求,等状态恢复后再试。

后续最佳实践

解决完当前问题后,记得把所有应用的数据库连接配置都改成集群端点,这样以后再遇到主实例故障切换,应用会自动通过集群端点路由到新的主实例,不会再出现突然只读的问题。

内容的提问来源于stack exchange,提问作者bsayegh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:57:32