你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:使用 Azure 资源管理器创建 Azure Database for MySQL 灵活服务器的实例
Azure Database for MySQL 灵活服务器是一种托管服务,可用于在云中运行、管理和缩放具有高可用性的 MySQL 数据库。 可使用 Azure 资源管理器模板(ARM 模板)来预配 Azure Database for MySQL 灵活服务器,以便部署多个服务器或在一个服务器上部署多个数据库。
Azure 资源管理器模板是定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。 模板使用声明性语法。 你可以在不编写用于创建部署的编程命令序列的情况下,描述预期部署。
先决条件
- 具有活动订阅的 Azure 帐户。
如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户。 目前,通过 Azure 免费帐户,可以在 12 个月内免费试用 Azure Database for MySQL - 灵活服务器。 有关详细信息,请参阅使用 Azure 免费帐户免费试用 Azure Database for MySQL - 灵活服务器。
创建具有公共访问权限的服务器
若要使用公共访问连接方法创建 Azure Database for MySQL 灵活服务器实例,并在服务器上创建数据库,请创建一个具有以下代码示例的 azuredeploy.json 文件。 必要时,更改 firewallRules
的默认值。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"resourceNamePrefix": {
"type": "string",
"metadata": {
"description": "Provide a prefix for creating resource names."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"administratorLogin": {
"type": "string"
},
"administratorLoginPassword": {
"type": "securestring"
},
"firewallRules": {
"type": "array",
"defaultValue": [
{
"name": "rule1",
"startIPAddress": "192.168.0.1",
"endIPAddress": "192.168.0.255"
},
{
"name": "rule2",
"startIPAddress": "192.168.1.1",
"endIPAddress": "192.168.1.255"
}
]
},
"serverEdition": {
"type": "string",
"defaultValue": "Burstable",
"allowedValues": [
"Burstable",
"GeneralPurpose",
"MemoryOptimized"
],
"metadata": {
"description": "The tier of the specific SKU. High availability is available only for GeneralPurpose and MemoryOptimized SKUs."
}
},
"version": {
"type": "string",
"defaultValue": "8.0.21",
"allowedValues": [
"5.7",
"8.0.21"
],
"metadata": {
"description": "Server version"
}
},
"availabilityZone": {
"type": "string",
"defaultValue": "1",
"metadata": {
"description": "The availability zone information of the server. (If you don't have a preference, leave this setting blank.)"
}
},
"haEnabled": {
"type": "string",
"defaultValue": "Disabled",
"allowedValues": [
"Disabled",
"SameZone",
"ZoneRedundant"
],
"metadata": {
"description": "High availability mode for a server: Disabled, SameZone, or ZoneRedundant."
}
},
"standbyAvailabilityZone": {
"type": "string",
"defaultValue": "2",
"metadata": {
"description": "The availability zone of the standby server."
}
},
"storageSizeGB": {
"type": "int",
"defaultValue": 20
},
"storageIops": {
"type": "int",
"defaultValue": 360
},
"storageAutogrow": {
"type": "string",
"defaultValue": "Enabled",
"allowedValues": [
"Enabled",
"Disabled"
]
},
"skuName": {
"type": "string",
"defaultValue": "Standard_B1ms",
"metadata": {
"description": "The name of the SKU. For example, Standard_D32ds_v4."
}
},
"backupRetentionDays": {
"type": "int",
"defaultValue": 7
},
"geoRedundantBackup": {
"type": "string",
"defaultValue": "Disabled",
"allowedValues": [
"Disabled",
"Enabled"
]
},
"serverName": {
"type": "string",
"defaultValue": "[format('{0}mysqlserver', parameters('resourceNamePrefix'))]"
},
"databaseName": {
"type": "string",
"defaultValue": "[format('{0}mysqldb', parameters('resourceNamePrefix'))]"
}
},
"resources": [
{
"type": "Microsoft.DBforMySQL/flexibleServers",
"apiVersion": "2021-12-01-preview",
"name": "[parameters('serverName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('skuName')]",
"tier": "[parameters('serverEdition')]"
},
"properties": {
"version": "[parameters('version')]",
"administratorLogin": "[parameters('administratorLogin')]",
"administratorLoginPassword": "[parameters('administratorLoginPassword')]",
"availabilityZone": "[parameters('availabilityZone')]",
"highAvailability": {
"mode": "[parameters('haEnabled')]",
"standbyAvailabilityZone": "[parameters('standbyAvailabilityZone')]"
},
"storage": {
"storageSizeGB": "[parameters('storageSizeGB')]",
"iops": "[parameters('storageIops')]",
"autoGrow": "[parameters('storageAutogrow')]"
},
"backup": {
"backupRetentionDays": "[parameters('backupRetentionDays')]",
"geoRedundantBackup": "[parameters('geoRedundantBackup')]"
}
}
},
{
"type": "Microsoft.DBforMySQL/flexibleServers/databases",
"apiVersion": "2021-12-01-preview",
"name": "[format('{0}/{1}', parameters('serverName'), parameters('databaseName'))]",
"properties": {
"charset": "utf8",
"collation": "utf8_general_ci"
},
"dependsOn": [
"[resourceId('Microsoft.DBforMySQL/flexibleServers', parameters('serverName'))]"
]
},
{
"copy": {
"name": "createFirewallRules",
"count": "[length(range(0, if(greater(length(parameters('firewallRules')), 0), length(parameters('firewallRules')), 1)))]",
"mode": "serial",
"batchSize": 1
},
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "[format('firewallRules-{0}', range(0, if(greater(length(parameters('firewallRules')), 0), length(parameters('firewallRules')), 1))[copyIndex()])]",
"properties": {
"expressionEvaluationOptions": {
"scope": "inner"
},
"mode": "Incremental",
"parameters": {
"ip": {
"value": "[parameters('firewallRules')[range(0, if(greater(length(parameters('firewallRules')), 0), length(parameters('firewallRules')), 1))[copyIndex()]]]"
},
"serverName": {
"value": "[parameters('serverName')]"
}
},
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"serverName": {
"type": "string"
},
"ip": {
"type": "object"
}
},
"resources": [
{
"type": "Microsoft.DBforMySQL/flexibleServers/firewallRules",
"apiVersion": "2021-12-01-preview",
"name": "[format('{0}/{1}', parameters('serverName'), parameters('ip').name)]",
"properties": {
"startIpAddress": "[parameters('ip').startIPAddress]",
"endIpAddress": "[parameters('ip').endIPAddress]"
}
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.DBforMySQL/flexibleServers', parameters('serverName'))]"
]
}
]
}
创建具有专用访问权限的服务器
修改以下代码示例,以便创建在虚拟网络中具有专用访问连接的 Azure Database for MySQL 灵活服务器:
{
"$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 MySQL"
}
},
"dnsZoneName": {
"type": "string",
"metadata": {
"description": "Name for DNS Private Zone"
}
},
"dnsZoneFqdn": {
"type": "string",
"defaultValue": "[format('{0}.private.mysql.database.azure.com', parameters('dnsZoneName'))]",
"metadata": {
"description": "Fully Qualified DNS Private Zone"
}
},
"administratorLogin": {
"type": "string",
"minLength": 1,
"metadata": {
"description": "Database administrator login name"
}
},
"administratorLoginPassword": {
"type": "securestring",
"minLength": 8,
"metadata": {
"description": "Database administrator password"
}
},
"skuName": {
"type": "string",
"defaultValue": "Standard_B2s",
"metadata": {
"description": "Azure database for MySQL sku name "
}
},
"availabilityZone": {
"type": "string",
"defaultValue": "1",
"metadata": {
"description": "The availability zone information of the server. (If you don't have a preference, leave this setting blank.)"
}
},
"haEnabled": {
"type": "string",
"defaultValue": "Disabled",
"allowedValues": [
"Disabled",
"SameZone",
"ZoneRedundant"
],
"metadata": {
"description": "High availability mode for a server: Disabled, SameZone, or ZoneRedundant."
}
},
"standbyAvailabilityZone": {
"type": "string",
"defaultValue": "2",
"metadata": {
"description": "The availability zone of the standby server."
}
},
"StorageSizeGB": {
"type": "int",
"defaultValue": 20,
"metadata": {
"description": "Azure database for MySQL storage Size "
}
},
"StorageIops": {
"type": "int",
"defaultValue": 1280,
"metadata": {
"description": "Azure database for MySQL storage Iops"
}
},
"SkuTier": {
"type": "string",
"defaultValue": "Burstable",
"allowedValues": [
"GeneralPurpose",
"MemoryOptimized",
"Burstable"
],
"metadata": {
"description": "Azure database for MySQL pricing tier"
}
},
"mysqlVersion": {
"type": "string",
"defaultValue": "8.0.21",
"allowedValues": [
"5.7",
"8.0.21"
],
"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",
"allowedValues": [
"Disabled",
"Enabled"
],
"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"
}
},
"vnetAddressPrefix": {
"type": "string",
"defaultValue": "10.0.0.0/24",
"metadata": {
"description": "Virtual Network Address Prefix"
}
},
"mySqlSubnetPrefix": {
"type": "string",
"defaultValue": "10.0.0.0/28",
"metadata": {
"description": "Subnet Address Prefix"
}
}
},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2023-09-01",
"name": "[format('{0}/{1}', parameters('virtualNetworkName'), parameters('subnetName'))]",
"properties": {
"addressPrefix": "[parameters('mySqlSubnetPrefix')]",
"delegations": [
{
"name": "dlg-Microsoft.DBforMySQL-flexibleServers",
"properties": {
"serviceName": "Microsoft.DBforMySQL/flexibleServers"
}
}
],
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]"
]
},
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2023-09-01",
"name": "[parameters('virtualNetworkName')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('vnetAddressPrefix')]"
]
}
}
},
{
"type": "Microsoft.Network/privateDnsZones",
"apiVersion": "2020-06-01",
"name": "[parameters('dnsZoneFqdn')]",
"location": "global"
},
{
"type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
"apiVersion": "2020-06-01",
"name": "[format('{0}/{1}', parameters('dnsZoneFqdn'), parameters('virtualNetworkName'))]",
"location": "global",
"properties": {
"registrationEnabled": false,
"virtualNetwork": {
"id": "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/privateDnsZones', parameters('dnsZoneFqdn'))]",
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]"
]
},
{
"type": "Microsoft.DBforMySQL/flexibleServers",
"apiVersion": "2023-12-01-preview",
"name": "[parameters('serverName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('skuName')]",
"tier": "[parameters('SkuTier')]"
},
"properties": {
"administratorLogin": "[parameters('administratorLogin')]",
"administratorLoginPassword": "[parameters('administratorLoginPassword')]",
"storage": {
"autoGrow": "Enabled",
"iops": "[parameters('StorageIops')]",
"storageSizeGB": "[parameters('StorageSizeGB')]"
},
"createMode": "Default",
"version": "[parameters('mysqlVersion')]",
"backup": {
"backupRetentionDays": "[parameters('backupRetentionDays')]",
"geoRedundantBackup": "[parameters('geoRedundantBackup')]"
},
"availabilityZone": "[parameters('availabilityZone')]",
"highAvailability": {
"mode": "[parameters('haEnabled')]",
"standbyAvailabilityZone": "[parameters('standbyAvailabilityZone')]"
},
"network": {
"delegatedSubnetResourceId": "[format('{0}/subnets/{1}', reference(resourceId('Microsoft.Network/privateDnsZones/virtualNetworkLinks', parameters('dnsZoneFqdn'), parameters('virtualNetworkName')), '2020-06-01').virtualNetwork.id, parameters('subnetName'))]",
"privateDnsZoneResourceId": "[resourceId('Microsoft.Network/privateDnsZones', parameters('dnsZoneFqdn'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/privateDnsZones', parameters('dnsZoneFqdn'))]",
"[resourceId('Microsoft.Network/privateDnsZones/virtualNetworkLinks', parameters('dnsZoneFqdn'), parameters('virtualNetworkName'))]"
]
}
],
"outputs": {
"location": {
"type": "string",
"value": "[parameters('location')]"
},
"name": {
"type": "string",
"value": "[parameters('serverName')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.DBforMySQL/flexibleServers', parameters('serverName'))]"
},
"mysqlHostname": {
"type": "string",
"value": "[format('{0}.{1}', parameters('serverName'), parameters('dnsZoneFqdn'))]"
},
"mysqlSubnetId": {
"type": "string",
"value": "[format('{0}/subnets/{1}', reference(resourceId('Microsoft.Network/privateDnsZones/virtualNetworkLinks', parameters('dnsZoneFqdn'), parameters('virtualNetworkName')), '2020-06-01').virtualNetwork.id, parameters('subnetName'))]"
},
"vnetId": {
"type": "string",
"value": "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]"
},
"privateDnsId": {
"type": "string",
"value": "[resourceId('Microsoft.Network/privateDnsZones', parameters('dnsZoneFqdn'))]"
},
"privateDnsName": {
"type": "string",
"value": "[parameters('dnsZoneFqdn')]"
}
}
}
部署模板
使用 Azure CLI 或 Azure PowerShell 来部署 JSON 文件。
az group create --name exampleRG --location eastus
az deployment group create --resource-group exampleRG --template-file azuredeploy.json
完成输入参数值的步骤。 部署完成后,会显示一条指示部署成功的消息。
查看已部署的资源
若要验证是否已在资源组中创建了 Azure Database for MySQL 灵活服务器,请执行以下操作:
az resource list --resource-group exampleRG
清理资源
若要删除资源组和资源组中的所有资源,请执行以下操作:
az group delete --name exampleRG