你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

创建实例池(预览版)– Azure SQL 托管实例

适用于:Azure SQL 托管实例

本文介绍如何创建 Azure SQL 托管实例实例池,以及如何将实例移入和移出池。

实例池可将具有共享资源的多个实例部署到单个虚拟机,从而提供方便且经济高效的基础结构来迁移多个 SQL Server 实例,而无需将较小且计算密集程度较低的工作负载合并到较大的 SQL 托管实例。

注意

Azure SQL 托管实例的实例池当前处于预览状态。

先决条件

要创建实例池,应具有:

子网大小注意事项

如果计划使用实例池,请仔细规划子网大小。 有关子网调整大小指南,请参阅确定所需的子网大小和范围

计算包含多个常规用途实例的一个实例池所需的 IP 地址数时,请使用以下公式:

2 * (5 + (3 * # of MIs)) + 5

# of MIs 是指计划预配的最大潜在实例数。 池中实例的最大可能数为 40。

创建实例池

可以使用 PowerShell 或 Azure CLI 来创建实例池。 考虑以下情况:

  • 目前只有标准系列 (Gen5) 或高级系列硬件上的常规用途服务层级可用。
  • 池名称只能包含小写字母、数字和连字符,且不能以连字符开头。
  • Azure 混合权益适用于实例池级别。 可以在创建池时设置许可证类型,并在创建池后更新许可证类型。

重要

部署实例池的操作耗时较长,可能需要长达四个半小时。

要创建实例池,请使用 New-AzSqlInstancePool

考虑以下情况:

  • 对于 LicenseType,如果没有可用于 Azure 混合权益折扣的 SQL Server 许可证,请使用 Azure 混合权益的 BasePrice 或 LicenseIncluded
  • 使用 Get-AzLocation | select displayname, location 获取可用实例池的区域列表。

运行以下示例脚本,在标准系列 (Gen5) 硬件上创建具有 8 个 vCore 的新实例池:

# Identify the SubnetId
$virtualNetwork = Get-AzVirtualNetwork -Name <vnet name> -ResourceGroupName <resource group name>
$miSubnet = Get-AzVirtualNetworkSubnetConfig -Name <subnet name> -VirtualNetwork $virtualNetwork
$miSubnetConfigId = $miSubnet.Id

# Create the instance
$instancePool = New-AzSqlInstancePool `
    -ResourceGroupName  <resource group name> `
    -Name <instance pool name> `
    -SubnetId $miSubnetConfigId `
    -LicenseType LicenseIncluded `
    -VCore 8 `
    -Edition GeneralPurpose `
    -ComputeGeneration Gen5 `
    -Location <region>

在池中创建新实例

创建池后,可以使用 PowerShell 或 Azure CLI 在池中创建新实例。

要标识池参数,请使用 Get-AzSqlInstancePool,然后使用 New-AzSqlInstance 在特定池中创建实例。

运行以下示例脚本在池中创建新实例:

$adminCredential = Get-Credential
$instancePool = Get-AzSqlInstancePool -ResourceGroupName <resource group name> -Name <instance pool name>

$instance01 = $instancePool | New-AzSqlInstance `
    -Name $instance01`
    -VCore 2 `
    -StorageSizeInGB 32 `
    -AdministratorCredential $adminCredential `

移动现有实例

可以使用 PowerShell 或 Azure CLI 将现有实例移入和移出池,前提是:

  • 其与池位于同一资源组。
  • 其与池位于同一虚拟网络和子网上。
  • 其符合实例池资源限制。

将现有实例移入池中时,池级别的设置优先于实例级设置。 例如,实例继承在池级别设置的许可证类型和维护时段。 将实例移出池后,其会保留从池继承的设置。 唯一的例外是许可证类型,从实例池中删除实例时,许可证类型默认返回“LicenseIncluded”– 将实例移出池后,必须手动配置 Azure 混合权益混合故障转移权限权益

要将实例移入池中,请在使用 Set-AzSqlInstance 时提供池名称:

$instance01 | Set-AzSqlInstance -InstancePoolName $instancePoolName

要将实例移出池,请提供空白的池名称:

$instance01 | Set-AzSqlInstance -InstancePoolName ''

连接到池中的实例

要连接到池中的实例,请先启用实例的公共终结点,然后允许网络安全组中的公共终结点流量

要启用实例的公共终结点,请在使用 Set-AzSqlInstance 更新实例属性时将 -PublicDataEndpointEnabled 设置为“true”

$instance01 | Set-AzSqlInstance -InstancePoolName $instancePoolName -PublicDataEndpointEnabled $true

创建数据库

为池中的实例创建数据库与为单实例创建数据库相同。 可以使用 PowerShell 或 Azure CLI 创建新的数据库。

要为实例创建新的数据库,请使用 New-AzSqlInstanceDatabase

New-AzSqlInstanceDatabase -Name <database name> -InstanceName <instance name> -ResourceGroupName <resource group> 

获取池使用情况

可以使用 PowerShell 来确定池内资源的使用情况。

要获取池中的实例列表,请使用 Get-AzSqlInstance

$instancePool | Get-AzSqlInstance

要获取池资源使用状况,请使用 Get-AzSqlInstancePoolUsage

$instancePool| Get-AzSqlInstancePoolUsage

可以添加 -ExpandChildren 参数以获取池及其内部实例的详细概述:

$instancePool | Get-AzSqlInstancePoolUsage –ExpandChildren

要列出实例中的数据库,请使用 Get-AzSqlInstanceDatabase

$databases = Get-AzSqlInstanceDatabase -InstanceName $instance01Name  -ResourceGroupName $resourceGroupName

注意

要检查部署到池的实例限制以及每个实例池的数据库限制,请查看资源限制

更新实例池

可以使用 PowerShell 对实例池限制进行更改。

以下示例脚本更改了许可证类型、vCore 大小和硬件类型:

更改许可证类型:

$instancePool | Set-AzSqlInstancePool -LicenseType BasePrice -VCores 16 -ComputeGeneration Gen8

还可以确定可用的维护时段计划:

# 'Available maintenance schedules in $location'
$configurations = Get-AzMaintenancePublicConfiguration
$configurations | ?{ $_.Location -eq $location -and $_.MaintenanceScope -eq "SQLManagedInstance"} 
$maintenanceWindowOptions = $configurations | ?{ $_.Location -eq $location -and $_.MaintenanceScope -eq "SQLManagedInstance"}

然后可以指定窗口选项来更改维护时段,例如:

$instancePool | Set-AzSqlInstancePool -MaintenanceConfigurationId $maintenanceWindowOptions[1].Id

更新共用实例

如果尚未超过池资源限制,则可以使用 PowerShell 或 Azure CLI 修改池中实例的资源配置,

要修改池中实例的资源参数,请使用 Set-AzSqlInstance

例如,以下脚本将 Instance1 的 vCore 更新为 8,并将存储大小更改为 512 GB:

$instance1name | Set-AzSqlInstance -VCore 8 -StorageSizeInGB 512 -InstancePoolName $instancePoolName

删除实例池

一旦将池中的所有实例删除或移出池,就可以使用 PowerShell 或 Azure CLI 删除实例池。

要删除实例池,请使用 Remove-AzSqlInstancePool

以下示例脚本删除了空实例池:

Remove-AzSqlInstancePool -ResourceGroupName <resource group name -Name <instance pool name>

实例池操作

下表显示了可用的实例池操作:

命令 Azure 门户 PowerShell Azure CLI
创建实例池
更新池属性
检查池使用情况和属性
删除实例池
在池中创建托管实例
将托管实例移入池中
从池中删除托管实例
将托管实例移出池
在池内的实例中创建数据库
从 SQL 托管实例中删除数据库

要使用 PowerShell,请安装最新版 PowerShell Core,并按照说明安装 Azure PowerShell 模块

可用的 PowerShell 命令

Cmdlet 说明
New-AzSqlInstancePool 创建实例池。
Get-AzSqlInstancePool 返回实例池的相关信息。
Set-AzSqlInstancePool 设置实例池的属性。
Remove-AzSqlInstancePool 删除实例池。
Get-AzSqlInstancePoolUsage 返回实例池使用情况的相关信息。

对于与池中的实例和单个实例相关的操作,请使用标准托管实例命令,但在对池中的实例使用这些命令时,必须填充“实例池名称”属性。

限制

在公共预览期间,池中的实例具有以下限制:

  • 池名称只能包含小写字母、数字和连字符,且不能以连字符开头。
  • 池中的所有实例均使用相同的许可模型。 为实例指定的许可证模型与池的许可证模型不同时,将使用池的许可证模型。 将实例移出池后,其会自动切换到全额付费许可证 (LicenseType = 'LicenseIncluded')。 手动激活 Azure 混合权益混合故障转移权限权益以更改许可模型。
  • 共用实例必须属于同一子网和资源组。 只能在池的子网和同一资源组中将实例移入和移出池。
  • 标准系列 (Gen5) 或高级系列硬件上仅提供常规用途服务层级。 下一代常规用途、业务关键服务层级和高级系列内存优化硬件不可用。
  • 池中实例的最大可能数为 40。
  • 只有删除或移出池中的所有实例后,才能删除实例池。
  • 无法使用 Azure 门户执行以下操作:
    • 配置实例池。 请改为使用 PowerShell 或 Azure CLI。
    • 将实例移入和移出池。 请改为使用 PowerShell 或 Azure CLI。
  • 当实例位于池中时,不支持以下 SQL 托管实例功能:

支持请求

Azure 门户中创建和管理实例池的支持请求。

如果在创建或删除实例时遇到问题,请务必在“问题子类型”字段中指定“实例池”

Azure 门户中“实例池支持请求”的屏幕截图。

如果遇到与池中单个托管实例或数据库相关的问题,则应为 Azure SQL 托管实例创建常规支持票证。

要创建更大型的 SQL 托管实例部署(无论是否具有实例池),都可能需要调高区域配额。 有关详细信息,请参阅请求增加 Azure SQL 数据库的配额。 实例池的部署逻辑会将在池级别消耗的 vCore 总数与你的配额进行比较,确定你是否可在不进一步增加配额的情况下创建新资源。