共用方式為


快速入門:建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器

Azure Database for PostgreSQL 是一項託管服務,你可以用來在雲端運行、管理和擴展高可用性的 PostgreSQL 資料庫。

這個快速入門說明如何利用 Azure 入口網站、Azure CLI 或 Azure 資源管理器(ARM)範本,建立 PostgreSQL 彈性伺服器實例的 Azure 資料庫。

先決條件

開始之前,請確定您擁有:

  • Azure 訂用帳戶。 如果您沒有帳戶,請建立 免費的 Azure 帳戶
  • 在訂閱中建立資源所需的適當權限。

了解你正在創作什麼

Azure Database for PostgreSQL 彈性伺服器實例包含:

  • 一組已配置的 運算與儲存資源
  • Azure 資源群組內部署。
  • 一個 postgres 預設建立的資料庫。
  • 一個 azure_maintenance 用於管理服務流程的資料庫。
  • 一個 azure_sys 用於查詢、儲存及索引調整功能的資料庫。

備註

連線通常使用 5432 埠,若透過內建的 PgBouncer 連線池器連接,則使用 6432 埠。

使用 Azure 入口網站建立伺服器

  1. 登入 Azure 入口網站
  2. 在左上角選擇 「建立資源 」。
  3. 在 [類別] 下,選取 [資料庫]
  4. 尋找並選擇 Azure Database for PostgreSQL flexible server
  5. 選取 ,創建

設定基本設定

專案詳細資料

Setting 建議的值 註釋
Subscription 您的訂用帳戶 選擇在哪裡收費資源
資源群組 myresourcegroup 建立新內容或選擇現有內容

伺服器詳細資料

Setting 建議的值 Description
伺服器名稱 mydemoserver-pgsql 必須是全域唯一的。 網域 .postgres.database.azure.com 會自動新增
區域 離你最近的區域 考慮合規性、資料駐留性、價格及與使用者的距離
PostgreSQL 版本 最新可得資料 目前支援: 18、17、16、15、14、13、12、11
工作負載類型 發展 開發使用Burstable SKU。 生產環境使用一般用途型或記憶體優化型。
可用性區域 沒有任何喜好設定 與申請地點共置很有用

高可用性

Option SLA Description
Disabled 99.9% 單一伺服器,無待機
同一區域 99.95% 待命於同一可用區域
區域備援 99.99% 待命於不同的可用區域

Authentication

Setting Description Recommended
驗證方法 使用者如何驗證 - 僅限 PostgreSQL 認證 (用於快速入門)
- Microsoft Entra authentication (用於生產環境)
- 兩者都行 (為了彈性)
系統管理員使用者名稱 adminuser - 必須是 1 到 63 個字元
- 僅有數字與字母
- 無法以 pg_ 開始
- 不能是系統保留名稱
密碼 複雜密碼 8-128 個字元,包含大寫、小寫、數字及特殊字元

配置運算與儲存

選擇 「配置伺服器 」以自訂:

計算層

用例 Description
可高載 發展 對於不需要持續佔用整個 CPU 資源的工作負載
一般用途 生產 最常見的生產工作負載
記憶體最佳化 高記憶體工作負載 需要高記憶體與CPU比率的工作負載

儲存設定

Setting 之後可以改變 Description
儲存體類型 ❌ 否 Premium SSD 或 Premium SSD v2
儲存空間大小 ✅ 是的(只限增加) 創造後無法縮小
效能層級 ✅ 是 控制 IOPS 與吞吐量
記憶體自動成長 ✅ 是 接近極限時自動擴展

備份設定

Setting 之後可以改變 Description
備份保留 ✅ 是 7-35天
備份備援 ❌ 否 局部冗餘、區域冗餘或地理冗餘
異地備援 ❌ 否 僅在 Azure 配對區域提供

設定網路

選擇你的連接方式(建立後無法更改):

公用存取 (允許的 IP 位址)

請使用防火牆規則透過公共端點連接。

設定:

Setting Description
允許公眾進入 啟用公開存取以設定防火牆規則
允許 Azure 服務 允許所有 Azure 服務的連線
新增目前的用戶端 IP 將你的 IP 位址加入允許清單

私人存取(虛擬網路整合)

透過虛擬網路中的私人端點連接。 欲了解更多資訊,請參閱 PostgreSQL 的 Azure Database 網路與私人存取

設定安全性

Setting 之後可以改變 選項
資料加密金鑰 ❌ 否 服務管理或客戶管理

新增資源標記 (選擇性)

以名稱與值對來組織資源:

名稱 價值觀 目標
環境 發展 識別環境類型
成本中心 IT-Dept 按部門追蹤成本
所有者 admin@contoso.com 辨識責任人

檢閱並建立

  1. 選擇 檢閱 + 創建
  2. 檢查所有設定。
  3. 選擇 建立 來部署。

部署通常需要5到10分鐘。 完成後,選擇 前往資源 以進入你的伺服器。

使用 Azure CLI 建立伺服器

CLI 的前提條件

針對此指令碼,請在本機使用 Azure CLI,因為在 Cloud Shell 中執行將花費過長時間。

登入 Azure

使用下列指令碼,以使用特定訂閱進行登入。

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

如需詳細資訊,請參閱設定使用中訂閱以互動方式登入

如果你使用 Azure Cloud Shell,代表你已經登入了。

用 CLI 建立伺服器

建立一個包含一個指令的伺服器:

az postgres flexible-server create \
  --resource-group myresourcegroup \
  --name mydemoserver-pgsql \
  --location eastus \
  --admin-user myadmin \
  --admin-password <password> \
  --sku-name Standard_D4ds_v5 \
  --tier GeneralPurpose \
  --public-access 0.0.0.0 \
  --storage-size 128 \
  --tags "Environment=Development"

CLI 參數參考

參數 Description Example
--resource-group 資源群組名稱 myresourcegroup
--name 全球唯一伺服器名稱 mydemoserver-pgsql
--location Azure 區域 eastus
--admin-user 管理員用戶名 myadmin
--admin-password 管理員密碼 你的密碼123!
--sku-name 計算 SKU Standard_D4ds_v5
--tier 計算層 突發型、通用型、記憶體優化型
--storage-size 以GB為單位的儲存空間 128
--public-access 允許的 IP 位址 0.0.0.0(所有 Azure 服務)、IP 位址或 IP 範圍
--version PostgreSQL 版本 16
--high-availability HA 模式 已停用、同區域、區域冗餘
--backup-retention 備用保留天數 7-35

進階 CLI 範例

建立一個區域冗餘的高可用性伺服器:

az postgres flexible-server create \
  --resource-group myresourcegroup \
  --name mydemoserver-pgsql-ha \
  --location eastus \
  --admin-user myadmin \
  --admin-password <password> \
  --sku-name Standard_D4ds_v5 \
  --tier GeneralPurpose \
  --storage-size 256 \
  --storage-type PremiumV2_LRS \
  --high-availability ZoneRedundant \
  --zone 1 \
  --standby-zone 2 \
  --backup-retention 14 \
  --public-access 0.0.0.0

使用 ARM 範本建立伺服器

ARM 範本概述

Azure Resource Manager (ARM) 範本讓你可以將基礎設施定義為程式碼。 使用範本來實現一致性地重複部署。

最小 ARM 範本

將此檔案儲存為 postgres-server-template.json

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "serverName": {
      "type": "string",
      "metadata": {
        "description": "Server name must be globally unique"
      }
    },
    "administratorLogin": {
      "type": "string",
      "minLength": 1,
      "maxLength": 63,
      "metadata": {
        "description": "Administrator username"
      }
    },
    "administratorLoginPassword": {
      "type": "securestring",
      "minLength": 8,
      "metadata": {
        "description": "Administrator password"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Server location"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.DBforPostgreSQL/flexibleServers",
      "apiVersion": "2024-08-01",
      "name": "[parameters('serverName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_D4ds_v5",
        "tier": "GeneralPurpose"
      },
      "properties": {
        "administratorLogin": "[parameters('administratorLogin')]",
        "administratorLoginPassword": "[parameters('administratorLoginPassword')]",
        "version": "16",
        "storage": {
          "storageSizeGB": 128,
          "type": "Premium_LRS",
          "autoGrow": "Enabled"
        },
        "backup": {
          "backupRetentionDays": 7,
          "geoRedundantBackup": "Disabled"
        },
        "network": {
          "publicNetworkAccess": "Enabled"
        },
        "highAvailability": {
          "mode": "Disabled"
        }
      }
    }
  ],
  "outputs": {
    "serverFQDN": {
      "type": "string",
      "value": "[reference(parameters('serverName')).fullyQualifiedDomainName]"
    }
  }
}

部署 ARM 範本

az group create --name myresourcegroup --location eastus

az deployment group create \
  --resource-group myresourcegroup \
  --template-file postgres-server-template.json \
  --parameters \
    serverName=mydemoserver-pgsql \
    administratorLogin=myadmin \
    administratorLoginPassword=<password>

取得連線資訊

建立伺服器後,請取得連線資訊:

使用 Azure 入口網站

  1. 請前往 Azure 入口網站中的你的伺服器。
  2. 開啟概觀頁面。
  3. 複製這些數值:
    • 伺服器名稱 (端點): mydemoserver-pgsql.postgres.database.azure.com
    • 管理員登入myadmin

使用 Azure CLI

az postgres flexible-server show \
  --resource-group myresourcegroup \
  --name mydemoserver-pgsql \
  --query "{serverName:fullyQualifiedDomainName, adminUser:administratorLogin}" \
  --output table

使用 psql 連線

安裝 psql

如果你沒有 PostgreSQL 用戶端工具,請 下載 PostgreSQL 來支援你的平台。

連線到你的伺服器

psql "host=mydemoserver-pgsql.postgres.database.azure.com port=5432 dbname=postgres user=myadmin sslmode=require"

當被要求時,輸入你在建立伺服器時設定的管理員密碼。

連接字串格式

host=<server-name>.postgres.database.azure.com port=5432 dbname=<database-name> user=<admin-user> password=<password> sslmode=require

驗證連線

連線後,你應該會看到:

psql (14.13, server 16.4)
WARNING: psql major version 14, server major version 16.
         Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=>

建立資料庫

CREATE DATABASE user_database;
\c user_database
\q

故障排除連線問題

防火牆阻擋連線

如果你看到:

connection to server at "mydemoserver-pgsql.postgres.database.azure.com" (###.###.###.###), port 5432 failed: Connection timed out

解決方案:將你的 IP 位址加入防火牆規則:

az postgres flexible-server firewall-rule create \
  --resource-group myresourcegroup \
  --name mydemoserver-pgsql \
  --rule-name AllowMyIP \
  --start-ip-address <your-ip> \
  --end-ip-address <your-ip>

需要 SSL 但未設定

確保你的連接串包含 sslmode=require

清理資源

完成快速啟動後,刪除資源以避免收費。

刪除整個資源群組

az group delete --name myresourcegroup --yes

只刪除伺服器

az postgres flexible-server delete \
  --resource-group myresourcegroup \
  --name mydemoserver-pgsql \
  --yes