安全与合规架构
保护您的 Azure Database for PostgreSQL 实例对于防止敏感数据泄露、确保业务连续性并保持合规至关重要。
Azure 提供强大的内置能力,用于强化身份管理、保护网络访问,并与行业标准保持一致。
身份验证机制
身份验证是保护 PostgreSQL 数据库访问的第一道防线。
Azure Active Directory(AAD)集成
Azure AD 允许您集中管理用户及其对 Azure 资源(包括 PostgreSQL)的访问。
这比管理本地服务器用户更安全,并支持多重身份验证、条件访问与用户全生命周期管理。
我们可以看一个架构示例:
您可以将本地 Active Directory 域与 Azure AD 集成,将现有的身份基础设施扩展到云端。
下图展示了典型的混合身份架构:
展示本地 Active Directory 与 Azure Active Directory(Azure AD)集成的混合身份架构图。来源:Microsoft Azure Architecture
启用 AAD 身份验证:
01:将 PostgreSQL 服务器注册到 AAD:
- 打开 Azure 门户。
- 导航至您的 Azure Database for PostgreSQL 灵活服务器。
- 在“设置”下,点击“Active Directory 管理员”。
- 点击“设置管理员”,搜索用户/组,然后“保存”。
02:使用 Azure CLI 设置 AAD 管理员(可选):
az postgres flexible-server ad-admin create \
--resource-group <your-resource-group> \
--server-name <your-server-name> \
--display-name <aad-user-name> \
--object-id <aad-user-object-id>
03:使用 psql 连接:
psql "host=<your-postgres-host> dbname=<your-db> user=<aad-user>@<tenant>.onmicrosoft.com sslmode=require"
SCRAM-SHA-256 身份验证
Azure PostgreSQL 支持 SCRAM-SHA-256,这是一种比过时的 MD5 更现代、更安全的基于密码的身份验证机制。
在 PostgreSQL 服务器参数中启用:
- 在 Azure 门户的灵活服务器下进入“服务器参数”。
- 搜索
password_encryption并将其设置为scram-sha-256。 - 保存更改并在需要时重启服务器。
行级安全(RLS)
使用 RLS 定义细粒度访问控制策略,仅允许特定用户查看或修改表中的特定行。
如何启用 RLS:
01:连接到数据库并运行:
ALTER TABLE employees ENABLE ROW LEVEL SECURITY;
02:创建策略:
CREATE POLICY employee_policy
ON employees
USING (user_email = current_user);
网络防护
在网络层保护 Azure Database for PostgreSQL 至关重要,可防止未授权访问并降低攻击面。
Azure 提供多种内置网络功能以隔离流量并强化访问控制。
01:使用专用终结点
专用终结点可使您的 PostgreSQL 服务器仅在 Azure 虚拟网络中可访问,从而消除公共暴露。
配置专用终结点:
01:进入 Azure 门户并选择您的 PostgreSQL 灵活服务器
02:在“设置”下,点击“网络”。
03:选择“专用访问(VNet 集成)”。
04:点击“添加专用终结点”。
05:提供名称并选择资源组与 VNet/子网。
06:选择专用 DNS 集成(推荐)。
07:审核并创建专用终结点。
下方图片展示了在 Azure 门户中设置专用终结点的一些主要步骤。
展示在 Azure 门户中配置专用终结点步骤的截图(01)。
展示在 Azure 门户中配置专用终结点步骤的截图(02)。
02:网络安全组(NSG)
NSG 控制进出网络接口与子网的流量。使用它们仅允许可信 IP 连接。
为专用终结点配置 NSG:
01:导航至专用终结点所在的子网。
02:关联 NSG 并定义规则,例如:
- 仅允许来自您组织的 IP 网段。
- 拒绝其他所有入站连接。
03:跨区域对等互连
对于全球化应用,使用跨区域 VNet 对等互连,以安全地在虚拟网络之间路由流量。
在 Azure 门户中设置跨区域对等互连:
01:进入“虚拟网络”,选择“对等互连”。
02:点击“添加”,选择远程虚拟网络(VNet)。
03:启用“使用远程网关进行跨区域连接”。
合规认证
Azure Database for PostgreSQL 符合广泛的行业与政府标准,确保数据保护与法律合规:
部分认证包括:
- GDPR
- HIPAA
- SOC 1/2/3
- ISO/IEC 27001、27018
- FedRAMP、PCI-DSS
您可以在 Microsoft Trust Center 查看合规状态,并下载与您所在地区或行业相关的合规报告。
性能优化与监控
最大化性能与可靠性对生产工作负载至关重要。
Azure 提供智能调优、实时监控与告警工具,确保您的 PostgreSQL 服务器以最佳状态运行。
智能调优
Azure 借助内置分析与优化工具,支持前瞻性的性能改进。
用例包括自动扩缩、工作负载分配与存储性能增强。
使用 Azure Advisor 获取性能建议
Azure Advisor 会分析遥测数据并推荐最佳实践。
应用性能建议:
01:进入 Azure 门户并选择“Azure Advisor”。
02:点击“建议”,然后选择“性能”。
03:找到您的 PostgreSQL 灵活服务器。
04:应用如下建议:
- 扩展 vCore
- 提升 IOPS
- 使用只读副本
创建只读副本
为读密集型工作负载分流,您可以创建副本。步骤如下:
01:在 Azure 门户中,选择您的 PostgreSQL 服务器。
02:在“设置”下,选择“副本”。
03:点击“添加副本”,选择区域并创建。
04:在应用中使用只读终结点。
监控框架
Azure Monitor 可深入洞察 PostgreSQL 资源的健康状况与使用情况。
关键监控指标
- CPU 利用率
- 内存使用率
- 磁盘 I/O 与 IOPS
- 查询执行时间
- 活动连接数
- 连接失败次数
查看指标:
步骤 01:进入 Azure 门户并打开 Monitor。
步骤 02:点击“指标”,选择您的 PostgreSQL 灵活服务器。
步骤 03:选择指标(例如 CPU %)。
步骤 04:应用筛选并设置聚合(例如平均、最大)。
步骤 05:创建可视化图表或将其固定到仪表板。
创建告警规则
通过告警,您可以在性能异常影响用户之前采取行动。
创建告警:
步骤 01:在 Azure 门户中进入 Monitor 并选择“警报”。
步骤 02:点击“新建警报规则”。
步骤 03:选择您的 PostgreSQL 资源。
步骤 04:选择条件,例如 CPU usage > 80%。
步骤 05:设置评估周期与频率。
步骤 06:定义操作组(电子邮件、Webhook、Logic App)。
步骤 07:命名并创建告警。
关键绩效指标(KPI)
监控 KPI 可确保系统健康并满足 SLA:
|
KPI |
说明 |
|
CPU 利用率 |
为获得最佳性能应保持在 75% 以下 |
|
内存使用率 |
高使用率可能导致查询变慢或 OOM 终止 |
|
查询时长 |
使用查询性能日志跟踪慢查询 |
|
活动连接数 |
反映并发用户负载 |
|
存储利用率 |
有助于预测何时会触发自动扩展 |
您可以在 Azure Monitor 的指标中查看与分析这些 KPI。
迁移与集成模式
借助合适的工具与策略,将数据库迁移到 Azure Database for PostgreSQL 可以非常顺畅。
Azure 支持在线与离线迁移、多种源系统,并可与 AI 及开发工具集成。
> 如需在真实开发环境中使用 PostgreSQL 的动手教程,请阅读 Using PostgreSQL in Python。
Database Migration Service(DMS)
Azure Database Migration Service(DMS)可安全、可引导地将各类数据库平台(本地或云端)迁移到 Azure PostgreSQL。
下图展示了受支持的迁移场景与平台:
展示 Azure Database Migration Service(DMS)的示意图。来源:Microsoft Products
使用 DMS 执行迁移
01:创建 DMS 实例:
- 在 Azure 门户中搜索“Database Migration Services”。
- 点击“创建”,选择订阅、资源组与区域。
- 选择“Integration Runtime(IR)”,创建或复用现有 IR。
02:创建迁移项目:
- 在 DMS 实例内,点击“添加新迁移项目”。
- 提供名称并设置:
- 源服务器类型:PostgreSQL
- 目标服务器类型:Azure Database for PostgreSQL
- 迁移活动类型:在线或离线
03:定义源与目标服务器:
- 输入源 PostgreSQL 服务器(本地、AWS RDS 等)的连接信息。
- 输入目标 Azure PostgreSQL 灵活服务器的凭据。
04:运行并监控迁移:
- 选择要迁移的数据库/模式。
- 配置表映射与可选的数据转换。
- 开始迁移并在 Azure 门户中监控进度。
从本地或其他云迁移
对于较小或一次性的迁移,您可以使用 PostgreSQL 原生工具 pg_dump 与 pg_restore。
通过 CLI 的离线迁移
要将本地或其他云的 PostgreSQL 数据库离线迁移到 Azure,请执行以下步骤:
01:从源端导出数据库:
pg_dump -Fc --no-acl --no-owner -h <source-host> -U <source-user> dbname > db.dump
02:导入到 Azure PostgreSQL:
pg_restore -h <azure-host> -U <azure-user> -d <target-db> db.dump
一个小提示:对于大型数据库,可在 pg_restore 中使用 --jobs 标志以获得更快的性能。
从 Oracle 迁移到 PostgreSQL
从 Oracle 迁移到 PostgreSQL,您可以使用 Ora2Pg 将 Oracle 模式转换为 PostgreSQL 兼容的语法。步骤如下:
01:安装 Ora2Pg。
02:用您的 Oracle 凭据配置 ora2pg.conf 文件。
03:运行以下命令:
ora2pg -c ora2pg.conf -o schema.sql
psql -h <azure-host> -U <user> -d <dbname> -f schema.sql
> 为增强迁移后的数据库管理能力,请查看 Managing Databases in PostgreSQL。
AI 集成能力
Azure PostgreSQL 通过 pgvector 扩展支持 AI 工作负载,并可与 Azure 认知服务集成。
启用并使用 pgvector:
CREATE EXTENSION IF NOT EXISTS vector;
02:创建并使用向量列:
CREATE TABLE embeddings (
id SERIAL PRIMARY KEY,
description TEXT,
embedding vector(1536)
);
03:插入与搜索向量:
INSERT INTO embeddings (description, embedding)
VALUES ('example', '[0.1, 0.2, 0.3, 0.4]');
SELECT * FROM embeddings
ORDER BY embedding <-> '[0.1, 0.2, 0.3, 0.4]'
LIMIT 5;
04:与 AI 服务集成:
- 使用 Azure OpenAI、Cognitive Search 或 Azure ML 生成嵌入。
- 使用 pgvector in PostgreSQL 存储与查询。
成本优化技巧
Azure 提供多种策略来降低 PostgreSQL 基础设施与运维成本。
灵活服务器定价
要通过灵活服务器定价选项优化成本,建议遵循以下指南:
01:对开发或低 CPU 工作负载使用可突发 SKU(如 B1ms)。
- 在 Azure 门户中进入 PostgreSQL 并选择“定价层”。
- 选择“可突发”。
02:预留容量:
- 承诺使用 1 年或 3 年,最高可节省 60%。
- 通过 Azure 门户进入“预留项”,点击“添加”,选择“PostgreSQL 灵活服务器”进行购买。
Hyperscale(Citus)经济性
Hyperscale 使用横向分片提升吞吐量。
优势包括:
- 跨节点负载均衡
- 更好的资源隔离
- 通过压缩提升存储效率
在 Azure 门户中,选择“创建资源”,然后选择“Azure Database for PostgreSQL(Hyperscale,Citus)”以启用 Hyperscale。
存储与备份成本管理
若要有效管理存储与备份成本,请考虑以下步骤:
审查快照保留:
- Azure 默认保留每日备份。
- 进入“服务器设置”中的“备份”,调整“保留期”(默认 7–35 天)。
使用 Azure 定价计算器估算成本:
- Azure Pricing Calculator。
- 添加 PostgreSQL 灵活服务器,选择区域、SKU、备份保留与 IOPS。
PostgreSQL 版本与升级管理
通过定期应用更新,确保您的环境安全且受支持。
受支持的版本与生命周期策略
了解受支持的 PostgreSQL 版本及其生命周期策略,对于维护安全与受支持的环境至关重要:
- Azure 支持 PostgreSQL 11–16 版本。
- 版本支持与 PostgreSQL 社区的 EOL 政策保持一致。
- 在 EOL 前规划升级以保持支持与安全。
升级与打补丁
升级与打补丁您的 PostgreSQL 灵活服务器,取决于更新类型,可能涉及自动或手动过程:
- 小版本更新自动应用。
- 大版本升级需要手动步骤:
升级步骤:
01:备份当前数据库:
pg_dumpall -h <current-host> -U <user> > backup.sql
02:在 Azure 门户中创建目标 PostgreSQL 版本的新服务器。
03:将备份还原到新服务器:
psql -h <new-host> -U <user> -f backup.sql
04:更新应用或环境变量中的连接字符串。
开发生态
Azure PostgreSQL 支持现代 DevOps 与地理空间工作负载。
基础设施即代码(IaC)
使用 Terraform 实现可重复的自动化供应。以下是创建 Azure PostgreSQL 灵活服务器的示例 Terraform 脚本:
resource "azurerm_postgresql_flexible_server" "example" {
name = "mypgflexserver"
resource_group_name = "myrg"
location = "East US"
administrator_login = "pgadmin"
administrator_password = "password123!"
sku_name = "Standard_B1ms"
version = "14"
}
要创建资源,依次运行 terraform init → terraform plan → terraform apply。
> 了解更多,请查阅我们的 Azure 上使用 Terraform 的综合指南。
基于 PostGIS 的地理空间能力
PostGIS 为 PostgreSQL 提供空间与地理查询扩展。
启用 PostGIS:
CREATE EXTENSION postgis;
用于位置类应用、地图、路线优化与地理围栏等场景。
常用扩展与集成
启用强大的 PostgreSQL 扩展以增强可观测性与调度能力:
|
扩展 |
用途 |
|
pg_stat_statements |
跟踪并分析查询性能 |
|
uuid-ossp |
生成 UUID |
|
postgis |
地理空间查询 |
|
pg_cron |
在 SQL 中调度后台作业 |
要启用所需扩展,请进入 Azure 门户并打开您的 PostgreSQL 灵活服务器。
随后进入“服务器参数”,找到 azure.extensions 设置,将所需扩展以逗号分隔的形式添加并保存。
结语
Azure Database for PostgreSQL 让您能够在云中以企业级的可靠性、安全性与性能来部署、扩展与管理 PostgreSQL。
随着云端需求的演进,利用 Azure 强大的生态与 PostgreSQL 经验证的可靠性,将确保您的应用保持敏捷、合规且具成本效率。
如果您想进一步加深知识,我强烈建议查看 Azure Fundamentals 技能路径。学习愉快!

随着更多工作负载迁移到云端,我发现高效且安全地管理 PostgreSQL 已成为数据专业人士的核心技能。
PostgreSQL 一直是我常用的关系型数据库之一。它可靠、可扩展,并由开源社区支持。
但在云端运行它——尤其是在大规模场景下——会带来一系列挑战,包括高可用性、性能调优、成本优化,以及满足严格的安全要求。
Azure Database for PostgreSQL 通过提供一个全托管、可扩展且安全的平台,解决了许多上述问题。根据我的经验,它在简化部署与运维的同时,仍为您提供足够的灵活性,以便快速构建并适应不断变化的需求。因此,在本教程中,我将涵盖部署 Azure PostgreSQL 数据库所需了解的一切。
> 若要熟悉 PostgreSQL 基础知识及其工作原理,请查看 What Is PostgreSQL? How It Works, Use Cases, and Resources。
Azure Database for PostgreSQL 概览
Azure Database for PostgreSQL 是 Microsoft 提供的云原生、全托管 PostgreSQL 服务。
它面向小规模到企业级工作负载,免除了手动准备、配置、打补丁与维护数据库基础设施的需求。
基于值得信赖的 Azure 平台,它支持三种不同的部署模型:单一服务器、灵活服务器,以及 Hyperscale(Citus),以适配不同的工作负载和应用架构。
Azure PostgreSQL 的一些关键优势包括:
展示 Azure PostgreSQL 关键优势的图像。由 Napkin AI 创建。
部署模型与架构框架
Azure Database for PostgreSQL 支持多种部署模型,帮助您按应用的可扩展性、可用性与性能需求选择最合适的架构。
灵活服务器部署
灵活服务器是最通用的部署模型,提供对资源配置、可用性与性能调优的精细化控制。
非常适合需要高正常运行时间与可预测性能的关键业务应用。
高可用性(HA)
为确保服务连续性并将停机时间降至最低,您应考虑以下高可用性配置:
扩展与优化
为确保性能与成本效率,请实施以下策略以进行动态资源管理与工作负载调优:
如何部署启用 HA 的灵活服务器
要部署启用高可用性(HA)的“灵活服务器”,请按以下步骤进行:
01:进入 Azure 门户,导航至 Azure Database for PostgreSQL 灵活服务器,点击“创建”。
下方图片展示了此步骤。
02:在“高可用性”下,选择“同一可用区”或“跨可用区冗余”。
下方图片展示了此步骤。
03:配置 vCore、存储大小与 IOPS 设置。
04:完成网络配置(例如 VNet 或公共访问)并部署。
单一服务器部署
单一服务器模型主打简洁与快速上手。
它提供自动备份、基础性能调优,并且配置开销较小。
适用于开发、测试或小型生产工作负载。
可用层级
可选层级包括:
如何创建单一服务器
01:在 Azure 门户中,导航至 Azure Database for PostgreSQL 服务器,点击“创建”。
02:根据工作负载需求选择定价层。
参见 Azure 定价页面 获取有关可用层级与价格的最新信息。
03:设置管理员凭据,配置防火墙规则并部署。
> 如果您是 PostgreSQL 新手,Beginner's Guide to PostgreSQL 是您在将数据库部署到云之前开始实践的绝佳起点。
Hyperscale(Citus)扩展
Hyperscale(Citus)部署模型专为分布式 PostgreSQL 场景而设计。
它通过将数据分片到工作节点并高效协调查询,将单节点数据库转变为可水平扩展的集群。
一些关键用例包括:
如何创建并分布表
01:在 Azure 门户中创建一个 Hyperscale(Citus)服务器组。这将通过 Citus 扩展建立一个分布式 PostgreSQL 集群。
02:使用 psql 或 Azure Data Studio 等工具连接到协调器节点。
请确保连接到协调器节点(而非工作节点),因为分布式表命令必须在协调器上执行。
03:使用 SQL 创建表(若尚不存在):
04:使用以下命令分布该表:
将 'your_table_name' 替换为实际表名,'distribution_column' 替换为基数较高且经常在查询中使用的列。
选择合适的部署模型
下表根据常见用例给出推荐的部署模型。
选择合适的部署模型取决于应用的工作负载特征、高可用性需求与性能预期。
> 如果您不确定 PostgreSQL 是否适合您的项目,请查看 PostgreSQL vs. MySQL: Choosing the Right Database for Your Project 以及 SQLite vs PostgreSQL: A Detailed Comparison。