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 入口網站建立伺服器
前往創造精靈
- 登入 Azure 入口網站。
- 在左上角選擇 「建立資源 」。
- 在 [類別] 下,選取 [資料庫]。
- 尋找並選擇 Azure Database for PostgreSQL flexible server。
- 選取 ,創建。
設定基本設定
專案詳細資料
| 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 | 辨識責任人 |
檢閱並建立
- 選擇 檢閱 + 創建。
- 檢查所有設定。
- 選擇 建立 來部署。
部署通常需要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 入口網站
- 請前往 Azure 入口網站中的你的伺服器。
- 開啟概觀頁面。
- 複製這些數值:
-
伺服器名稱 (端點):
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