

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 评估 Linux 上的 SQL Server
<a name="sql-server-linux"></a>

## 概述
<a name="sql-server-linux-overview"></a>

自 SQL Server 2017 开始，可以在 Linux 操作系统上安装 SQL Server。Linux 上的 SQL Server 已为企业做好准备，具有灵活性、高性能、安全 HA/DR 功能、降低的总体拥有成本、功能和出色的用户体验。您可以从 Windows Server 上的 SQL Server 切换到 Linux 上的 SQL Server，以节省 Windows Server 的许可费用。

对于 Linux，SQL Server 可以在 Red Hat Enterprise Linux（RHEL）、SUSE Linux Enterprise Server（SLES）、Ubuntu 和 Amazon Linux 2 上部署。SQL Server 数据库引擎在 Windows Server 和 Linux 上的运行方式是相同的，但在使用 Linux 系统时，某些任务存在一些根本性的变化。在 Linux 和 Windows 上运行 SQL Server Always On 应用程序的一个关键区别与失效转移群集有关。如果您在 Windows Server 主机上部署 Always On 可用性组，则可以利用 [Windows Server 失效转移群集（WSFC）](https://learn.microsoft.com/en-us/sql/sql-server/failover-clusters/windows/windows-server-failover-clustering-wsfc-with-sql-server?view=sql-server-ver16)和 Active Directory 作为支持失效转移群集的内置功能。但是，WSFC 和 Active Directory 都无法在 Linux 上支持失效转移群集。如果要在 Linux 上启动 SQL Server 的故障转移群集，则可以使用 [ClusterLabs Pacem](https://aws.amazon.com/blogs/opensource/deploying-a-highly-available-microsoft-sql-server-on-linux-on-aws/) aker [AWS Launch Wizard](https://aws.amazon.com/launchwizard/)来简化集群设置和 Linux 实例上的 SQL 安装。

Windows 和 Linux 上的 SQL Server 共享一个共同的代码库。也就是说，SQL Server 核心引擎根本没有任何更改即可在 Linux 上运行。SQL Server 引入了平台抽象层（SQLPAL），如下图所示。

![\[序列服务器平台抽象层（SQLPAL）\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/sql_pal.png)


SQLPAL 负责对 SQL Server 与底层操作系统之间的调用及通信进行抽象处理。主机扩展只是一个原生的 Linux 应用程序。低级操作系统函数是针对优化 I/O、内存和 CPU 使用情况而进行的原生调用。当主机扩展启动时，它会加载并初始化 SQLPAL，随后便会启动 SQL Server。SQLPAL 会启动独立的软件进程，这些进程会为其余的代码提供所需的转换服务。在 SQL Server 架构中新增这一层意味着，那些使 SQL Server 在 Windows 系统上表现如此强大的企业级核心功能和优势，在任何操作系统环境下都能得以实现。

## 成本影响
<a name="sql-server-linux-cost-impact"></a>

对于 r5.2xlarge 实例，在每种情况下，Windows Server 的许可费用均降低约 268 美元。与使用价格较低的 SQL Server 版本相比，此次成本削减占服务器总成本的比例更高。下表显示成本节省情况。


****  

| 实例 | Edition | Windows 上的 SQL Server 的每月费用 | Linux 上的 SQL Server 的每月费用 | 节省成本 | 
| --- | --- | --- | --- | --- | 
| r5.2xlarge | Web | 735 美元 | 466 美元 | 37% | 
| r5.2xlarge | 标准 | 1,337 美元 | 1,068 美元 | 20% | 
| r5.2xlarge | Enterprise | 2,826 美元 | 2,558 美元 | 10% | 

**注意**  
上表中的价格估算基于 `us-east-1` 区域的按需定价，可以直接在 [AWS 定价计算器](https://calculator.aws/#/estimate?id=fd37122637710aa7ba46d1949e8b6a15f68d3c0f) 中查看。

以一个示例场景为例，一家处于 SMB 细分领域的 ISV 客户希望在其开发环境方面节省成本。他们已经在一组 Windows 服务器上使用了 SQL Server 开发人员版。通过从使用 SQL Server 开发人员版的 Windows 切换到使用 SQL Server 开发人员版的 Linux，ISV 客户可以节省 33% 的开发工作负载费用。以下表格列出了此情景下的相关估算成本。


****  

| Estimate | 月度成本 | 
| --- | --- | 
| [Windows \$1 SQL Server](https://calculator.aws/#/estimate?id=da0a0f5f58ddf91aa3398af3a78691cfa2204673) | 9,307.72 美元 | 
| [Linux \$1 SQL Server](https://calculator.aws/#/estimate?id=131966c579020eaec957f441c67e9aa0bfd32411) | 6,218.36 美元 | 
| 预估的成本节省 | 3089.36 美元（33%） | 

在另一个示例场景中，一家公司将包含许可证的 SQL Server EC2 实例从 Windows 迁移到了 Linux。该公司每年在 Windows Server 的许可费用上节省了总计 30 万美元——约占其整个 AWS 费用的 20%。

## 成本优化建议
<a name="sql-server-linux-optrec"></a>

我们建议您考虑以下几点：
+ 从 SQL Server 2017 开始，Linux 上的 SQL Server 受到支持。
+ 为了帮助进行切换，您可以使用[适用于 Microsoft SQL Server 数据库的 Windows 到 Linux 平台更换助手](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/replatform-sql-server.html)。平台更换助手是一款脚本工具，能够帮助您将现有的 SQL Server 工作负载从 Windows 迁移到 Linux 操作系统。它会检查常见的不兼容性，从 Windows 主机中导出数据库，然后将这些数据库导入到在 Ubuntu 16.04 上运行 Microsoft SQL Server 2017 的 EC2 实例中。
+ 您也可以使用 SQL Server 中的[备份和还原](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/back-up-and-restore-of-sql-server-databases?view=sql-server-ver16)功能从 Windows 上的 SQL Server 切换到 Linux。
+ 您可以使用 [AWS Launch Wizard](https://docs.aws.amazon.com/launchwizard/latest/userguide/what-is-launch-wizard.html) 轻松快速地部署到 Linux 或 Ubuntu 上的 SQL Server。Launch Wizard 可以根据您的应用程序需求，在独立部署和高可用性场景下，在 Linux 或 Ubuntu 系统上部署 SQL Server。有关更多信息，请参阅 Microsoft 工作负载博客[上的 “始终在 Linux 上部署到 SQL Server](https://aws.amazon.com/blogs/modernizing-with-aws/deploy-microsoft-sql-server-always-on-to-linux-with-aws-launch-wizard/)” 的 AWS 文章。 AWS Launch Wizard

下图展示了采用 Microsoft SQL Server 数据库的 Windows 到 Linux 更换平台助手的解决方案架构。

![\[Windows 到 Linux 的更换平台助手架构\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/replatforming_assistant.png)


## 其他资源
<a name="sql-server-linux-resources"></a>
+ [Linux 上的 SQL Server 概述](https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-overview?view=sql-server-ver16)（Microsoft Learn）
+ [Linux 上的 SQL Server 的安装指南](https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-setup?view=sql-server-ver16)（Microsoft Learn）
+ 使用 AWS Launch Wizard（ AWS 博客@@ [上的微软工作负载）在 Linux 上部署到 SQL Server](https://aws.amazon.com/blogs/modernizing-with-aws/deploy-microsoft-sql-server-always-on-to-linux-with-aws-launch-wizard)
+ [Linux 上的高可用性 SQL Server](https://aws.amazon.com/blogs/opensource/deploying-a-highly-available-microsoft-sql-server-on-linux-on-aws/)（AWS 开源博客）