Azure Database for MySQL 是一种托管服务,可用于在云中运行、管理和缩放具有高可用性的 MySQL 数据库。 本快速入门介绍如何使用 Bicep 创建集成了虚拟网络的 Azure Database for MySQL 服务器。 可通过 Azure 门户、Azure CLI 或 Azure PowerShell 创建该服务器。
Bicep 是一种特定于域的语言 (DSL),使用声明性语法来部署 Azure 资源。 它提供简明的语法、可靠的类型安全性以及对代码重用的支持。 Bicep 会针对你的 Azure 基础结构即代码解决方案提供最佳创作体验。
需要一个具有活动订阅的 Azure 帐户。 创建一个试用帐户。
- 若要在本地运行代码,请安装 Azure PowerShell。
你将使用所定义的一组计算和存储资源创建 Azure Database for MySQL 服务器。 若要了解详细信息,请参阅 Azure Database for MySQL 定价层。 请在 Azure 资源组中创建该服务器。
本快速入门中使用的 Bicep 文件来自 Azure 快速入门模板。
@description('Server Name for Azure database for MySQL')
param serverName string
@description('Database administrator login name')
@minLength(1)
param administratorLogin string
@description('Database administrator password')
@minLength(8)
@secure()
param administratorLoginPassword string
@description('Azure database for MySQL compute capacity in vCores (2,4,8,16,32)')
param skuCapacity int = 2
@description('Azure database for MySQL sku name ')
param skuName string = 'GP_Gen5_2'
@description('Azure database for MySQL Sku Size ')
param SkuSizeMB int = 5120
@description('Azure database for MySQL pricing tier')
@allowed([
'Basic'
'GeneralPurpose'
'MemoryOptimized'
])
param SkuTier string = 'GeneralPurpose'
@description('Azure database for MySQL sku family')
param skuFamily string = 'Gen5'
@description('MySQL version')
@allowed([
'5.6'
'5.7'
'8.0'
])
param mysqlVersion string = '8.0'
@description('Location for all resources.')
param location string = resourceGroup().location
@description('MySQL Server backup retention days')
param backupRetentionDays int = 7
@description('Geo-Redundant Backup setting')
param geoRedundantBackup string = 'Disabled'
@description('Virtual Network Name')
param virtualNetworkName string = 'azure_mysql_vnet'
@description('Subnet Name')
param subnetName string = 'azure_mysql_subnet'
@description('Virtual Network RuleName')
param virtualNetworkRuleName string = 'AllowSubnet'
@description('Virtual Network Address Prefix')
param vnetAddressPrefix string = '10.0.0.0/16'
@description('Subnet Address Prefix')
param subnetPrefix string = '10.0.0.0/16'
var 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'
}
]
resource vnet 'Microsoft.Network/virtualNetworks@2021-05-01' = {
name: virtualNetworkName
location: location
properties: {
addressSpace: {
addressPrefixes: [
vnetAddressPrefix
]
}
}
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2021-05-01' = {
parent: vnet
name: subnetName
properties: {
addressPrefix: subnetPrefix
}
}
resource mysqlDbServer 'Microsoft.DBforMySQL/servers@2017-12-01' = {
name: serverName
location: location
sku: {
name: skuName
tier: SkuTier
capacity: skuCapacity
size: '${SkuSizeMB}' //a string is expected here but a int for the storageProfile...
family: skuFamily
}
properties: {
createMode: 'Default'
version: mysqlVersion
administratorLogin: administratorLogin
administratorLoginPassword: administratorLoginPassword
storageProfile: {
storageMB: SkuSizeMB
backupRetentionDays: backupRetentionDays
geoRedundantBackup: geoRedundantBackup
}
}
resource virtualNetworkRule 'virtualNetworkRules@2017-12-01' = {
name: virtualNetworkRuleName
properties: {
virtualNetworkSubnetId: subnet.id
ignoreMissingVnetServiceEndpoint: true
}
}
}
@batchSize(1)
resource firewallRules 'Microsoft.DBforMySQL/servers/firewallRules@2017-12-01' = [for rule in firewallrules: {
name: '${mysqlDbServer.name}/${rule.Name}'
properties: {
startIpAddress: rule.StartIpAddress
endIpAddress: rule.EndIpAddress
}
}]
Bicep 文件定义了五个 Azure 资源:
- Microsoft.Network/virtualNetworks
- Microsoft.Network/virtualNetworks/subnets
- Microsoft.DBforMySQL/servers
- Microsoft.DBforMySQL/servers/virtualNetworkRules
- Microsoft.DBforMySQL/servers/firewallRules
将该 Bicep 文件另存为本地计算机上的 main.bicep。
使用 Azure CLI 或 Azure PowerShell 来部署该 Bicep 文件。
New-AzResourceGroup -Name exampleRG -Location chinaeast2 New-AzResourceGroupDeployment -ResourceGroupName exampleRG -TemplateFile ./main.bicep -serverName "<server-name>" -administratorLogin "<admin-login>"
备注
将 <server-name> 替换为 Azure Database for MySQL 的服务器名称。 请将 <admin-login> 替换为数据库管理员登录名。 系统还会提示输入 administratorLoginPassword。 最小密码长度为 8 个字符。
部署完成后,应会看到一条指出部署成功的消息。
使用 Azure 门户、Azure CLI 或 Azure PowerShell 列出资源组中已部署的资源。
Get-AzResource -ResourceGroupName exampleRG
如果不再需要资源组及其资源,请使用 Azure 门户、Azure CLI 或 Azure PowerShell 将其删除。
Remove-AzResourceGroup -Name exampleRG