跳至主要内容

Azure Database for PostgreSQL:完整部署指南

本指南将带您完成 Azure Database for PostgreSQL 的部署、安全与优化,并提供面向真实场景的上手教程。
· 15分钟 阅读

使用 AI 探索

随着更多工作负载迁移到云端,我发现高效且安全地管理 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 自动执行每日备份并支持可自定义的保留期,同时无停机地应用安全补丁与更新。
  • 企业级安全与合规: 支持静态与传输加密、基于角色的访问控制、专用终结点,并遵循行业认证(如 SOC、HIPAA、GDPR)。
  • 深度集成 Azure 生态: 可与 Azure Data Factory、Azure Monitor、Azure Active Directory、Power BI 等服务无缝连接,加速开发并实现全方位可观测性。

展示 Azure PostgreSQL 关键优势的图像。

展示 Azure PostgreSQL 关键优势的图像。由 Napkin AI 创建。

部署模型与架构框架

Azure Database for PostgreSQL 支持多种部署模型,帮助您按应用的可扩展性、可用性与性能需求选择最合适的架构。

灵活服务器部署

灵活服务器是最通用的部署模型,提供对资源配置、可用性与性能调优的精细化控制。

非常适合需要高正常运行时间与可预测性能的关键业务应用。

高可用性(HA)

为确保服务连续性并将停机时间降至最低,您应考虑以下高可用性配置:

  • 同可用区 HA: 在与主节点相同的可用区中部署备用副本,提供冗余、更快的故障转移以及最小的网络延迟。
  • 跨可用区 HA: 将主节点与备用节点分布在不同的可用区,以抵御可用区级别的故障。

扩展与优化

为确保性能与成本效率,请实施以下策略以进行动态资源管理与工作负载调优:

  • 纵向计算扩展: 根据工作负载需求动态调整 vCore 与内存。适用于季节性峰值或空闲期降本。
  • 自动停止/启动: 在低峰时段调度关闭服务器以降低成本。
  • 存储自动扩展: 随着数据增长自动扩展磁盘容量,免去手动重新分配。
  • IOPS 调优: 自定义存储 IOPS 以匹配工作负载需求,帮助降低读多或写密集型应用的延迟。

如何部署启用 HA 的灵活服务器

要部署启用高可用性(HA)的“灵活服务器”,请按以下步骤进行:

01:进入 Azure 门户,导航至 Azure Database for PostgreSQL 灵活服务器,点击“创建”。

下方图片展示了此步骤。

展示 Azure 门户界面创建新的 PostgreSQL 灵活服务器步骤的截图(01)。展示 Azure 门户界面创建新的 PostgreSQL 灵活服务器步骤的截图(01)。

展示 Azure 门户界面创建新的 PostgreSQL 灵活服务器步骤的截图(02)。展示 Azure 门户界面创建新的 PostgreSQL 灵活服务器步骤的截图(02)。

02:在“高可用性”下,选择“同一可用区”或“跨可用区冗余”。

下方图片展示了此步骤。

展示灵活服务器创建界面的截图,显示“同一可用区”和“跨可用区冗余”的选项。图像展示了灵活服务器创建界面中的“同一可用区”和“跨可用区冗余”选择。

03:配置 vCore、存储大小与 IOPS 设置。

04:完成网络配置(例如 VNet 或公共访问)并部署。

展示“网络”配置页面的截图。展示“网络”配置页面的截图。

单一服务器部署

单一服务器模型主打简洁与快速上手。

它提供自动备份、基础性能调优,并且配置开销较小。

适用于开发、测试或小型生产工作负载。

可用层级

可选层级包括:

  • Basic:适用于开发/测试或轻量级应用。
  • General purpose:为标准工作负载提供均衡的计算与内存。
  • Memory optimized:为缓存密集型工作负载提供更高的内存/核心比。

如何创建单一服务器

01:在 Azure 门户中,导航至 Azure Database for PostgreSQL 服务器,点击“创建”。

展示 Azure 门户界面创建新的 PostgreSQL 单一服务器步骤的截图展示 Azure 门户界面创建新的 PostgreSQL 单一服务器步骤的截图。

02:根据工作负载需求选择定价层。

参见 Azure 定价页面 获取有关可用层级与价格的最新信息。

展示 Azure 定价页面的截图。展示 Azure 定价页面的截图。

03:设置管理员凭据,配置防火墙规则并部署。

> 如果您是 PostgreSQL 新手,Beginner's Guide to PostgreSQL 是您在将数据库部署到云之前开始实践的绝佳起点。

Hyperscale(Citus)扩展

Hyperscale(Citus)部署模型专为分布式 PostgreSQL 场景而设计。

它通过将数据分片到工作节点并高效协调查询,将单节点数据库转变为可水平扩展的集群。

一些关键用例包括:

  • 实时分析: 在数十亿行数据上并发运行查询,并实现毫秒级延迟。
  • 多租户 SaaS 应用: 将租户分布到不同分片以隔离工作负载并保持性能。

如何创建并分布表

01:在 Azure 门户中创建一个 Hyperscale(Citus)服务器组。这将通过 Citus 扩展建立一个分布式 PostgreSQL 集群。

02:使用 psql 或 Azure Data Studio 等工具连接到协调器节点。

请确保连接到协调器节点(而非工作节点),因为分布式表命令必须在协调器上执行。

03:使用 SQL 创建表(若尚不存在):

CREATE TABLE your_table_name (
  id SERIAL PRIMARY KEY,
  distribution_column INT,
  ... other columns ...
);

04:使用以下命令分布该表:

SELECT create_distributed_table('your_table_name', 'distribution_column');

将 'your_table_name' 替换为实际表名,'distribution_column' 替换为基数较高且经常在查询中使用的列。

选择合适的部署模型

下表根据常见用例给出推荐的部署模型。

使用场景推荐模型
低成本开发/测试单一服务器
大规模多租户分析Hyperscale(Citus)
通用应用且负载可变灵活服务器

选择合适的部署模型取决于应用的工作负载特征、高可用性需求与性能预期。

> 如果您不确定 PostgreSQL 是否适合您的项目,请查看 PostgreSQL vs. MySQL: Choosing the Right Database for Your Project 以及 SQLite vs PostgreSQL: A Detailed Comparison。

安全与合规架构

保护您的 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)集成的混合身份架构图。展示本地 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 门户中配置专用终结点步骤的截图(01)。

展示在 Azure 门户中配置专用终结点步骤的截图(02)。展示在 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)的示意图。展示 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 提供多种策略来降低 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 定价计算器估算成本:

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 技能路径。学习愉快!

Don Kaluarachchi

作者

Don Kaluarachchi

我是 Don——一名顾问、开发者、工程师、数字架构师和作者(基本上,我身兼数职 👨‍💻🎩)。我热衷于让数字平台顺畅运行,并不断寻找改进的方法。不写代码的时候,我会写写关于人工智能、数据科学以及各类技术主题的文章。
 
多年来,我参与过从构建与优化软件到部署 AI 模型、设计云端解决方案等各类项目。我拥有伦敦布鲁内尔大学的人工智能理学硕士学位和计算机科学理学学士学位。

主题