使用已启用 Azure Arc 的 SQL 托管实例部署托管数据库服务
已启用 Azure Arc 的 SQL 托管实例是由 SQL Server 引擎提供支持的 Azure SQL 服务,可以部署在你选择的基础结构上。
与 Azure SQL 的比较
Azure SQL 是部署在 Azure 基础结构中的一系列数据库服务:
Azure 虚拟机中的 SQL Server
此 Azure SQL 部署选项允许完全许可的 SQL Server 产品在你选择的 Windows 或 Linux 版本上运行。 用户管理来宾虚拟机内的所有内容,而 Microsoft 管理基础结构。 此选项称为“基础结构即服务 (IaaS)”。
Azure SQL 托管实例
此 Azure SQL 部署选项提供预安装的无版本 SQL Server 实例作为完全托管服务。 用户几乎可以访问 SQL Server 引擎实例的全部功能。 Microsoft 管理托管实例所需的平台和基础结构的所有方面。 此选项是平台即服务 (PaaS) 的一个示例。
Azure SQL 数据库
此 Azure SQL 部署选项提供包含的 SQL Server 数据库,该数据库由预安装的无版本 SQL Server 作为完全托管服务提供支持。 用户管理数据库,而 Microsoft 管理基础 SQL 实例、平台和基础结构。 此选项也是平台即服务 (PaaS) 的一个示例。
已启用 Azure Arc 的 SQL 托管实例
已启用 Azure Arc 的 SQL 托管实例与 Azure SQL 托管实例类似。 它具有类似的特征和管理功能。 已启用 Azure Arc 的 SQL 托管实例的目的是提供与 Azure 相同的平台即服务 (PaaS) 功能和体验,而客户可以使用 Kubernetes 平台选择和管理基础结构。
功能比较
若要了解已启用 Azure Arc 的 SQL 托管实例的功能,请务必查看其核心功能、部署选项以及与 Azure 的集成。
核心功能
由于已启用 Azure Arc 的 SQL 托管实例基于 SQL Server 引擎,因此它提供了与 SQL Server 和 Azure SQL 托管实例几乎 100% 兼容的核心实例功能。 该实例包含兼容的 T-SQL 语言接口以及安全性、性能和可用性的所有功能。 可以在 Microsoft 文档中详细了解已启用 Azure Arc 的 SQL 托管实例的功能。
与 Azure SQL 托管实例一样,部署已启用 Azure Arc 的 SQL 托管实例时,你将获得一个预安装的无版本 SQL Server。 已启用 Azure Arc 的 SQL 托管实例使用来自 Microsoft Container Registry (MCR) 的容器映像。
Azure SQL 托管实例使用网关服务器从基础连接详细信息中提取应用程序。 已启用 Azure Arc 的 SQL 托管实例还提供使用 Kubernetes LoadBalancer 或 NodePort 服务的连接抽象。
服务层
与 Azure SQL 托管实例一样,你可以使用以下两个称为服务层级的部署选项来部署已启用 Azure Arc 的 SQL 托管实例:
常规用途 - 顾名思义,此服务层级适用于大多数工作负载。 该服务层级对核心和内存等资源有限制,但通过 Kubernetes 和共享存储提供内置的基本高可用性。 常规用途层级中的实例映射到 SQL Server Standard Edition 中支持的功能。
业务关键 - 此服务层级专用于需要最佳性能和最高可用性级别的工作负载。 此服务层级对内存或核心没有限制,并使用可用性组通过读取扩展提供高可用性。业务关键层级中的实例映射到 SQL Server Enterprise Edition 中支持的功能。
这两个服务层级均按核心计费,但也包括免费使用 Azure 混合权益许可和开发人员选项的功能。 业务关键服务层级目前处于预览状态,因此不会产生任何使用费用。 可以在 Microsoft 文档中详细了解服务层级。
Azure 集成
部署 Azure SQL 托管实例时,账单、使用情况、指标和日志可以与 Azure 集成。 此外,可以使用 Azure 接口(如门户)来部署和配置 Azure SQL 托管实例。
与 Azure 的已启用 Azure Arc 的 SQL 托管实例的集成取决于你使用的连接模式。
与 Azure 的集成通过 Azure Arc 代理和 Azure Arc 数据控制器以直接连接模式自动处理。 Azure 接口(如 Azure 门户)可用于部署和配置。
如果使用间接连接模式,则必须将最小数量的数据发送到 Azure 以进行计费。 可以选择导出指标和日志等数据。 在间接连接模式下,不支持通过 Azure 门户进行部署和配置。 但是,Azure CLI 和 kubectl 等接口可用于部署和配置。
管理功能的比较
由于已启用 Azure Arc 的 SQL 托管实例是一种托管服务,因此将管理功能与 Azure SQL 托管实例进行比较非常有用。 以下部分比较了无版本引擎、部署和配置、监视、高可用性、灾难恢复和迁移功能。
无版本
使用 Azure SQL 托管实例的好处之一是无需修补和更新 SQL Server、操作系统和任何平台软件。 Azure SQL 托管实例的引擎通常称为无版本,因为与 SQL Server 不同,该引擎没有主版本的概念。 该实例会根据软件补丁或新功能的需要不断更新。
已启用 Azure Arc 的 SQL 托管实例也使用无版本引擎,因此可以根据需要通过更新的容器映像自动应用更新。 通过使用 Kubernetes 的强大功能来停止和启动新容器以维护可用性。
部署和配置
已启用 Azure Arc 的 SQL 托管实例的部署是一个简单的声明性过程,与 Azure SQL 托管实例非常相似。 部署已启用 Azure Arc 的 SQL 托管实例时,可以指定服务层级、核心和内存限制、存储类规范以及 SQL 配置选项,例如 SQL Server 代理、排序规则和跟踪标志。
在直接连接模式下,可通过 Azure 门户部署已启用 Azure Arc 的 SQL 托管实例。 在间接连接模式下,可使用 Azure CLI(使用 arcdata 扩展)、kubectl 或 Azure Data Studio 部署已启用 Azure Arc 的 SQL 托管实例。
在 SQL 实例之外,也可以使用 Azure 门户在直接连接模式下配置已启用 Azure Arc 的 SQL 托管实例。 在任一连接模式下,都可通过 Azure CLI 或 kubectl 在 SQL 实例之外配置选项。
在 SQL 实例内部,可以使用标准 SQL Server 接口(例如 sp_configure、ALTER SERVER CONFIGURATION 和 ALTER DATABASE)来配置实例和数据库选项。
监视
与 Azure SQL 托管实例一样,你可以使用 Azure Monitor 来监控已启用 Azure Arc 的 SQL 托管实例的关键指标。 在群集中,还可以对节点或 SQL 实例使用 Grafana 仪表板的内置监视功能。
已启用 Azure Arc 的 SQL 托管实例的日志可在 Azure 门户中通过日志分析进行查看。 在群集中,还可以使用 Kibana 的内置日志。
由于已启用 Azure Arc 的 SQL 托管实例基于 SQL Server,因此标准 ERRORLOG 文件可用于查看 SQL 错误和实例详细信息。 已启用 Azure Arc 的 SQL 托管实例还支持所有可用的动态管理视图 (DMV) 和扩展事件。
高可用性
使用已启用 Azure Arc 的 SQL 托管实例等托管服务的好处之一是内置的高可用性。 与 Azure SQL 托管实例一样,用于实现高可用性的方法取决于服务层级。
对于常规用途服务层级,Kubernetes StatefulSet 的内置高可用性与共享存储一起使用。
对于业务关键服务层级,内置的高可用性是通过结合使用 Kubernetes StatefulSet 和 SQL Server Always On 可用性组副本提供的。 将为用户自动部署和配置可用性组副本。 与 Azure SQL 托管实例一样,只读副本可用于卸载读取工作负载。 系统数据库(如 master 和 model)是可用性组的一部分。 在故障转移事件之后,系统级对象(如 SQL 代理作业)将自动可用。
如果实例在群集内移动,则 Kubernetes LoadBalancer 和 NodePort 将为应用程序提供连接抽象。 此外,还为业务关键服务层级提供只读连接抽象点。
由于 Microsoft 管理 Azure SQL 托管实例的完整平台和基础结构,因此用户可以享受服务级别协议 (SLA) 的好处。 由于客户必须为已启用 Azure Arc 的 SQL 托管实例管理基础结构,因此客户拥有并管理所有 SLA。
灾难恢复
与 Azure SQL 托管实例一样,已启用 Azure Arc 的 SQL 托管实例为数据库提供了自动备份系统,包括时间点还原。 用户可以手动执行 COPY_ONLY 备份并随时进行还原。
用户配置所需的恢复点目标 (RPO) 和保留期。 这些设置决定了执行事务日志备份的频率以及备份的保留时间。
Azure SQL 托管实例为使用 Azure 存储的备份提供内置冗余。 已启用 Azure Arc 的 SQL 托管实例的用户可以配置特定的 Kubernetes 存储类,以用于 SQL 备份,但需负责满足任何冗余需求。
迁移
由于已启用 Azure Arc 的 SQL 托管实例使用 SQL Server 引擎,因此可以使用数据库备份和还原来迁移现有的 SQL Server 版本。 可以直接从 Azure 存储或通过将本地备份复制到 SQL 托管实例的容器中来还原数据库。
已启用 Azure Arc 的 SQL 托管实例的接口
以下接口可与已启用 Azure Arc 的 SQL 托管实例一起使用,以管理实例和生成应用程序:
SQL Server Management Studio (SSMS)
SQL Server Management Studio (SSMS) 完全兼容,可查询和管理已启用 Azure Arc 的 SQL 托管实例。
Azure Data Studio (ADS)
Azure Data Studio (ADS) 是一种多平台工具,可查询和管理已启用 Azure Arc 的 SQL 托管实例。 ADS 支持使用 T-SQL 和 T-SQL 笔记本进行查询。 此外,可以使用 ADS Azure Arc 扩展来创建和管理已启用 Azure Arc 的数据服务资源,例如数据控制器、SQL 托管实例和 PostgreSQL 服务器(预览版)。
SQL 命令行工具
已启用 Azure Arc 的 SQL 托管实例支持 sqlcmd 和 bcp 等 SQL 命令行工具。
Azure 门户
如果使用直接连接模式,可以从 Azure 门户创建、查看和管理已启用 Azure Arc 的数据服务。 此外,如果使用间接连接模式上传数据,则可以在 Azure 门户中查看已启用 Azure Arc 的 SQL 托管实例详细信息。
Azure CLI
可以将 arcdata 扩展与多平台 Azure 命令行接口 (CLI) 结合使用来创建、查看和管理已启用 Azure Arc 的数据服务,例如 SQL 托管实例。 Azure CLI 只能在间接连接模式下用于部署已启用 Azure Arc 的 SQL 托管实例。 Azure CLI 是在使用间接连接模式时上传账单、指标和日志的主要接口。
kubectl
可以使用多平台 kubectl 命令行界面 (CLI) 来创建、查看和管理已启用 Azure Arc 的数据服务,包括 SQL 托管实例。 Azure CLI 是与已启用 Azure Arc 的 SQL 托管实例配合使用的首选命令行接口,但你可以将 yaml 文件与 kubectl 配合使用来创建和管理资源。 Kubectl 只能在间接连接模式下用于部署已启用 Azure Arc 的 SQL 托管实例。 在某些情况下,例如编辑默认的时间点还原配置时,需要使用 kubectl。
SQL 驱动程序
可以为应用程序使用任何受支持的 SQL Server 驱动程序,以针对已启用 Azure Arc 的 SQL 托管实例进行连接和执行查询。 包括对常见编程语言(例如 C#、Java、Node.js、PHP、Python 和 Ruby)的驱动程序支持。