使用 Azure CLI 监视并缩放 Azure Database for MySQL 灵活服务器实例

适用于:Azure Database for MySQL - 灵活服务器

此示例 CLI 脚本在查询相应指标后为单一 Azure Database for MySQL 灵活服务器缩放计算、存储和 IOPS。 计算和 IOPS 可进行纵向扩展或缩减,而存储只能进行纵向扩展。

如果没有 Azure 订阅,可在开始前创建一个 Azure 试用帐户

先决条件

如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

  • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

  • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

  • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

示例脚本

登录 Azure

使用以下脚本通过其他订阅登录,将 <Subscription ID> 替换为 Azure 订阅 ID。 如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅

az cloud set -n AzureChinaCloud
az login

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

有关详细信息,请参阅设置有效的订阅登录

运行脚本

# Monitor your MySQLFlexible Server and scale compute, storage, and IOPS

# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
subscriptionId="$(az account show --query id -o tsv)"
location="China East 2"
resourceGroup="msdocs-mysql-rg-$randomIdentifier"
tag="monitor-and-scale-mysql"
server="msdocs-mysql-server-$randomIdentifier"
login="azureuser"
password="Pa$$w0rD-$randomIdentifier"
ipAddress="None"
# Specifying an IP address of 0.0.0.0 allows public access from any resources
# deployed within Azure to access your server. Setting it to "None" sets the server 
# in public access mode but does not create a firewall rule.
# For your public IP address, https://whatismyipaddress.com

echo "Using resource group $resourceGroup with login: $login, password: $password..."

# Create a resource group
echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tags $tag

# Create a MySQL Flexible server in the resource group
echo "Creating $server"
az mysql flexible-server create --name $server --resource-group $resourceGroup --location "$location" --admin-user $login --admin-password $password --public-access $ipAddress

# Optional: Add firewall rule to connect from all Azure services
# To limit to a specific IP address or address range, change start-ip-address and end-ip-address
echo "Adding firewall for IP address range"
az mysql flexible-server firewall-rule create --name $server --resource-group $resourceGroup --rule-name AllowAzureIPs --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0

# Monitor CPU percent, storage usage and IO percent

# Monitor CPU Usage metric
echo "Monitor CPU usage"
az monitor metrics list --resource "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DBforMySQL/flexibleservers/$server" --metric cpu_percent --interval PT1M

# Monitor Storage usage metric
echo "Monitor storage usage"
az monitor metrics list --resource "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DBforMySQL/flexibleservers/$server" --metric storage_used --interval PT1M

# Monitor IO Percent
echo "Monitor I/O percent"
az monitor metrics list --resource "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DBforMySQL/flexibleservers/$server" --metric io_consumption_percent --interval PT1M

# Scale up the server by provisionining to higher tier from Burstable to General purpose 4vcore
echo "Scale up to Standard_D4ds_v4"
az mysql flexible-server update --resource-group $resourceGroup --name $server --sku-name Standard_D4ds_v4 --tier GeneralPurpose

# Scale down to by provisioning to General purpose 2vcore within the same tier
echo "Scale down to Standard_D2ds_v4"
az mysql flexible-server update --resource-group $resourceGroup --name $server --sku-name Standard_D2ds_v4

# Scale up the server to provision a storage size of 64GB. Note storage size cannot be reduced.
echo "Scale up storage to 64 GB"
az mysql flexible-server update --resource-group $resourceGroup --name $server --storage-size 64

# Scale IOPS
echo "Scale IOPS to 550"
az mysql flexible-server update --resource-group $resourceGroup --name $server --iops 550

清理资源

使用 az group delete 命令删除资源组以及与其关联的所有资源 - 除非你持续需要这些资源。 其中一些资源在创建和删除时可能要稍等片刻。

az group delete --name $resourceGroup

示例参考

此脚本使用以下命令。 表中的每条命令均链接到特定于命令的文档。

命令 说明
az group create 创建用于存储所有资源的资源组
az mysql flexible-server create 创建托管数据库的灵活服务器。
az monitor metrics list 列出资源的 Azure Monitor 指标值。
az mysql flexible-server update 更新灵活服务器的属性。
az mysql flexible-server delete 删除灵活服务器。
az group delete 删除资源组,包括所有嵌套的资源。

后续步骤