Rychlý start: Vytvoření instance flexibilního serveru Azure Database for MySQL pomocí Azure Resource Manageru
PLATÍ PRO: Flexibilní server Azure Database for MySQL
Flexibilní server Azure Database for MySQL je spravovaná služba, kterou používáte ke spouštění, správě a škálování vysoce dostupných databází MySQL v cloudu. Šablonu Azure Resource Manageru (šablona ARM) můžete použít ke zřízení flexibilního serveru Azure Database for MySQL pro nasazení více serverů nebo nasazení více databází na server.
Šablona Azure Resource Manageru je soubor JSON (JavaScript Object Notation), který definuje infrastrukturu a konfiguraci projektu. Tato šablona používá deklarativní syntaxi. Popíšete zamýšlené nasazení, aniž byste museli psát posloupnost programovacích příkazů pro vytvoření nasazení.
Požadavky
- Účet Azure s aktivním předplatným.
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure, než začnete. V současné době můžete s bezplatným účtem Azure vyzkoušet flexibilní server Azure Database for MySQL zdarma po dobu 12 měsíců. Další informace najdete v tématu Bezplatné vyzkoušení flexibilního serveru Azure Database for MySQL.
Vytvoření serveru s veřejným přístupem
Pokud chcete vytvořit instanci flexibilního serveru Azure Database for MySQL pomocí metody připojení veřejného přístupu a vytvořit databázi na serveru, vytvořte soubor azuredeploy.json , který obsahuje následující příklady kódu. V případě potřeby aktualizujte výchozí hodnotu pro 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'))]"
]
}
]
}
Vytvoření serveru s privátním přístupem
Upravte následující příklady kódu a vytvořte flexibilní server Azure Database for MySQL, který má připojení privátního přístupu ve virtuální síti:
{
"$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')]"
}
}
}
Nasazení šablony
Nasaďte soubor JSON pomocí Azure CLI nebo Azure PowerShellu.
az group create --name exampleRG --location eastus
az deployment group create --resource-group exampleRG --template-file azuredeploy.json
Dokončete kroky pro zadání hodnot parametrů. Po dokončení nasazení se zobrazí zpráva, že nasazení proběhlo úspěšně.
Kontrola nasazených prostředků
Ověření vytvoření flexibilního serveru Azure Database for MySQL ve skupině prostředků:
az resource list --resource-group exampleRG
Vyčištění prostředků
Odstranění skupiny prostředků a všech prostředků, které jsou ve skupině prostředků:
az group delete --name exampleRG
Související obsah
- Podrobný kurz, který vás provede procesem vytvoření šablony ARM, najdete v tématu Kurz: Vytvoření a nasazení první šablony ARM.
- Podrobný kurz, který ukazuje, jak sestavit aplikaci pomocí služby Aplikace Azure Service a MySQL, najdete v tématu Vytvoření webové aplikace PHP (Laravel) pomocí MySQL.