快速入门:使用 ARM 模板创建 Azure Database for PostgreSQL 单一服务器

用于 PostgreSQL 的 Azure 数据库是一种托管服务,可用于在云中运行、管理和缩放具有高可用性的 PostgreSQL 数据库。 在本快速入门中,使用 Azure 资源管理器模板(ARM 模板)在 Azure 门户、PowerShell 或 Azure CLI 中创建 Azure Database for PostgreSQL 单一服务器。

ARM 模板是定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。 该模板使用声明性语法,使你可以声明要部署的内容,而不需要编写一系列编程命令来进行创建。

如果你的环境满足先决条件,并且你熟悉如何使用 ARM 模板,请选择“部署到 Azure”按钮。 Azure 门户中会打开模板。

部署到 Azure

先决条件

具有活动订阅的 Azure 帐户。 创建一个试用帐户

查看模板

创建的 Azure Database for PostgreSQL 服务器中包含一组已配置的计算和存储资源。 若要了解详细信息,请参阅Azure Database for PostgreSQL 中的定价层 - 单一服务器。 请在 Azure 资源组中创建该服务器。

本快速入门中使用的模板来自 Azure 快速启动模板

{
  "$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 for Azure database for PostgreSQL"
      }
    },
    "administratorLogin": {
      "type": "string",
      "minLength": 1,
      "metadata": {
        "description": "Database administrator login name"
      }
    },
    "administratorLoginPassword": {
      "type": "securestring",
      "minLength": 8,
      "metadata": {
        "description": "Database administrator password"
      }
    },
    "skuCapacity": {
      "type": "int",
      "defaultValue": 2,
      "metadata": {
        "description": "Azure database for PostgreSQL compute capacity in vCores (2,4,8,16,32)"
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "GP_Gen5_2",
      "metadata": {
        "description": "Azure database for PostgreSQL sku name "
      }
    },
    "skuSizeMB": {
      "type": "int",
      "defaultValue": 51200,
      "metadata": {
        "description": "Azure database for PostgreSQL Sku Size "
      }
    },
    "skuTier": {
      "type": "string",
      "defaultValue": "GeneralPurpose",
      "metadata": {
        "description": "Azure database for PostgreSQL pricing tier"
      }
    },
    "skuFamily": {
      "type": "string",
      "defaultValue": "Gen5",
      "metadata": {
        "description": "Azure database for PostgreSQL sku family"
      }
    },
    "postgresqlVersion": {
      "type": "string",
      "defaultValue": "11",
      "allowedValues": [
        "9.5",
        "9.6",
        "10",
        "11"
      ],
      "metadata": {
        "description": "PostgreSQL version"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "backupRetentionDays": {
      "type": "int",
      "defaultValue": 7,
      "metadata": {
        "description": "PostgreSQL Server backup retention days"
      }
    },
    "geoRedundantBackup": {
      "type": "string",
      "defaultValue": "Disabled",
      "metadata": {
        "description": "Geo-Redundant Backup setting"
      }
    },
    "virtualNetworkName": {
      "type": "string",
      "defaultValue": "azure_postgresql_vnet",
      "metadata": {
        "description": "Virtual Network Name"
      }
    },
    "subnetName": {
      "type": "string",
      "defaultValue": "azure_postgresql_subnet",
      "metadata": {
        "description": "Subnet Name"
      }
    },
    "virtualNetworkRuleName": {
      "type": "string",
      "defaultValue": "AllowSubnet",
      "metadata": {
        "description": "Virtual Network RuleName"
      }
    },
    "vnetAddressPrefix": {
      "type": "string",
      "defaultValue": "10.0.0.0/16",
      "metadata": {
        "description": "Virtual Network Address Prefix"
      }
    },
    "subnetPrefix": {
      "type": "string",
      "defaultValue": "10.0.0.0/16",
      "metadata": {
        "description": "Subnet Address Prefix"
      }
    }
  },
  "variables": {
    "firewallrules": {
      "batch": {
        "rules": [
          {
            "Name": "rule1",
            "StartIpAddress": "0.0.0.0",
            "EndIpAddress": "255.255.255.255"
          },
          {
            "Name": "rule2",
            "StartIpAddress": "0.0.0.0",
            "EndIpAddress": "255.255.255.255"
          }
        ]
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2020-06-01",
      "name": "[parameters('virtualNetworkName')]",
      "location": "[parameters('location')]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('vnetAddressPrefix')]"
          ]
        }
      },
      "resources": [
        {
          "type": "subnets",
          "apiVersion": "2020-06-01",
          "name": "[parameters('subnetName')]",
          "location": "[parameters('location')]",
          "dependsOn": [
            "[parameters('virtualNetworkName')]"
          ],
          "properties": {
            "addressPrefix": "[parameters('subnetPrefix')]"
          }
        }
      ]
    },
    {
      "type": "Microsoft.DBforPostgreSQL/servers",
      "apiVersion": "2017-12-01",
      "name": "[parameters('serverName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('skuName')]",
        "tier": "[parameters('skuTier')]",
        "capacity": "[parameters('skuCapacity')]",
        "size": "[parameters('skuSizeMB')]",
        "family": "[parameters('skuFamily')]"
      },
      "properties": {
        "createMode": "Default",
        "version": "[parameters('postgresqlVersion')]",
        "administratorLogin": "[parameters('administratorLogin')]",
        "administratorLoginPassword": "[parameters('administratorLoginPassword')]",
        "storageProfile": {
          "storageMB": "[parameters('skuSizeMB')]",
          "backupRetentionDays": "[parameters('backupRetentionDays')]",
          "geoRedundantBackup": "[parameters('geoRedundantBackup')]"
        }
      },
      "resources": [
        {
          "type": "virtualNetworkRules",
          "apiVersion": "2017-12-01",
          "name": "[parameters('virtualNetworkRuleName')]",
          "dependsOn": [
            "[resourceId('Microsoft.DBforPostgreSQL/servers/', parameters('serverName'))]"
          ],
          "properties": {
            "virtualNetworkSubnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]",
            "ignoreMissingVnetServiceEndpoint": true
          }
        }
      ]
    },
    {
      "type": "Microsoft.DBforPostgreSQL/servers/firewallRules",
      "apiVersion": "2017-12-01",
      "name": "[concat(parameters('serverName'),'/',variables('firewallrules').batch.rules[copyIndex()].Name)]",
      "location": "[parameters('location')]",
      "copy": {
        "name": "firewallRulesCopy",
        "mode": "Serial",
        "batchSize": 1,
        "count": "[length(variables('firewallrules').batch.rules)]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.DBforPostgreSQL/servers/', parameters('serverName'))]"
      ],
      "properties": {
        "startIpAddress": "[variables('firewallrules').batch.rules[copyIndex()].StartIpAddress]",
        "endIpAddress": "[variables('firewallrules').batch.rules[copyIndex()].EndIpAddress]"
      }
    }
  ]
}

该模板定义了五个 Azure 资源:

可以在 Azure 快速入门模板中找到更多 Azure Database for PostgreSQL 模板示例。

部署模板

选择以下链接以在 Azure 门户中部署 Azure Database for PostgreSQL 服务器模板:

部署到 Azure

在“部署具有 VNet 的 Azure Database for PostgreSQL”页上:

  1. 对于“资源组”,请选择“新建”,输入新资源组的名称,然后选择“确定” 。

  2. 如果你创建了一个新资源组,请为该资源组和新服务器选择一个位置。

  3. 输入服务器名称、管理员登录名和管理员登录密码 。

    “部署具有 VNet 的 Azure Database for PostgreSQL”窗口,Azure 快速入门模板,Azure 门户

  4. 根据需要更改其他默认设置:

    • 订阅:要用于服务器的 Azure 订阅。
    • SKU 容量:vCore 容量,值可以是 2(默认值)、4、8、16、32 或 64 。
    • SKU 名称:SKU 层前缀、SKU 系列和 SKU 容量,以下划线联接,例如 B_Gen5_1、GP_Gen5_2(默认值)或 MO_Gen5_32 。
    • SKU 大小(MB) :Azure Database for PostgreSQL 服务器的存储大小,以 MB 为单位(默认值为 51200)。
    • SKU 层:部署层,例如“基本”、“常规用途”(默认值)或“内存优化” 。
    • SKU 系列:“Gen4”或“Gen5”(默认值),表示服务器部署的硬件代系 。
    • PostgreSQL 版本:要部署的 PostgreSQL 服务器版本,例如 9.5、9.6、10 或 11(默认值) 。
    • 备份保留天数:异地冗余备份的所需保留期,以天为单位(默认值为 7)。
    • 异地冗余备份:“已启用”或“已禁用”(默认值),具体取决于异地灾难恢复 (Geo-DR) 要求 。
    • 虚拟网络名称:虚拟网络的名称(默认值为 azure_postgresql_vnet)。
    • 子网名称:子网的名称(默认值为 azure_postgresql_subnet)。
    • 虚拟网络规则名称:允许子网的虚拟网络规则的名称(默认值为 AllowSubnet)。
    • VNet 地址前缀:虚拟网络的地址前缀(默认值为 10.0.0.0/16)。
    • 子网前缀:子网的地址前缀(默认值为 10.0.0.0/16)。
  5. 阅读条款和条件,并选择“我同意上述条款和条件”。

  6. 选择“购买”。

查看已部署的资源

按照以下步骤查看新 Azure Database for PostgreSQL 服务器的概览:

  1. Azure 门户中,搜索并选择“Azure Database for PostgreSQL 服务器”。

  2. 在数据库列表中选择你的新服务器。 随后会显示新 Azure Database for PostgreSQL 服务器的“概览”页。

从门户导出 ARM 模板

可从 Azure 门户导出 ARM 模板。 可以通过两种方式来导出模板:

导出模板时,将在 PostgreSQL 服务器资源的 "properties":{ } 部分中看到,出于安全原因不会包含 administratorLoginadministratorLoginPassword。 部署模板前,必须将这些参数添加到模板中,否则模板会失败。

"resources": [
    {
      "type": "Microsoft.DBforPostgreSQL/servers",
      "apiVersion": "2017-12-01",
      "name": "[parameters('servers_name')]",
      "location": "chinaeast2",
      "sku": {
                "name": "B_Gen5_1",
                "tier": "Basic",
                "family": "Gen5",
                "capacity": 1
            },
      "properties": {
        "administratorLogin": "[parameters('administratorLogin')]",
        "administratorLoginPassword": "[parameters('administratorLoginPassword')]",

清理资源

如果不再需要该资源组,可以将其删除,这将删除资源组中的资源。

  1. Azure 门户中,搜索并选择“资源组”。

  2. 在资源组列表中,选择你的资源组的名称。

  3. 在资源组的“概览”页中,选择“删除资源组” 。

  4. 在确认对话框中,键入资源组的名称,然后选择“删除”。

后续步骤

有关引导你完成模板创建过程的分步教程,请参阅: