培训
认证
Microsoft Certified: Azure Database Administrator Associate - Certifications
使用 Microsoft PaaS 关系数据库产品/服务,管理云、本地和混合关系数据库的 SQL Server 数据库基础结构。
你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:Azure SQL 数据库
本文概述了 Azure SQL 数据库中的超大规模弹性池。
Azure SQL 数据库弹性池可使软件即服务 (SaaS) 开发人员在规定的预算内优化一组数据库的价格性能比,同时为每个数据库提供性能弹性。 Azure SQL 数据库超大规模弹性池为超大规模数据库引入了共享资源模型。
有关使用 Azure CLI 或 PowerShell 创建、缩放数据库或将数据库移动到超大规模弹性池的示例,请参阅使用命令行工具处理超大规模弹性池
有关超大规模弹性池正式发布的详细信息,请参阅博客:超大规模弹性池正式发布。
将超大规模数据库部署到弹性池,可以在池中的数据库之间共享资源,并优化具有不同使用模式的多个数据库的成本。
将弹性池与超大规模数据库配合使用的场景:
将非超大规模数据库添加到超大规模弹性池,会将数据库转换为超大规模服务层级。
传统上,独立的超大规模数据库的体系结构由三个主要的独立组件组成:计算、存储(“页面服务器”)和日志(“日志服务”)。 当你为超大规模数据库创建弹性池时,池中的数据库将共享计算和日志资源。 此外,如果选择配置高可用性,则会为每个高可用性池创建一组等效且独立的计算和日志资源。
下面描述了超大规模数据库弹性池的体系结构:
ApplicationIntent=ReadOnly
,会将你路由到其中一个高可用性池中的只读副本数据库。下图描述了超大规模数据库弹性池的体系结构:
可以使用相同的命令来管理共用的超大规模数据库,将其作为其他服务层中的共用数据库。 只需在创建超大规模弹性池时,确保为版本指定 Hyperscale
。
唯一的区别是能够修改现有超大规模弹性池的高可用性 (H/A) 副本数。 为此,请执行以下操作:
可以使用以下客户端工具来管理弹性池中的超大规模数据库:
将数据库转换为超大规模时,可以将数据库添加到现有的超大规模弹性池。 在进行此类转换时,超大规模弹性池需要与源数据库位于同一逻辑服务器上。
将数据库转换为超大规模弹性池时,请注意每个超大规模弹性池的最大数据库数。
可以使用 T-SQL 命令转换多个常规用途数据库,并将其添加到名为 hsep1
的现有超大规模弹性池:
ALTER DATABASE gpepdb1 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))
ALTER DATABASE gpepdb2 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))
ALTER DATABASE gpepdb3 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))
ALTER DATABASE gpepdb4 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))
在此示例中,通过指定目标 SERVICE_OBJECTIVE
为“超大规模”弹性池,隐式请求从“常规用途”到“超大规模”的转换。 上述每个命令都会开始将相应的常规用途数据库转换为“超大规模”。 这些 ALTER DATABASE
命令返回速度快,不需要等待转换完成。 在所示的示例中,将有四个此类转换从“常规用途”迁移到并行运行的“超大规模”。
可以查询 sys.dm_operation_status 动态管理视图来监视这些后台转换操作的状态。
可以使用 PowerShell 命令转换多个常规用途数据库,并将其添加到名为 hsep1
的现有超大规模弹性池。 作为示例,以下示例脚本执行以下步骤:
gpep1
的“常规用途”弹性池中的所有数据库。Where-Object
cmdlet 会对此列表进行筛选,以仅显示以 gpepdb
开头的数据库名称。hsep1
的目标超大规模弹性池,隐式请求转换到超大规模服务层级。
-AsJob
参数允许每个 Set-AzSqlDatabase
请求并行运行。 如果希望逐个运行转换,可以删除参数 -AsJob
。$dbs = Get-AzSqlElasticPoolDatabase -ResourceGroupName "myResourceGroup" -ServerName "mylogicalserver" -ElasticPoolName "gpep1"
$dbs | Where-Object { $_.DatabaseName -like "gpepdb*" } | % { Set-AzSqlDatabase -ResourceGroupName "myResourceGroup" -ServerName "mylogicalserver" -DatabaseName ($_.DatabaseName) -ElasticPoolName "hsep1" -AsJob }
除了 sys.dm_operation_status 动态管理视图,还可以使用 PowerShell cmdlet Get-AzSqlDatabaseActivity 监视这些后台转换操作的状态。
请参阅超大规模弹性池的资源限制,了解标准系列、高级系列,以及高级系列内存优化。
请考虑以下限制:
UnsupportedReplicationOperation
错误。 而是要将命名副本创建为单个超大规模数据库。下面是区域冗余超大规模弹性池的一些注意事项:
-BackupStorageRedundancy
参数用于指定区域冗余备份存储(ZRS 或 GZRS)。问题 | 建议 |
---|---|
将数据库从区域冗余的超大规模弹性池添加到另一个区域中拥有非区域冗余超大规模弹性池的故障转移组时,操作会在内部失败,但可能会看起来在运行,但实际上没有任何进展。 使用 SSMS 等工具时,可以看到异地辅助数据库,但无法连接到并使用异地辅助数据库。 故障转移组可能会显示异地辅助数据库的“种子设定 0%”状态。 如果第二个超大规模弹性池是区域冗余,则不会发生此错误。 | 若要解决此问题,可使用 Azure PowerShell 在故障转移群组以外设置异地复制,在命令行 New-AzSqlDatabaseSecondary -ResourceGroupName "primary-rg" -ServerName "primary-server" -DatabaseName "hsdb1" -PartnerResourceGroupName "secondary-rg" -PartnerServerName "secondary-server" -AllowConnections "All" -SecondaryElasticPoolName "secondary-nonzr-pool" -BackupStorageRedundancy Local -ZoneRedundant:$false 中明确指定非区域冗余。 然后,即可将数据库添加到故障转移群组中。 |
在极少数情况下,尝试将超大规模数据库移动/还原/复制到弹性池时,可能会收到错误 45122 - This Hyperscale database cannot be added into an elastic pool at this time. In case of any questions, please contact Microsoft support 。 |
特定于实现的详细信息导致存在此限制。 如果此错误阻止了操作,请提交支持事件以请求帮助。 |
培训
认证
Microsoft Certified: Azure Database Administrator Associate - Certifications
使用 Microsoft PaaS 关系数据库产品/服务,管理云、本地和混合关系数据库的 SQL Server 数据库基础结构。
文档
超大规模分布式功能体系结构 - Azure SQL Database
了解如何构建超大规模数据库来横向扩展 Azure SQL 数据库的存储和计算资源。
“超大规模”次要副本 - Azure SQL Database
本文介绍“超大规模”服务层级中提供的不同类型的次要副本。
如何管理超大规模数据库 - Azure SQL Database
如何管理超大规模数据库,包括迁移到超大规模、还原到不同的区域和反向迁移。