

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

# 整合实例
<a name="consolidate-instances"></a>

本部分重点介绍将多个 SQL Server 实例整合到同一台服务器上的成本优化方法，旨在降低许可成本并最大限度地提高资源利用率。

## 概述
<a name="consolidate-instances-overview"></a>

创建实例是安装 SQL Server 数据库引擎这一过程的一部分。SQL Server 实例是一个完整的安装版本，包含其自身的服务器文件、安全登录信息以及系统数据库（master、model、msdb 和 tempdb）。因为每个实例都有其自身的文件和服务，所以您可以在同一操作系统上安装多个 SQL Server 实例，而这些实例之间不会相互干扰。但是，由于这些实例都安装在同一台服务器上，因此它们共享相同的硬件资源，包括计算能力、内存和网络连接。

在生产环境中，通常每个服务器只会使用一个 SQL Server 实例，这样“繁忙”的实例就不会过度占用共享硬件资源。为每个 SQL Server 实例配备其专属的操作系统，并为其分配独立的资源，这比依赖资源治理方式要好得多。这对于那些需要大量 RAM 和 CPU 资源的高性能 SQL Server 工作负载来说尤其适用。

但是，并非所有 SQL Server 工作负载都会消耗大量资源。例如，一些组织会为其每位客户分配专属的 SQL Server 实例，以满足合规或安全方面的要求。对于规模较小的客户或者那些通常不太活跃的客户而言，这意味着以最少的资源来运行 SQL Server 实例。

正如 [Microsoft SQL Server 2019：许可指南](https://download.microsoft.com/download/e/2/9/e29a9331-965d-4faa-bd2e-7c1db7cd8348/SQL_Server_2019_Licensing_guide.pdf)中所述，每台运行 SQL Server 的服务器必须至少占用四个 CPU 许可证。这意味着，即使你运行的服务器只有两个 vCPUs，你仍然必须为四个 v 的 SQL Server 授予许可CPUs。 根据[微软的公开SQL Server定价](https://www.microsoft.com/en-us/sql-server/sql-server-2022-pricing)，如果你使用SQL Server标准版，则相差3,945美元。对于那些使用单一 SQL Server 实例来运行多台服务器且资源使用量最低的组织而言，由于必须为未使用的资源支付许可费用，这可能会产生相当大的成本。

## 成本优化方案
<a name="consolidate-instances-cost-opt-scenario"></a>

本节探讨了一个示例场景，该场景对比了运行四台 Windows Server 服务器（每台服务器仅配备一个 SQL Server 实例）与运行一台更大规模的 Windows Server 服务器（该服务器同时运行多个 SQL Server 实例）之间的差异。

如果每个 SQL Server 实例只需要两个 v CPUs 和 8 GB 内存，则每台服务器的 SQL Server 许可证总成本为 7,890 美元，此外每小时的计算成本为 0.096 美元。


****  

| EC2 实例 | v CPUs | RAM | Price | v CPUs 获得许可 | SQL Server 许可总成本 | 
| --- | --- | --- | --- | --- | --- | 
| m6i.large | 2 | 8 | 0.096 | 4 | 7,890 美元 | 

如果将服务器数量扩大到四台，那么总的费用将是 31560 美元，其中包括 SQL Server 的许可费用，以及每小时 0.384 美元的计算费用。


****  

| EC2 实例 | v CPUs | RAM | Price | v CPUs 获得许可 | SQL Server 许可总成本 | 
| --- | --- | --- | --- | --- | --- | 
| 4x m6i.large | 2 | 32 | 0.384 | 16 | 31,560 美元 | 

如果将全部四个 SQL Server 实例整合到一个 EC2 实例中，则总的计算资源量和计算能力将保持不变。但是，通过消除不必要的 SQL Server 许可成本，您能够将运行该工作负载的总成本降低 15780 美元。


****  

| EC2 实例 | v CPUs | RAM | Price | v CPUs 获得许可 | SQL Server 许可总成本 | 
| --- | --- | --- | --- | --- | --- | 
| m6i.2xlarge | 8 | 32 | 0.384 | 8 | 15,780 美元 | 

**注意**  
在前面的表格中，计算成本显示了在 `us-east-1` 区域运行 Windows Server 的 Amazon EC2 服务器的每小时按需定价。SQL Server 标准版的许可费用指的是 [Microsoft 的 SQL Server 公开定价](https://www.microsoft.com/en-us/sql-server/sql-server-2022-pricing)。

## 成本优化建议
<a name="consolidate-instances-cost-opt-rec"></a>

如果您正在考虑整合 SQL Server 实例，那么您最需要关注的问题就是您想要整合的每个实例所消耗的资源情况。为了更好地了解每台服务器上的工作负载模式，收集一段时间内的性能指标很重要。一些用于监控资源消耗的常用工具包括[亚马逊 CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-basic-detailed.html)、[Windows 性能监控器](https://techcommunity.microsoft.com/blog/askperf/windows-performance-monitor-overview/375481) (perfmon) 和 SQL Server 的[本机监控工具](https://learn.microsoft.com/en-us/sql/relational-databases/performance/performance-monitoring-and-tuning-tools?view=sql-server-ver16)。

我们建议您在分析您的 SQL Server 工作负载是否能够合并以使用同一服务器资源（同时确保这些资源不会相互干扰）时，考虑以下问题：
+ 稳定运行状态下消耗了哪些资源（CPU、内存和网络带宽）？
+ 峰值状态下消耗了哪些资源（CPU、内存和网络带宽）？
+ 峰值多久发生一次？ 峰值是否一致？
+ 一台服务器的资源峰值是否与另一台服务器的资源峰值重合？
+ SQL Server 使用的存储 IOPS 和吞吐量分别是多少？

如果您打算继续实施将 SQL Server 实例合并的计划，请参阅 AWS 云运营与迁移博客中的[在一个 Amazon EC2 实例上运行多个 SQL Server 实例](https://aws.amazon.com/blogs/mt/run-multiple-instances-sql-server-on-one-amazon-ec2-instance/)一文。这篇文章详细介绍了如何在 SQL Server 中进行配置更改以添加更多实例。开始操作之前，请先考虑一下在同一台服务器上安装多个实例时可能出现的细微差异：
+ 默认的 SQL Server 数据库实例名为 `MSSQLSERVER` 并使用端口 1433。
+ 安装在同一台服务器上的每个其他实例都是一个“命名的”数据库实例。
+ 每个命名的实例都有一个唯一的实例名称和一个唯一的端口。
+ [SQL Server 浏览器](https://learn.microsoft.com/en-us/sql/tools/configuration-manager/sql-server-browser-service?view=sql-server-ver16)必须运行，以便协调对命名实例的访问流量。
+ 每个实例都可以为数据库数据文件和单独的登录信息分别指定不同的位置。
+ SSQL Server 的[最大服务器内存设置](https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-ver16)必须根据每个实例的性能需求进行配置，其组合总内存还会为底层操作系统留出足够的内存。
+ 您可以利用 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)功能，或 [AWS DMS](https://aws.amazon.com/blogs/database/consolidate-data-from-identical-sql-server-databases-into-a-single-amazon-rds-for-sql-server-database-using-aws-dms/) 进行迁移或整合。

## 其他资源
<a name="consolidate-instances-resources"></a>
+ [SQL Server 许可数据表](https://download.microsoft.com/download/0/5/c/05c60185-ebdd-4472-895a-3d8e8da55682/SQL_Server_2019_Licensing_Datasheet.pdf)（AWS 云运营和迁移博客）
+ [SQL Server 多实例设置博客文章](https://aws.amazon.com/blogs/mt/run-multiple-instances-sql-server-on-one-amazon-ec2-instance/)（AWS 云操作和迁移博客）