Azure Database for MySQL은 클라우드에서 고가용성 MySQL 데이터베이스를 실행, 관리 및 확장하는 데 사용하는 관리형 서비스입니다. 이 빠른 시작에서는 Bicep를 사용하여 가상 네트워크 통합이 포함된 Azure Database for MySQL 서버를 만듭니다. Azure Portal, Azure CLI 또는 Azure PowerShell에서 서버를 만들 수 있습니다.
Bicep은 선언적 구문을 사용하여 Azure 리소스를 배포하는 DSL(도메인 특정 언어)입니다. 간결한 구문, 신뢰할 수 있는 형식 안전성 및 코드 다시 사용에 대한 지원을 제공합니다. Bicep은 Azure에서 코드형 인프라 솔루션에 대한 최고의 제작 환경을 제공합니다.
필수 조건
활성 구독이 있는 Azure 계정이 필요합니다. 체험 계정 만들기
- Azure PowerShell(코드를 로컬로 실행하려는 경우)
Bicep 파일 검토
정의된 컴퓨팅 및 스토리지 리소스 세트를 사용하여 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@2023-09-01' = {
name: virtualNetworkName
location: location
properties: {
addressSpace: {
addressPrefixes: [
vnetAddressPrefix
]
}
}
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2023-09-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
}
minimalTlsVersion: 'TLS1_2'
sslEnforcement: 'Enabled'
}
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: {
parent: mysqlDbServer
name: rule.Name
properties: {
startIpAddress: rule.StartIpAddress
endIpAddress: rule.EndIpAddress
}
}]
output location string = location
output name string = mysqlDbServer.name
output resourceGroupName string = resourceGroup().name
output resourceId string = mysqlDbServer.id
Bicep 파일은 5개의 Azure 리소스를 정의합니다.
- Microsoft.Network/virtualNetworks
- Microsoft.Network/virtualNetworks/subnets
- Microsoft.DBforMySQL/servers
- Microsoft.DBforMySQL/servers/virtualNetworkRules
- Microsoft.DBforMySQL/servers/firewallRules
Bicep 파일 배포
Bicep 파일을 main.bicep으로 로컬 컴퓨터에 저장합니다.
Azure CLI 또는 Azure PowerShell을 사용하여 Bicep 파일을 배포합니다.
New-AzResourceGroup -Name exampleRG -Location eastus New-AzResourceGroupDeployment -ResourceGroupName exampleRG -TemplateFile ./main.bicep -serverName "<server-name>" -administratorLogin "<admin-login>"참고 항목
<server-name>을 Azure Database for MySQL의 서버 이름으로 바꿉니다. <admin-login>을 데이터베이스 관리자 로그인 이름으로 바꿉니다. 또한 administratorLoginPassword를 입력하라는 메시지가 표시됩니다. 최소 암호 길이는 8자입니다.
배포가 완료되면 배포에 성공했음을 나타내는 메시지가 표시됩니다.
배포된 리소스 검토
Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 리소스 그룹에 배포된 리소스를 나열합니다.
Get-AzResource -ResourceGroupName exampleRG
리소스 정리
더 이상 필요 없으면 Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 리소스 그룹 및 해당 리소스를 삭제합니다.
Remove-AzResourceGroup -Name exampleRG