[Azure] 我尝试使用 Azure 自动化自动缩放 SQL 数据库的 DTU。

目录
大家好,我是系统开发部的Hase。
我目前正在使用Azure提供的App Service和SQL数据库开发一个Web系统,但是当我开始操作时,我正在考虑实现自动缩放以尽可能降低成本。
但是,App Service有自动伸缩功能,但SQL Database没有这样的功能。
我想知道是否有办法做到这一点,所以我做了一些研究,发现一篇文章说您可以使用名为 Azure 自动化的功能来自动缩放 SQL 数据库。
当我实际测试时,我能够成功地自动缩放,所以我这次介绍一下如何做。
前提
SQL 数据库有多种购买模式(DTU、基于 vCore 和 Serverless),但这次我们将使用 DTU。
什么是 Azure 自动化?
- Azure 门户的一项功能,允许你自动执行任务(在 Azure 自动化中称为 Runbook)
- 可以通过指定时间(每天0:00等)定期执行
- Runbook 可以使用 PowerShell、PowerShell Workflow、Python 2 和 DSC 语言编写
实施形象
- 在 Azure 自动化中创建 powershell 格式的 SQL 数据库扩展 Runbook
- 将创建的Runbook添加到计划中,以便在指定时间自动执行Runbook
程序
添加 Azure 自动化帐户
① 登录Azure门户
② 从Azure服务中选择“自动化帐户”
③ 选择“+添加”添加自动化帐户

④ 输入自动化账户信息创建
| 姓名 | 任何名字 | 
|---|---|
| 订阅 | 选择您的订阅 | 
| 资源组 | 选择您正在使用的资源组 | 
| 地方 | 服务器区域 | 
| 创建 Azure 运行方式帐户 | 选择“是”*1 | 
 *1) 创建Azure执行帐户时请务必选择“是”⇒
*1) 创建Azure执行帐户时请务必选择“是”⇒
为了通过Runbook操作SQL数据库,需要执行帐户的批准,因此
如果选择“否”,则可以从以下位置执行SQL数据库操作操作手册变得无法。
创建后,您的自动化帐户将显示在列表中。

将模块添加到已添加的自动化帐户
添加以下模块以从 Runbook 操作 SQL 数据库(任务)
| AZ.帐户 | 用于管理所有 Azure 凭据和常见配置的模块 | 
|---|---|
| AZ.自动化 | 管理有关 Azure 自动化的信息的模块 | 
| 数据库服务器 | 具有新 cmdlet 的模块可支持最新的 SQL 功能 | 
⑤ 该模块是为每个自动化帐户设置的,因此请选择您创建的帐户。

⑥ 选择“模块库”
共享资源 > 模块库

⑦ 从模块库画面安装要注册的模块
在这里注册Az.Account模块(安装顺序无关紧要)

⑧ 将显示 Az.Accounts 模块详细信息屏幕,因此单击“导入”

⑨ 将显示导入确认屏幕,因此单击“确定”

Az.Accounts 模块导入开始
如果导入成功,屏幕右上角会显示“导入成功”的信息。
⑩ 以同样的方式导入其余模块。
创建运行手册(任务)
⑪ 从创建的自动化帐户中选择“Runbook”
流程自动化 > 操作手册

⑫ 选择“+创建 Runbook”来创建 Runbook
⑬ 输入 Runbook 信息并创建
| 姓名 | 任何名字 | 
|---|---|
| 操作手册类型 | 电源外壳 | 
| 解释 | 任何描述性文字 | 

创建的 Runbook 将显示在列表中。

 *AzureAutomationTutorial、AzureAutomationTutorialPython2 和 AzureAutomationTutorialScript 在创建 Automation 帐户时默认提供,因此我们不会使用它们。
在 Runbook 中编写代码
在创建的 Runbook 中编写执行自动缩放的流程
* 使用 PowerShell 作为语言
■ 大致实施流程
① 获取 Azure 自动化连接信息
② 使用获取的 Azure 自动化连接信息连接到您的 Azure 帐户
③ 更改 SQL 数据库规范
* 使用 PowerShell 更改 SQL 数据库规范 需要连接到 Azure 帐户才能进行更改
⑭ 选择创建的Runbook
⑮ 选择“编辑”打开代码编辑器

*在这里写下代码
⑯ 描述获取Azure自动化连接信息的过程
■ 代码
# 编写命令获取 Azure Automation 连接信息并将其分配给变量 $connection = Get-AutomationConnection -Name "{自动化帐户连接名称}"
■ 命令详细信息
| 获取自动化连接 | |
|---|---|
| 获取有关 Azure 自动化连接的信息。 | |
| 选项 | |
| -姓名 | 用于获取信息的 Azure 帐户名 | 
⑰ 您可以在“连接”中查看步骤21中的自动化帐户连接名称
共享资源 > 连接 

⑱ 使用获取的 Azure Automation 连接信息连接到您的 Azure 帐户
■ 代码
# 授权您的 Azure 帐户 Connect-AzAccount -Tenant $connection.TenantID ` -ApplicationId $connection.ApplicationID -CertificateThumbprint ` $connection.CertificateThumbprint
*如果您想在公式中间换行,请在末尾添加“`(重音符号)”。
■ 命令详细信息
| 连接-AzAccount | |
|---|---|
| 连接到您的 Azure 帐户 | |
| 选项 | |
| -租户 | Azure 自动化租户 ID | 
| -应用程序ID | Azure 自动化应用程序 ID | 
| -证书指纹 | Azure 自动化证书信息 | 
⑲ 更改SQL数据库规格
■ 代码
# 将 SQL 数据库计划更改为 S0(标准 DTU 10) Set-AzSqlDatabase -ResourceGroupName "{资源组名称}" ` -DatabaseName "{SQL 数据库名称}" -ServerName "{SQL Server 名称}" ` -Edition " Standard" -请求的服务目标名称“S0”
■ 命令详细信息
| 设置 AzSqlDatabase | |
|---|---|
| 设置 SQL 数据库属性 | |
| 选项 | |
| -资源组名称 | 正在使用的资源组 | 
| -数据库名称 | 要使用的 SQL 数据库名称 | 
| -服务器名称 | 要使用的 SQL Server 名称 | 
| -版 | 您想要更改的计划(基本、标准或高级) | 
| -请求的服务目标名称 | 描述您要更改的 DTU(例如 S1、P2 等) | 
完成的代码
结合上面的代码将得到这样的结果
# 编写命令获取 Azure 自动化连接信息并将其分配给变量 $connection = Get-AutomationConnection -Name "{自动化帐户连接名称}" # 授权 Azure 帐户 Connect-AzAccount -Tenant $connection TenantID ` -ApplicationId $connection. .ApplicationID -CertificateThumbprint ` $connection.CertificateThumbprint # 将 SQL 数据库计划更改为 S0(标准 DTU 10) Set-AzSqlDatabase -ResourceGroupName "{资源组名称}" ` -DatabaseName "{SQL 数据库名称 }" -ServerName "{SQL Server名称}" ` -版本“标准”-RequestedServiceObjectiveName“S0”
检查创建的Runbook的运行情况
⑳ 打开测试窗口,检查创建的Runbook的运行情况
在代码编辑器屏幕上选择“测试窗口”
㉑ 选择“开始”运行测试
㉒ 测试成功完成后,将显示流。

*如果测试失败,错误消息将以红色显示。
您可以确认目标 SQL 数据库计划已更改。
将创建的 Runbook 注册到计划中
将创建的 Runbook 注册到计划中,以便定期执行
*为了将 Runbook 注册到计划中,您需要发布 Runbook,以便可以在生产环境中使用。
㉓ 单击“发布”并选择“是”以发布 Runbook。

如果 Runbook 成功发布,屏幕右上角将显示一条消息。
㉔ 接下来,单击“链接到日程”以注册到日程。

㉕ 将显示日程设置屏幕,因此创建并注册新的日程。
计划 > + 创建新计划
*如果您已有计划,则无需创建计划
㉖ 输入日程的时间设定信息,点击“创建”
| 姓名 | 任何名字 | 
|---|---|
| 解释 | 任何描述性文字 | 
| 一开始 | 选择任意开始日期和时间 | 
| 时区 | 选择任意时区 | 
| 重复 | 选择“一次”或“定期” | 
| 间隔 | 可选择执行间隔(仅当您选择“重复”为“定期”时) | 
| 设置到期日期 | 选择“是”或“否” | 
| 到期日期 | 可选择到期日期和时间(仅当“到期日期设置”设置为“是”时) | 
㉗ 您创建的日程将被选中,因此单击“确定”
成功注册日程后,将显示一条蓝色背景的消息。
㉘ 计划执行后,会显示在作业列表中。
流程自动化 > 职位

概括
通过上述步骤,您将能够自动缩放 SQL 数据库。
顺便说一句,要实现横向扩展/横向扩展,您只需创建两个类似的 Runbook 并重写计划 (-RequestedServiceObjectiveName) 部分即可。
然而,问题是它只能在指定的时间执行,并且不可能使用重要的负载条件作为阈值来执行自动缩放...
如果有人知道如何执行此操作,请告诉我。如果你能让我知道,我会很高兴!
另外,这次我使用了DTU,但我认为与其他购买的型号可以以类似的方式实现,所以请尝试一下。
最后
我开设了我所属的系统开发服务网站“SEKARAKU Lab”。
 Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
 SEKARAKU 实验室: [https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)
就这样。
这次非常感谢。





![[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!](https://beyondjapan.com/cms/wp-content/uploads/2022/12/recruit_blog_banner-768x344.jpg) 
         
         
        ![[仅适用于 WordPress] 云服务器“Web Speed”](https://beyondjapan.com/cms/wp-content/uploads/2022/11/webspeed_blog_banner-768x344.png) 
        ![[便宜]网站安全自动诊断“快速扫描仪”](https://beyondjapan.com/cms/wp-content/uploads/2023/04/quick_eyecatch_blogbanner-768x345.jpg) 
        ![[预约系统开发] EDISONE定制开发服务](https://beyondjapan.com/cms/wp-content/uploads/2023/06/edisone_blog_banner-768x345.jpg) 
        ![[注册100个URL 0日元] 网站监控服务“Appmill”](https://beyondjapan.com/cms/wp-content/uploads/2021/03/Appmill_ブログバナー-768x344.png) 
        ![[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”](https://beyondjapan.com/cms/wp-content/uploads/2024/05/china-sim_blogbanner-768x345.jpg) 
         
        ![[YouTube]超越官方频道“美由丸频道”](https://beyondjapan.com/cms/wp-content/uploads/2021/07/バナー1-768x339.jpg) 
         1
1 加载中...
加载中... 
         
                           
                           
                           
                           
                           
                           
                           
                          