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

如何使用Azure备份库备份仅通过专用端点访问的Azure PostgreSQL单服务器实例?

如何使用Azure备份库备份仅通过专用端点访问的Azure PostgreSQL单服务器实例?

看起来你遇到的核心问题不是凭证错误(毕竟你的业务服务能正常用这套凭证连接数据库,而且备份尝试时数据库日志连认证失败的记录都没有),而是Azure备份库的私有端点和你的PostgreSQL单服务器的私有网络之间没有打通网络连接——备份请求根本没到达数据库,自然不会产生认证日志,反而抛出了“认证失败”的误导性错误。

下面是一步步排查和解决的方法:

1. 确认网络连通性基础

首先要保证备份库的私有端点所在的虚拟网络,和PostgreSQL单服务器的私有端点/所在VNet满足以下条件之一:

  • 两者在同一个虚拟网络内
  • 两个VNet之间配置了VNet对等连接
  • 两者通过VPN网关或ExpressRoute连通

如果网络根本没打通,备份库连数据库的IP都访问不到,自然无法完成认证步骤。

2. 检查PostgreSQL的私有DNS配置

Azure PostgreSQL单服务器用私有端点时,需要依赖Azure专用DNS区域来解析FQDN到私有IP。你需要:

  • 确认已经创建了postgres.database.azure.com的专用DNS区域
  • 把备份库私有端点所在的VNet关联到这个DNS区域
  • 可以在备份库VNet内的一台测试VM上,用nslookup <server-name>.postgres.database.azure.com验证解析结果,确保返回的是PostgreSQL的私有IP,而不是公共IP

如果DNS解析错误,备份库会尝试连接公共IP,但你的PostgreSQL只开放私有端点,这就会导致连接失败,且数据库日志无记录。

3. 排查NSG和网络安全规则

检查以下几处的网络安全组(NSG)规则:

  • PostgreSQL私有端点所在子网的NSG:允许来自备份库私有端点所在子网的5432端口入站流量
  • 备份库私有端点所在子网的NSG:允许向PostgreSQL私有端点所在子网的5432端口出站流量

很多时候连接失败都是NSG规则阻挡了端口流量,尤其是默认的出站规则可能不允许自定义端口的访问。

4. 验证备份库的网络访问策略

进入你的Azure备份库,检查它的网络访问设置:

  • 确认设置为“仅允许通过专用端点访问”(如果你的备份库是私有端点部署的话)
  • 确保已经正确关联了对应的私有端点,没有遗漏配置

5. 模拟备份库的网络环境测试

在备份库私有端点所在的VNet里部署一台临时VM,安装psql客户端,用你存在Key Vault里的连接字符串尝试连接PostgreSQL:

psql "Server=<server-name>.postgres.database.azure.com;Database=<database>;Port=5432;User Id=<database>@<server-name>.postgres.database.azure.com;Password=<password>;Ssl Mode=Require;"

如果这个测试也连接失败,那就能确定是网络问题;如果测试成功,再排查Terraform配置或者备份库的身份权限(比如备份库的托管身份是否有权限读取Key Vault里的凭证)。

6. 确认Terraform配置细节

虽然你说连接字符串正确,但还是要检查Terraform中data_protection_backup_policy_postgresql资源的配置:

  • 确认database_credential引用的Key Vault secret确实是正确的连接字符串
  • 检查备份实例是否关联了正确的备份库,且备份库的私有端点配置无误

按照这个流程排查,应该能解决网络连通的问题,让备份请求顺利到达数据库完成认证和备份操作。

备注:内容来源于stack exchange,提问作者Nagy Vilmos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 08:30:32