Azure Powershell重命名还原后Database for PostgreSQL Server的方案咨询
Azure PostgreSQL 还原后修改服务器名称相关问题解答
核心结论
Azure Database for PostgreSQL 服务器的名称是全局唯一的资源标识,创建完成后无法修改,无论是Azure Portal、Azure CLI还是Azure PowerShell都不支持重命名操作。
已验证的可行实现方案(满足灾备测试、不丢失原有资源、保留原访问名称的需求)
方案1:自定义CNAME别名(推荐,零侵入、原服务器完全保留)
该方案不需要变动原有服务器资源,客户端也不需要修改连接字符串即可完成切换:
- 提前在DNS解析服务中添加CNAME记录,例如将
pg-access.yourdomain.com指向原有服务器地址original-server.postgres.database.azure.com,所有客户端统一使用该CNAME作为数据库连接地址。 - 灾备测试时先暂停原服务器写入,执行时点还原得到新的临时服务器
restored-server.postgres.database.azure.com,验证该服务器的所有数据、权限配置、防火墙规则、参数设置均符合预期。 - 修改CNAME记录的解析目标为
restored-server.postgres.database.azure.com,调小TTL值可实现分钟级切换,客户端无感知,访问地址完全不变。 - 测试完成后可将CNAME切回原服务器,临时还原出的服务器可按需保留或删除,原有服务器资源全程不受影响。
方案2:名称释放后重建(适合需要保留原生Azure服务器域名的场景)
如果必须使用原生的original-server.postgres.database.azure.com地址访问还原后的实例,可按以下步骤操作:
- 先确认原服务器的本地冗余备份完整可用,也可手动导出全量备份到Azure存储账户做二次留存。
- 执行时点还原得到临时服务器
restored-server,验证数据和配置无异常。 - 开启了软删除的情况下,先删除原服务器,再手动清除软删除记录释放名称:
# 删除原服务器 Remove-AzPostgreSqlServer -ResourceGroupName <你的资源组名> -Name original-server # 清除软删除记录,立即释放名称 Remove-AzPostgreSqlServer -ResourceGroupName <你的资源组名> -Name original-server -DeletePermanently - 对临时服务器
restored-server执行即时备份,用该备份还原为名称为original-server的新服务器:Restore-AzPostgreSqlServer -Name original-server -ResourceGroupName <你的资源组名> -InputObject (Get-AzPostgreSqlServer -Name restored-server -ResourceGroupName <你的资源组名>) -RestorePointInTime (Get-Date) -UseGeoRestore $false - 验证新的
original-server可用后,可删除临时服务器restored-server,原服务器的备份、配置可留存,不会丢失资源。
注意:方案2中服务器名称释放后需等待1~2分钟的DNS同步时间,再执行还原操作避免名称占用报错。
内容的提问来源于stack exchange,提问作者Henry T
相关产品推荐
相关产品推荐

