你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn 。
将现有数据库转换为“超大规模”
本文内容
可以使用 Azure 门户、Azure CLI、PowerShell 或 Transact-SQL 将 Azure SQL 数据库中的现有数据库转换为“超大规模”。
切换
转换过程分为两个阶段-数据库转换,在现有数据库处于联机状态时发生,然后直接切换到新的“超大规模”数据库。
将现有数据库移动到“超大规模”所需的时间包括复制数据的时间,以及复制数据时重播源数据库中所做的更改的时间。 数据复制时间与数据大小成正比。 建议在写入活动较低的时期转换到“超大规模”,以缩短重播累积更改所需的时间。
在最终转换到“超大规模”时,您只会经历短暂的停机时间,通常不到一分钟。 你可以选择切换发生的时间——一旦数据库准备就绪,或在您选择的时间手动进行。 默认情况下,转换为 Hyperscale 的过程将自动转换。
注意
手动切换至超大规模转换的功能是一项预览功能。
在当前预览版中,当数据库准备好进行直接转换后的三天内,您可以启动手动“超大规模”转换。 可以通过 Azure 门户、Azure CLI、PowerShell 或 T-SQL 启动手动切换。
先决条件
若要将作为 异地复制 关系的一部分的数据库转换为“超大规模”,需要首先终止主副本和辅助副本之间的异地复制。 必须先从组中删除 故障转移组中的数据库 。
将数据库移动到“超大规模”后,可以为该数据库创建新的“超大规模”异地副本,或将数据库添加到故障转移组。
不支持从基本服务层级直接转换为“超大规模”。 若要执行此转换,请先将数据库更改为“基本”以外的任何服务层级(例如“常规用途”),然后继续转换为“超大规模”。
将数据库转换为Hyperscale
若要将现有 Azure SQL 数据库转换为“超大规模”,请先确定目标服务目标。
如果不确定哪个服务目标适合数据库,请查看 单一数据库的资源限制 。 在许多情况下,可以选择一个服务目标,其 vCore 数相同,硬件生成与原始数据库相同。 如果需要,可以稍后 更改服务目标 ,并将停机时间降到最低。 只有在切换后,超大规模的计费才开始。
选择首选方法的选项卡以转换数据库:
在 Azure 门户中,您可以通过修改数据库的服务层,将其转换为“超大规模”。
导航到希望在 Azure 门户中转换的数据库。
在左侧导航栏中,选择“计算 + 存储” 。
选择 服务层 下拉列表以展开服务层级的选项。
如果您使用的是 Azure SQL 数据库免费套餐 ,请选择按钮以移除 免费数据库套餐 。 然后,你将看到 服务层 下拉列表。
从下拉列表中选择 超大规模 。
查看 计算层级 并选择 预配置 或 无服务器 。
查看 切换模式 ,这是特定于转换为超大规模的选项。
在数据库准备好转换为Hyperscale后进行切换。
切换模式 确定何时将暂时中断与现有 Azure SQL 数据库的连接,以便转换为超大规模。
自动切换 在超大规模数据库准备就绪后立即完成切换。
手动切换 会提示你在 Azure 门户中自行选择时间启动切换。 此选项最适用于安排转换时间,以尽量减少业务中断。
查看列出的 硬件配置 。 如果需要,请选择 更改配置 ,以选择适合您工作负荷的硬件配置。
如果要更改“超大规模”服务层级下数据库可用的 vCore 数,请选择 vCore 滑块。
如果要更改“超大规模”服务层级下的副本数,请选择 High-Availability 次要副本 滑块。
选择 应用 。
在 Azure 门户中监视转换。
在 Azure 门户中导航到数据库。
在左侧导航栏中,选择 概述 。
查看右窗格底部 通知 章节。 如果操作正在进行,将显示一个通知框。
选择通知框以查看详细信息。
此时将打开 正在进行的操作 窗格。 查看正在进行的作业的详细信息。
如果选择了 手动切换 ,Azure 门户将在准备就绪时显示 切换 按钮。
此代码示例调用 az sql db update 将现有 Azure SQL 数据库转换为“超大规模”。 必须同时指定版本和服务目标。 运行以下代码示例之前,请将 resourceGroupName
、serverName
、databaseName
和 serviceObjective
替换为相应的值:
resourceGroupName="myResourceGroup"
serverName="server01"
databaseName="mySampleDatabase"
serviceObjective="HS_Gen5_2"
az sql db update -g $resourceGroupName -s $serverName -n $databaseName \
--edition Hyperscale --service-objective $serviceObjective
使用 --manual-cutover
选择在所选时间手动启动“超大规模”转换。 此选项最有用,可以在不打扰业务的情况下安排最佳切换时间。 例如:
resourceGroupName="myResourceGroup"
serverName="server01"
databaseName="mySampleDatabase"
serviceObjective="HS_Gen5_2"
az sql db update -g $resourceGroupName -s $serverName -n $databaseName --edition Hyperscale --service-objective $serviceObjective --manual-cutover
使用 az sql db op list 监视正在进行的操作,以获取或返回 Azure SQL 数据库中最近或正在进行的操作。
resourceGroupName="myResourceGroup"
serverName="server01"
databaseName="mySampleDatabase"
az sql db op list -g $resourceGroupName -s $serverName -n $databaseName
一旦超大规模数据库准备好,使用 --perform-cutover
启动切换(在 3 天内完成切换)
az sql db update -g $resourceGroupName -s $serverName -n $databaseName --perform-cutover
以下示例使用 Set-AzSqlDatabase cmdlet 将现有 Azure SQL 数据库转换为“超大规模”。 必须同时指定版本和服务目标。 运行此代码示例之前,请将 $resourceGroupName
、$serverName
、$databaseName
和 $serviceObjective
替换为相应的值:
$resourceGroupName = "myResourceGroup"
$serverName = "server01"
$databaseName = "mySampleDatabase"
$serviceObjective = "HS_Gen5_2"
Set-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Edition "Hyperscale" `
-RequestedServiceObjectiveName $serviceObjective
使用 -ManualCutover
在所选时间手动启动切换。 此选项最适用于安排直接转换的时间,以尽量减少业务中断。 例如:
$resourceGroupName = "myResourceGroup"
$serverName = "server01"
$databaseName = "mySampleDatabase"
$serviceObjective = "HS_Gen5_2"
Set-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Edition "Hyperscale" `
-RequestedServiceObjectiveName $serviceObjective `
-ManualCutover
使用 Get-AzSqlDatabaseActivity cmdlet 监视正在进行的操作,该 cmdlet 返回 Azure SQL 数据库中的一个数据库的近期或当前正在进行的操作。 运行示例代码之前,请将 $resourceGroupName
、$serverName
和 $databaseName
参数设置为数据库的相应值:
$resourceGroupName = "myResourceGroup"
$serverName = "server01"
$databaseName = "mySampleDatabase"
Get-AzSqlDatabaseActivity -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName
在超大规模数据库准备就绪后,使用 -PerformCutover
启动切换:
$resourceGroupName = "myResourceGroup"
$serverName = "server01"
$databaseName = "mySampleDatabase"
$serviceObjective = "HS_Gen5_2"
Set-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Edition "Hyperscale" `
-RequestedServiceObjectiveName $serviceObjective `
-PerformCutover
若要使用 Transact-SQL 将现有 Azure SQL 数据库转换为“超大规模”,请先使用适用于 Azure SQL 数据库 Azure 门户查询编辑器连接到 逻辑 SQL Server 上的 master
数据库,SQL Server Management Studio(SSMS) 或 Visual Studio Code 的 mssql 扩展 。
必须在 ALTER DATABASE 语句中指定版本和服务目标。
此示例语句使用 HS_Gen5_2
服务目标将名为 mySampleDatabase
的数据库转换为“超大规模”。 在执行语句之前,请将数据库名称替换为相应的值。
ALTER DATABASE [mySampleDatabase]
MODIFY (EDITION = 'Hyperscale', SERVICE_OBJECTIVE = 'HS_Gen5_2');
GO
默认情况下,一旦“超大规模”数据库可用,数据库将立即切换到“超大规模”数据库以完成转换。 (可选)使用 MANUAL_CUTOVER
参数启动转换,该转换将在您选择的时间以手动切换结束。 此选项最适合选择合适的时间进行转换,以尽量减少业务中断。 例如:
ALTER DATABASE [mySampleDatabase]
MODIFY (EDITION = 'Hyperscale', SERVICE_OBJECTIVE = 'HS_Gen5_2')
WITH MANUAL_CUTOVER;
为了监视超大规模数据库的操作,请连接到 逻辑服务器 的 master
数据库,并查询 sys.dm_operation_status 。
sys.dm_operation_status
报告数据库操作的进度,包括转换为“Hyperscale”。 如果选择 MANUAL_CUTOVER
,则 sys.dm_operation_status
视图包括其他信息。
SELECT *
FROM sys.dm_operation_status
WHERE major_resource_id = 'mySampleDatabase'
ORDER BY start_time DESC;
GO
准备进行手动切换时,phase_desc
将会 WaitingForCutover
。 使用 PERFORM_CUTOVER
参数启动切换:
ALTER DATABASE [mySampleDatabase] PERFORM_CUTOVER;
相关内容