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

适用于:Azure Database for MySQL - 单一服务器

重要

Azure Database for MySQL 单一服务器即将停用。 强烈建议升级到 Azure Database for MySQL 灵活服务器。 有关如何迁移到 Azure Database for MySQL 灵活服务器的详细信息,请参阅 Azure Database for MySQL 单一服务器发生了什么情况?

Azure Database for MySQL 是一种托管服务,可用于在云中运行、管理和缩放具有高可用性的 MySQL 数据库。 本快速入门介绍了如何使用 Azure 资源管理器模板(ARM 模板)创建一个带有虚拟网络集成的 Azure Database for MySQL 服务器。 可通过 Azure 门户、Azure CLI 或 Azure PowerShell 创建该服务器。

资源管理器模板是定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。 模板使用声明性语法。 在声明性语法中,你可以在不编写创建部署的编程命令序列的情况下,描述预期部署。

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

用于将资源管理器模板部署到 Azure 的按钮。

先决条件

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

查看模板

你将使用所定义的一组计算和存储资源创建 Azure Database for MySQL 服务器。 若要了解详细信息,请参阅 Azure Database for MySQL 定价层。 请在 Azure 资源组中创建该服务器。

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

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.5.6.12127",
      "templateHash": "7949891959208359208"
    }
  },
  "parameters": {
    "serverName": {
      "type": "string",
      "metadata": {
        "description": "Server Name for Azure database for MySQL"
      }
    },
    "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 MySQL compute capacity in vCores (2,4,8,16,32)"
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "GP_Gen5_2",
      "metadata": {
        "description": "Azure database for MySQL sku name "
      }
    },
    "SkuSizeMB": {
      "type": "int",
      "defaultValue": 5120,
      "metadata": {
        "description": "Azure database for MySQL Sku Size "
      }
    },
    "SkuTier": {
      "type": "string",
      "defaultValue": "GeneralPurpose",
      "allowedValues": [
        "Basic",
        "GeneralPurpose",
        "MemoryOptimized"
      ],
      "metadata": {
        "description": "Azure database for MySQL pricing tier"
      }
    },
    "skuFamily": {
      "type": "string",
      "defaultValue": "Gen5",
      "metadata": {
        "description": "Azure database for MySQL sku family"
      }
    },
    "mysqlVersion": {
      "type": "string",
      "defaultValue": "8.0",
      "allowedValues": [
        "5.6",
        "5.7",
        "8.0"
      ],
      "metadata": {
        "description": "MySQL version"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "backupRetentionDays": {
      "type": "int",
      "defaultValue": 7,
      "metadata": {
        "description": "MySQL Server backup retention days"
      }
    },
    "geoRedundantBackup": {
      "type": "string",
      "defaultValue": "Disabled",
      "metadata": {
        "description": "Geo-Redundant Backup setting"
      }
    },
    "virtualNetworkName": {
      "type": "string",
      "defaultValue": "azure_mysql_vnet",
      "metadata": {
        "description": "Virtual Network Name"
      }
    },
    "subnetName": {
      "type": "string",
      "defaultValue": "azure_mysql_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": [
      {
        "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.DBforMySQL/servers/virtualNetworkRules",
      "apiVersion": "2017-12-01",
      "name": "[format('{0}/{1}', parameters('serverName'), parameters('virtualNetworkRuleName'))]",
      "properties": {
        "virtualNetworkSubnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]",
        "ignoreMissingVnetServiceEndpoint": true
      },
      "dependsOn": [
        "[resourceId('Microsoft.DBforMySQL/servers', parameters('serverName'))]",
        "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]"
      ]
    },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2021-05-01",
      "name": "[parameters('virtualNetworkName')]",
      "location": "[parameters('location')]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('vnetAddressPrefix')]"
          ]
        }
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks/subnets",
      "apiVersion": "2021-05-01",
      "name": "[format('{0}/{1}', parameters('virtualNetworkName'), parameters('subnetName'))]",
      "properties": {
        "addressPrefix": "[parameters('subnetPrefix')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]"
      ]
    },
    {
      "type": "Microsoft.DBforMySQL/servers",
      "apiVersion": "2017-12-01",
      "name": "[parameters('serverName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('skuName')]",
        "tier": "[parameters('SkuTier')]",
        "capacity": "[parameters('skuCapacity')]",
        "size": "[format('{0}', parameters('SkuSizeMB'))]",
        "family": "[parameters('skuFamily')]"
      },
      "properties": {
        "createMode": "Default",
        "version": "[parameters('mysqlVersion')]",
        "administratorLogin": "[parameters('administratorLogin')]",
        "administratorLoginPassword": "[parameters('administratorLoginPassword')]",
        "storageProfile": {
          "storageMB": "[parameters('SkuSizeMB')]",
          "backupRetentionDays": "[parameters('backupRetentionDays')]",
          "geoRedundantBackup": "[parameters('geoRedundantBackup')]"
        }
      }
    },
    {
      "copy": {
        "name": "firewallRules",
        "count": "[length(variables('firewallrules'))]",
        "mode": "serial",
        "batchSize": 1
      },
      "type": "Microsoft.DBforMySQL/servers/firewallRules",
      "apiVersion": "2017-12-01",
      "name": "[format('{0}/{1}', parameters('serverName'), variables('firewallrules')[copyIndex()].Name)]",
      "properties": {
        "startIpAddress": "[variables('firewallrules')[copyIndex()].StartIpAddress]",
        "endIpAddress": "[variables('firewallrules')[copyIndex()].EndIpAddress]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.DBforMySQL/servers', parameters('serverName'))]"
      ]
    }
  ]
}

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

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

部署模板

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

用于将资源管理器模板部署到 Azure 的按钮。

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

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

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

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

    “部署具有 VNet 的 Azure Database for MySQL”窗口,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 MySQL 服务器的存储大小,以 MB 为单位(默认值为 5120)。
    • SKU 层:部署层,例如“基本”、“常规用途”(默认值)或“内存优化” 。
    • SKU 系列:“Gen4”或“Gen5”(默认值),表示服务器部署的硬件代系 。
    • Mysql 版本:要部署的 MySQL 服务器版本,例如 5.6 或 5.7(默认值) 。
    • 备份保留天数:异地冗余备份的所需保留期,以天为单位(默认值为 7)。
    • 异地冗余备份:“已启用”或“已禁用”(默认值),具体取决于异地灾难恢复 (Geo-DR) 要求 。
    • 虚拟网络名称:虚拟网络的名称(默认值为 azure_mysql_vnet)。
    • 子网名称:子网的名称(默认值为 azure_mysql_subnet)。
    • 虚拟网络规则名称:允许子网的虚拟网络规则的名称(默认值为 AllowSubnet)。
    • VNet 地址前缀:虚拟网络的地址前缀(默认值为 10.0.0.0/16)。
    • 子网前缀:子网的地址前缀(默认值为 10.0.0.0/16)。
  5. 阅读条款和条件,并选择“我同意上述条款和条件”。

  6. 选择“购买”。

查看已部署的资源

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

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

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

从门户导出 ARM 模板

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

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

"resources": [
    {
      "type": "Microsoft.DBforMySQL/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. 在确认对话框中,键入资源组的名称,然后选择“删除”。

后续步骤

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