计划、部署和验证 Azure SQL
选择要迁移到 Azure SQL 或要在 Azure SQL 中创建的工作负载之后,需要计划部署,进行相应部署并验证该部署是否成功。 本单元将介绍此过程中每个步骤的各种方法。
部署前规划
开始在 Azure 中部署内容之前,请务必了解你的需求,以及它们如何映射到 Azure SQL 中的产品/服务。 使用你在 Azure SQL 简介模块中学到的知识做出规划。 你需要回答以下问题:
- 部署方法:Azure 门户还是命令行接口?
- 部署选项:虚拟机、数据库、弹性池、托管实例还是实例池?
- 购买模型(仅适用于 Azure SQL 数据库):DTU 还是 vCore?
- 服务层级:常规用途、业务关键还是超大规模?
- 硬件:Gen5 还是新硬件?
- 大小调整:vCore 数和数据最大大小?
在回答上述问题之前,还需要选择要迁移到 Azure SQL 或在云中生成的工作负载。 如果要迁移,则可以使用许多工具和资源可帮助你计划、评估、迁移和优化数据库和应用程序。 此模块的末尾提供了相关资源。
资源限制
Azure SQL 简介模块介绍了限制、费率和功能(例如 IOPS 或内存中 OLTP)。 还有其他资源限制会受到选择 Azure SQL 托管实例、Azure SQL 数据库或这些选择中的选项的影响:
- 内存
- 最大日志大小
- 事务日志速率
- 数据 IOPS
- tempdb 大小
- 最大并发辅助进程数
- 备份保留期
Azure SQL 托管实例和 Azure SQL 数据库的限制取决于你选择的购买模型、服务层和 vCore 数,或仅限 Azure SQL 数据库中的 DTU。
Azure SQL 托管实例和 SQL 数据库是平台即服务 (PaaS) 产品/服务。 限制这些选项不会阻止你充分使用 SQL Server 托管服务。
在常规用途 Azure SQL 数据库实例中,选择预配还是无服务器计算也会影响这些限制。 在部署之前,请查看计划部署的项,以确保从所需的位置开始。
Azure SQL 资源具有按订阅和按区域总体资源限制。 如果需要提高限额,可在 Azure 门户中请求增加配额。
部署
完成预先部署计划后,即可将计划付诸实践。 在此阶段中,将部署 Azure SQL(通过使用 Azure 门户或命令行),确定网络配置并建立初始连接。
对于 Azure SQL 数据库和 Azure SQL 托管实例,Azure 门户实质上有六个窗格需要在部署期间进行填写。
服务器
创建 Azure SQL 托管实例时,提供的服务器名称应与 SQL Server 中的名称相同。 对于数据库和弹性池,需要 Azure SQL 数据库服务器。 Azure SQL 数据库服务器是一种逻辑服务器,充当单个数据库或共用数据库的中心管理点。 该服务器包括登录名、防火墙规则、审核规则、威胁检测策略和故障转移组。 稍后你将了解有关这些元素的详细信息。
此逻辑服务器不会像 Azure SQL 托管实例那样,公开任何实例级别的访问或功能。 对于 Azure SQL 数据库服务器,服务器名称在所有 Azure 中必须唯一。
计算和存储
此学习路径的上一模块介绍了计算和存储方面的选项和建议,其中包括服务层、购买模型和硬件生成。 需要在部署期间选择所需的配置。 还必须确定 vCore 数和数据最大大小。
通常,如果要迁移,所使用的大小应与在本地使用的大小相似。 还可使用数据迁移助手 SKU 推荐器之类的工具,根据当前工作负载估计 vCore 数和数据最大大小。
数据最大大小不一定是当前数据的大小。 也可以是可分配给数据库的最大数据空间量。 这还有助于了解日志空间的分配,该分配可随数据最大大小进行缩放。
网络配置
Azure SQL 数据库和 Azure SQL 托管实例的网络选择有所不同。 部署 Azure SQL 数据库时,当前默认值为“无访问权限”。
可以选择公共终结点或专用终结点。 在本单元后面的练习中,将使用公共终结点,并将“允许 Azure 服务和资源访问此服务器”选项设置为“是”。 其他 Azure 服务(例如 Azure 数据工厂或 Azure 虚拟机)可以访问数据库(如果已配置)。 如果希望能够从用于部署 Azure SQL 数据库的客户端计算机的 IP 地址进行连接,则还可以选择“添加当前客户端 IP 地址”。
使用 Azure SQL 托管实例,可以将其部署于 Azure 虚拟网络和专用于托管实例的子网中,这样就可以拥有一个安全的专用 IP 地址。 Azure SQL 托管实例可将本地网络连接到托管实例,将托管实例连接到链接服务器或其他本地数据存储,并将托管实例连接到其他资源。
此外,还可启用公共终结点,以便无需虚拟专用网络 (VPN) 即可从 Internet 连接到托管实例。 此访问已默认禁用。
数据源
在 Azure SQL 数据库中,在 Azure 门户中部署时,可选择将 AdventureWorksLT
数据库作为示例。 在 Azure SQL 托管实例中,先部署实例,然后在其中部署数据库。 部署时不能拥有示例数据库,类似于 SQL Server。 可在 GitHub 上详细了解 AdventureWorks
示例数据库。
还可部署空白数据库,或者创建基于异地复制备份还原的数据库。
数据库排序规则
SQL Server 和 Azure SQL 中的排序规则指示数据库引擎如何处理某些字符和语言。 排序规则可为你的数据提供排序规则、区分大小写属性和区分重音属性。
创建新的 SQL 数据库或托管实例时,请考虑你要处理的数据的区域设置要求。 排序规则集将影响数据库中许多操作的特征。 在 SQL Server 系列产品中,默认排序规则通常由操作系统区域设置决定。
在 Azure SQL 托管实例中,可以在创建实例时设置服务器排序规则。 之后无法对此进行更改。 服务器排序规则为 Azure SQL 托管实例的该实例中的所有数据库设置默认值,但你可在数据库和列级别修改排序规则。
在 Azure SQL 数据库中,无法设置服务器排序规则。 其设置方式为 SQL_Latin1_General_CP1_CI_AS
这一默认(也是最常见的)排序规则,但你可以设置数据库排序规则。 将该值分解成几个区块:
SQL
表示 SQL Server 排序规则,而不是 Windows 或二进制排序规则。Latin1_General
指定排序时要使用的字母或语言。CP1
引用排序规则使用的代码页。CI
表示不区分大小写。CS
表示区分大小写。AS
表示不区分重音。AI
表示区分重音。
其他选项可用。 示例为字符宽度和 UTF-8 编码。 如需详细了解可通过或不可通过 Azure SQL 完成的操作,可以参阅本文档。
选择使用 Microsoft Defender for Cloud
在 Azure 门户中部署 Azure SQL 数据库时,系统将提示你是否要在免费试用版中启用 Microsoft Defender for Cloud。 选择开始免费试用。 免费试用后,Defender for Cloud 会根据 Microsoft Defender for Cloud 标准层定价进行计费。
启用该功能后,你将获得与识别和缓解潜在的数据库漏洞和威胁检测相关的功能。 在本学习路径的下一安全模块中详细了解这些功能。
在 Azure SQL 托管实例中,可以在部署后在实例上启用 Microsoft Defender for Cloud。
查看选择
在“查看 + 创建”窗格中,查看部署选择和 Azure 市场条款。
提示
还有“下载用于自动化的模板”选项,该选项为可配置的可重复部署提供 Azure 资源管理器模板(ARM 模板)。 本单元不介绍 ARM 模板。 如果你对此感兴趣,请详细了解模板规格。
关键部署实现详细信息
虽然 Azure 负责为你执行部署,但你应注意一些部署实现详细信息。 所有服务都建立在称为 Azure Service Fabric 的 Azure 主干上。 了解在后端这些服务在 Azure Service Fabric 上的部署和缩放方式,这将有助于你理解出现的各种行为。
Azure SQL 托管实例
在后台,对于 Azure SQL 托管实例,Azure 会为你的服务部署专用圈(有时称为虚拟群集)。 此体系结构可帮助提供安全和本机虚拟网络支持。
由于此体系结构,部署和缩放操作可能需要更长时间。 例如,在纵向扩展或缩减时,Azure 会为你部署新的虚拟群集,然后使用你的数据进行建造。 你可将每个实例视为在单个虚拟机上运行。
Azure SQL 实例池已经引入,为进行长时间部署提供帮助。 可以预先部署专用资源的池。 部署到池中并在池内进行缩放比传统部署速度更快。 还可获得更高的封装密度,因为可以在一个虚拟机中部署多个实例。
Azure SQL 数据库
Azure SQL 数据库包含在逻辑数据库服务器中。 在大多数情况下,专用 SQL Server 实例将托管 SQL 数据库,而你无需担心如何管理该实例。
逻辑数据库服务器为你提供了连接对象。 它还使你能够将某些权限和配置进行分组和管理。 每个逻辑数据库服务器中都有一个逻辑主数据库,该数据库可以提供实例级诊断。
Azure SQL 数据库 - 超大规模
Azure SQL 数据库中的超大规模层(Azure SQL 托管实例中不提供)具有独特的 Azure SQL 体系结构。 Azure SQL 团队重新架构了适用于云的超大规模层。 此体系结构包含一个多层缓存系统,可帮助提高速度和缩放能力。 缩放和其他操作不再与数据大小相关,并且可在固定时间(几分钟)内完成。 使用远程存储还允许快照备份。
在有关 Azure SQL 基础知识的学习路径的后续模块中,你将详细了解该体系结构以及它对性能和可用性的影响。 部署阶段的一个注意事项是,将数据库移到超大规模层后,就不能返回到常规用途或业务关键层。
资源治理
增加或减少服务层中的资源时,对维度(例如 CPU、存储和内存)的限制可能会达到特定的阈值。 虽然 Azure SQL 中提供了多面治理方法,但主要使用以下三种方法来管理 Azure SQL 中资源的使用情况:
- Windows 作业对象允许将一组进程作为一个单元进行管理和治理。 作业对象用于管理文件虚拟内存提交、工作集上限、CPU 相关性和速率上限。 可以使用
sys.dm_os_job_object
动态管理视图来查看适用的限制。 - Resource Governor 是一项 SQL Server 功能,可帮助用户(在本例中为 Azure)治理 CPU、物理 I/O 和内存等资源。 Azure SQL 托管实例还允许用户定义的 Resource Governor 工作负荷组和池。
- 文件服务器资源管理器在 Windows Server 中可用。 它用于治理文件目录配额,这些配额用于管理数据最大大小。
通过事务日志速率治理,用于治理事务日志速率的其他实现已内置到 Azure 的数据库引擎中。 此过程限制了工作负载(例如 BULK INSERT
、SELECT INTO
和索引生成)的高引入率。 它们作为亚秒级级别得到跟踪和强制执行。 它们目前以线性方式在服务层内进行缩放。
验证
完成部署后,即可验证该部署。 在此阶段中,通常需要检查 Azure 门户或 Azure CLI 中的结果,运行一些查询来验证部署配置,并根据需要进行调整。
对于 Azure SQL 托管实例和 Azure SQL 数据库,可能要做的第一件事是通过 Azure 门户或 Azure CLI 检查数据库或实例的状态。 接下来,可查看部署详细信息和活动日志,以确保没有失败或未解决的问题。
对于 Azure SQL 托管实例,可能需要检查错误日志,这是在本地 SQL Server 或 Azure 虚拟机中执行的常见操作。 此功能在 Azure SQL 数据库中不可用。
最后,需要确认你的网络是否正确配置,获取服务器名称,然后在 SQL Server Management Studio 或 Azure Data Studio 等工具中进行连接。 可运行以下查询来更好地了解已部署的内容并验证是否已正确部署:
SELECT @@VERSION
SELECT * FROM sys.databases
SELECT * FROM sys.objects
SELECT * FROM sys.dm_os_schedulers
SELECT * FROM sys.dm_os_sys_info
SELECT * FROM sys.dm_os_process_memory --Not supported in Azure SQL Database
SELECT * FROM sys.dm_exec_requests
SELECT SERVERPROPERTY('EngineEdition')
SELECT * FROM sys.dm_user_db_resource_governance -- Available only in Azure SQL Database and SQL Managed Instance
SELECT * FROM sys.dm_instance_resource_governance -- Available only in Azure SQL Managed Instance
SELECT * FROM sys.dm_os_job_object -- Available only in Azure SQL Database and SQL Managed Instance
Azure SQL 数据库中不支持与 OS 进程内存相关的一个查询,即使该查询可能有效。 此查询不受支持的原因是,在 Azure SQL 数据库中,与操作系统相关的某些内容与你完全无关,使你可以专注于数据库。
最后三个查询仅适用于 Azure SQL 数据库和 Azure SQL 托管实例。 首先,sys.dm_user_db_resource_governance
返回当前数据库或弹性池中的资源治理机制所使用的配置和容量设置。 使用第二个 sys.dm_instance_resource_governance
可获取 Azure SQL 托管实例的类似信息。 第三个 (sys.dm_os_job_object
) 将返回一行,其中描述管理 SQL Server 进程的作业对象的配置以及资源消耗统计信息。
接下来的两个练习介绍部署 Azure SQL 数据库或 Azure SQL 托管实例涉及的所有详细信息。 使用你的 Azure 订阅来部署 Azure SQL 数据库。 部署后,使用各种验证查询,并在 Azure Data Studio 中预运行 SQL 笔记本来比较 SQL 数据库、SQL 托管实例和 SQL Server 2019。