

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon EC2 for SQL Server
<a name="ec2-sql"></a>

Amazon EC2 支援自我管理的 SQL Server 資料庫。也就是說，它可讓您完全控制基礎設施和資料庫環境的設定。在 Amazon EC2 上執行資料庫與在您自己的伺服器上執行資料庫非常類似。您可以完全控制資料庫和作業系統層級的存取，因此您可以使用您選擇的工具來管理作業系統、資料庫軟體、修補程式、資料複寫、備份和還原。此遷移選項要求您根據 AWS 架構最佳實務來設定、設定、管理和調校所有元件，包括 EC2 執行個體、儲存磁碟區、可擴展性、聯網和安全性。您要負責在相同或不同 AWS 區域中跨執行個體進行資料複寫和復原。

## 選擇 Amazon EC2 的時機
<a name="ec2-sql-choosing"></a>

下列情況下，Amazon EC2 是 SQL Server 資料庫的理想遷移選項：
+ 您需要完全控制資料庫，以及存取其基礎作業系統、資料庫安裝和組態。
+ 您想要管理資料庫，包括備份和復原、修補作業系統和資料庫、調校作業系統和資料庫參數、管理安全性，以及設定高可用性或複寫。
+ 您想要使用 Amazon RDS 目前不支援的功能和選項。如需詳細資訊，請參閱 Amazon RDS 文件中[不支援的功能和支援有限的功能](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.FeatureNonSupport)。
+ 您需要 Amazon RDS 不支援的特定 SQL Server 版本。如需支援的版本清單，請參閱 [Amazon RDS 文件中的 Amazon RDS 上的 SQL Server 版本](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport)。
+ 您的資料庫大小和效能需求超過目前的 Amazon RDS for SQL Server 產品。如需詳細資訊，請參閱 [Amazon RDS 文件中的 Amazon RDS 資料庫執行個體儲存](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)體。
+ 您想要避免自動軟體修補程式可能不符合您的應用程式。
+ 您想要使用自己的授權，而不是使用 Amazon RDS for SQL Server 包含授權的模型。
+ 您想要達到比目前限制更高的 IOPS 和儲存容量。如需詳細資訊，請參閱 [Amazon RDS 文件中的 Amazon RDS 資料庫執行個體儲存](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)體。

如需 Amazon EC2 上目前支援的 SQL Server 功能和版本的清單，請參閱本指南稍後的[在 Amazon EC2 和 Amazon RDS 之間進行選擇](comparison.md)。

# 高可用性
<a name="ec2-sql-ha"></a>

您可以在 Amazon EC2 上將任何 SQL Server 支援的複寫技術與 SQL Server 資料庫搭配使用，以實現高可用性、資料保護和災難復原。一些常見的解決方案包括日誌運送、資料庫鏡像、 Always On 可用性群組和 Always On 容錯移轉叢集執行個體。

下圖顯示如何在單一 AWS 區域中跨多個可用區域使用 Amazon EC2 上的 SQL Server。主要資料庫是讀寫資料庫，次要資料庫是以日誌運送、資料庫鏡像或 Always On 可用性群組進行設定，以提供高可用性。來自主要資料庫的所有交易資料都會傳輸，並且可以非同步方式套用至次要資料庫以進行日誌運送，以及非同步方式套用至 Always On 可用性群組和鏡像。

 ![\[SQL Server on Amazon EC2 in a Multi-AZ configuration in one AWS Region\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/migration-sql-server/images/sql-migration-ec2.png) 

# 日誌傳送
<a name="ec2-log-shipping"></a>

日誌運送可讓您自動將交易日誌備份從主要資料庫執行個體傳送至個別資料庫執行個體上的一或多個次要資料庫 （也稱為*暖待命*)。日誌運送使用 SQL Server Agent 任務來自動化備份、複製和套用交易日誌備份的程序。雖然日誌運送通常被視為災難復原功能，但它也可以在主要資料庫執行個體失敗時提升次要資料庫執行個體，以提供高可用性。如果您的 RTO 和 RPO 具有彈性，或者您的資料庫不被視為高度關鍵任務，請考慮使用日誌運送來為 SQL Server 資料庫提供更好的可用性。

日誌運送可視需要提供次要資料庫的存取權，以用作主要資料庫的唯讀副本，進而增加資料庫的可用性。您可以設定延遲延遲 （較長的延遲時間），在此期間，您可以在將這些變更運送到次要資料庫之前，復原主要資料庫上意外變更的資料。

我們建議在不同的可用區域中執行主要和次要資料庫執行個體，並部署監控執行個體以追蹤日誌運送的所有詳細資訊。可從監控執行個體取得日誌運送群組的備份、複製、還原和失敗事件。日誌運送組態不會自動從主要伺服器容錯移轉至次要伺服器。不過，如果主要資料庫無法使用，任何次要資料庫都可以手動上線。

日誌運送通常用作災難復原解決方案，但也可以用作高可用性解決方案，具體取決於您的應用程式需求。在下列情況下使用日誌運送：
+ 您有彈性的 RTO 和 RPO 需求。日誌運送提供 分鐘的 RPO，以及 分鐘到 小時的 RTO。
+ 您不需要自動容錯移轉至次要資料庫。
+ 您想要從次要資料庫讀取，但在還原操作期間不需要可讀性。

如需日誌運送的詳細資訊，請參閱 [Microsoft SQL Server 文件](https://docs.microsoft.com/en-us/sql/database-engine/log-shipping/about-log-shipping-sql-server)。

# 資料庫鏡像
<a name="ec2-db-mirroring"></a>

資料庫鏡像會取得 EC2 執行個體上的資料庫，並在個別資料庫執行個體上提供完整或幾乎完整的唯讀複本 （鏡像）。Amazon RDS 使用資料庫鏡像為 Amazon RDS for SQL Server 提供多可用區域支援。此功能可提高資料庫的可用性和保護，並提供在升級期間保持資料庫可用性的機制。

**注意**  
根據 [Microsoft 文件](https://docs.microsoft.com/en-us/sql/database-engine/database-mirroring/database-mirroring-sql-server)，資料庫鏡像將在 SQL Server 的未來版本中移除。您應該計劃改用 Always On 可用性群組。

在資料庫鏡像中，SQL 伺服器可以擔任以下三個角色之一：
+ 主體伺服器，託管資料庫的主要讀取/寫入版本。
+ 鏡像伺服器，託管委託人資料庫的副本。
+ 選用的見證伺服器。此伺服器僅適用於高安全模式。它會監控資料庫鏡像的狀態，並自動從主要資料庫容錯移轉到鏡像資料庫。

在委託人和鏡像伺服器之間建立鏡像工作階段。在鏡像期間，在主體資料庫中執行的所有資料庫變更也會在鏡像資料庫上執行。資料庫鏡像可以是同步或非同步操作。這取決於兩種鏡像操作模式：高安全模式和高效能模式。
+ **高安全模式：**此模式使用同步操作。在此模式中，資料庫鏡像工作階段會盡快將插入、更新和刪除操作從主體資料庫同步到鏡像資料庫。一旦資料庫同步，交易就會同時遞交到委託人和鏡像資料庫。當鏡像資料庫位於相同或不同的可用區域，但託管於相同 AWS 區域內時，我們建議您使用此操作模式。
+ **高效能模式：**此模式使用非同步操作。在此模式中，資料庫鏡像工作階段會將插入、更新和刪除操作從主體資料庫同步到鏡像資料庫，但主體資料庫遞交交易的時間與鏡像資料庫遞交交易的時間之間可能會有延遲。當鏡像資料庫位於不同 AWS 區域時，建議您使用此模式。

在下列情況下使用資料庫鏡像：
+ 您有嚴格的 RTO 和 RPO 需求，而且主要和次要資料庫之間不能有延遲。資料庫鏡像提供零秒的 RPO （具有同步遞交） 和 秒到 分鐘的 RTO。
+ 您不需要從次要資料庫讀取。
+ 當您在同步模式下設定見證伺服器時，您想要執行自動容錯移轉。
+ 您無法使用 Always On 可用性群組，這是偏好的選項。

限制:
+ 僅支援one-to-one容錯移轉。您無法讓多個資料庫目的地與主要資料庫同步。

如需鏡像的詳細資訊，請參閱 [Microsoft SQL Server 文件](https://docs.microsoft.com/en-us/sql/database-engine/database-mirroring/database-mirroring-sql-server)。

# Always On 可用性群組
<a name="ec2-always-on"></a>

SQL Server Always On 可用性群組為 SQL Server 資料庫提供高可用性和災難復原解決方案。可用性群組由一組一起容錯移轉的使用者資料庫組成。它包含一組主要讀取/寫入資料庫，以及多組 （一到八組） 相關的次要資料庫。您可以將次要資料庫做為主要資料庫的唯讀複本提供給應用程式層 （僅限 SQL Server Enterprise Edition)，以提供讀取工作負載的橫向擴展架構。您也可以使用次要資料庫進行備份操作。

SQL Server Always On 可用性群組支援同步和非同步遞交模式。在同步模式中，主要複本會在將變更遞交或寫入次要複本的日誌之後遞交資料庫交易。使用此模式，您可以在複本同步時執行計劃的手動容錯移轉和自動容錯移轉。您可以在相同環境中的 SQL Server 執行個體之間使用同步遞交模式 （例如，如果所有執行個體都在內部部署或所有執行個體都在） AWS。

在非同步遞交模式中，主要複本會遞交資料庫交易，而無需等待次要複本。您可以在位於不同環境中的 SQL Server 執行個體之間使用非同步遞交模式 （例如，如果您有現場部署和 中的執行個體 AWS)。

您可以使用 Always On 可用性群組來實現高可用性或災難復原。在下列情況下使用此方法：
+ 您有嚴格的 RTO 和 RPO 要求。Always On 可用性群組提供 秒的 RPO，以及 秒到 分鐘的 RTO。
+ 您想要管理和容錯移轉一組資料庫。Always On 可用性群組支援 SQL Server 2019 同步遞交模式中的 0-4 個次要複本。
+ 您想要在同步遞交模式下使用自動容錯移轉，而且不需要見證伺服器。
+ 您想要從次要資料庫讀取 。
+ 您想要將多個資料庫目的地與主要資料庫同步。

從 SQL Server 2016 SP1 開始，SQL Server Standard Edition 為每個可用性群組提供單一、不可讀取的次要資料庫和接聽程式的基本高可用性。它還支援每個可用性群組最多兩個節點。

# Always On 容錯移轉叢集執行個體
<a name="ec2-fci"></a>

SQL Server Always On 容錯移轉叢集執行個體 (FCIs) 使用 Windows Server 容錯移轉叢集 (WSFC) 在伺服器執行個體層級提供高可用性。FCI 是 SQL Server 的單一執行個體，可跨 WSFC 節點安裝，為整個 SQL Server 安裝提供高可用性。如果基礎節點遇到硬體、作業系統、應用程式或服務故障，SQL Server 執行個體中的所有內容都會移至另一個 WSFC 節點。這包括系統資料庫、SQL Server 登入、SQL Server Agent 任務和憑證。

在下列情況下，FCI 通常優於 Always On 可用性群組：
+ 您使用的是 SQL Server Standard Edition，而不是 Enterprise Edition。
+ 每個執行個體都有大量小型資料庫。
+ 您不斷修改執行個體層級物件，例如 SQL Server Agent 任務、登入等。

在 上部署 FCIs 有四個選項 AWS：
+ 具有持久性保留的 Amazon EBS Multi-Attach
+ Amazon FSx for Windows File Server
+ Amazon FSx for NetApp ONTAP
+  AWS 合作夥伴的解決方案

## 將 Amazon EBS Multi-Attach 與持久性保留搭配使用
<a name="fci-multi-attach"></a>

[Amazon EBS Multi-Attach with NVMe 保留](https://docs.aws.amazon.com/ebs/latest/userguide/nvme-reservations.html)支援使用 Amazon EBS `io2`磁碟區建立 SQL Server FCIs，做為 Windows Server 容錯移轉叢集上的共用儲存體。此功能可讓您使用 Amazon EBS `io2`磁碟區建置容錯移轉叢集，以簡化容錯移轉叢集設定程序。這些磁碟區只能連接到位於相同可用區域中的執行個體。若要使用 Amazon EBS `io2`磁碟區部署 Windows Server 容錯移轉叢集，您必須使用最新的 AWS NVMe 驅動程式。

Amazon EBS 磁碟區和執行個體儲存體會公開為 [Nitro 型執行個體](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#ec2-nitro-instances)上的 NVMe 區塊型儲存設備。當您使用 Amazon EBS `io2`磁碟區來形成 WSFC 和 SQL Server FCIs 時，您必須將 [AWS NVMe 驅動程式](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/aws-nvme-drivers.html)與 [SCSI 持久性保留功能](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/aws-nvme-drivers.html#configure-scsi-persistent-reservations)一起安裝。

如需此功能的詳細資訊，請參閱 AWS 部落格文章[如何在 Windows Server 上使用 Amazon EBS Multi-Attach 部署 SQL Server 容錯移轉叢集](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-deploy-a-sql-server-failover-cluster-with-amazon-ebs-multi-attach-on-windows-server/)。

## 使用 Amazon FSx for Windows File Server
<a name="fci-fsx-windows"></a>

[Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) 提供全受管的共用檔案儲存。它會自動跨兩個可用區域同步複寫儲存體，以提供高可用性。使用 FSx for Windows File Server 進行檔案儲存有助於簡化和最佳化 Amazon EC2 上的 SQL Server 高可用性部署。

使用 Microsoft SQL Server，高可用性通常部署在 WSFC 中的多個資料庫節點，而且每個節點都可以存取共用檔案儲存。您可以使用 FSx for Windows File Server 做為 SQL Server 高可用性部署的共用儲存體，方法有兩種：做為作用中資料檔案的儲存體，以及做為 SMB 檔案共用見證。

如需有關如何使用 FSx for Windows File Server 降低執行 SQL Server FCI 部署的複雜性和成本的資訊，請參閱部落格文章[使用 Amazon FSx for Windows File Server 簡化 Microsoft SQL Server 高可用性部署](https://aws.amazon.com/blogs/storage/simplify-your-microsoft-sql-server-high-availability-deployments-using-amazon-fsx-for-windows-file-server/)。部落格文章也提供step-by-step指示，說明如何使用 Amazon FSx 多可用區域檔案系統做為共用儲存解決方案來部署 SQL Server FCIs。如需詳細資訊，請參閱 [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) 文件。

## 使用 Amazon FSx for NetApp ONTAP
<a name="fci-fsx-ontap"></a>

Amazon FSx for NetApp ONTAP 是一項全受管服務，提供以 NetApp ONTAP 檔案系統建置的高度可靠、可擴展、高效能且功能豐富的檔案儲存。FSx for ONTAP 結合了 NetApp 檔案系統的熟悉功能、效能、功能和 API 操作，以及全受管 AWS 服務的靈活性、可擴展性和簡易性。

FSx for ONTAP 可透過適用於 Windows 和 Linux 系統的 NFS、SMB 和 iSCSI 通訊協定，提供資料的多重通訊協定存取權。您可以建置高可用性的 SQL Server Always On FCI 架構，如使用 [Amazon FSx for NetApp ONTAP 的 SQL Server 高可用性部署](https://aws.amazon.com/blogs/modernizing-with-aws/sql-server-high-availability-amazon-fsx-for-netapp-ontap/)部落格文章中詳細說明。FSx for ONTAP 也可以快速將 SQL Server 環境容錯移轉至不同的 ，以滿足復原時間目標 AWS 區域 (RTO) 和復原點目標 (RPO) 要求。如需詳細資訊，請參閱部落格文章：[使用 FSx for ONTAP 實作 SQL Server Always-On 容錯移轉叢集執行個體的 HA 和 DR](https://aws.amazon.com/blogs/storage/implementing-ha-and-dr-for-sql-server-always-on-failover-cluster-instance-using-amazon-fsx-for-netapp-ontap/)。

您也可以使用 AWS Launch Wizard 在 上部署 SQL Server 解決方案 AWS，並支援 Always On 可用性群組和單一節點部署。Launch Wizard 支援在 Amazon EC2 上使用 FSx for ONTAP 做為共用儲存體的 SQL Server Always on FCIs 部署。此服務使用引導式主控台型精靈取代複雜的手動部署程序，以加速依賴共用儲存的現場部署 SQL Server 工作負載遷移，從而節省時間和精力。如需 Launch Wizard 如何在數小時內協助您佈建和設定 SQL Server FCIs 的詳細資訊，請參閱部落格文章[使用 AWS Launch Wizard 和 Amazon FSx 簡化 SQL Server Always On 部署](https://aws.amazon.com/blogs/storage/simplify-sql-server-always-on-deployments-with-the-aws-launch-wizard-and-amazon-fsx/)。Launch Wizard 也使用 [Amazon FSx for Windows File Server](https://aws.amazon.com/fsx/windows/) 做為共用儲存解決方案，支援 SQL Server Always On FCIs的部署。

## 使用 AWS 合作夥伴的解決方案
<a name="fci-partners"></a>
+ [SIOS DataKeeper](https://us.sios.com/) 跨 AWS 區域 和可用區域提供高可用性叢集容錯移轉支援。SIOS DataKeeper 可在 中使用[AWS Marketplace](https://aws.amazon.com/marketplace/seller-profile?id=3c91e2f7-fc8d-4cce-a8aa-1e37abcb4408)。
+ 來自 DH2i 的 [DxEnterprise](https://dh2i.com/dxenterprise-high-availability/) 可完全自動容錯移轉 Kubernetes 中的 SQL Server 可用性群組，以及 Windows 和 Linux 的統一執行個體容錯移轉。D2HI 可在 中使用[AWS Marketplace](https://aws.amazon.com/marketplace/seller-profile?id=4e97d4b7-3366-42fd-8be8-732d38c9e24b)。

# FSx for Windows File Server
<a name="ec2-fsx"></a>

FSx for Windows File Server 提供全受管、高度可靠且可擴展的檔案儲存，可透過使用伺服器訊息區塊 (SMB) 通訊協定存取。它以 Windows Server 為基礎，並提供廣泛的管理功能，例如使用者配額、最終使用者檔案還原和 Microsoft Active Directory (AD) 整合。它提供單一可用區和多可用區部署選項、全受管備份，以及靜態和傳輸中資料的加密。您可以使用固態硬碟 (SSD) 和硬碟 (HDD) 儲存選項來最佳化工作負載的成本和效能，而且您可以隨時擴展儲存體並變更檔案系統的輸送量效能。Amazon FSx 檔案儲存可從 Windows、在 上執行的 Linux 運算執行個體 AWS和內部部署存取。

Amazon FSx 支援持續可用的 (CA) 檔案共用和較小的檔案系統，可讓您更輕鬆地部署共用 Windows 儲存體，以實現高可用性 SQL Server 部署。此選項適用於下列使用案例：
+ 做為 WSFC 執行個體中 SQL Server 節點使用的共用儲存體。
+ 作為 SMB 檔案共用見證，可與 WSFC 的任何 SQL Server 叢集搭配使用。

Amazon FSx 提供快速的效能，每個檔案系統的基準輸送量最高可達 2 GB/秒、數十萬個 IOPS，以及一致的低於毫秒延遲。

若要為 SQL 執行個體提供適當的效能，您可以選擇與檔案系統大小無關的輸送量層級。更高層級的輸送量容量也具有更高層級的 IOPS，檔案伺服器可以提供給存取它的 SQL Server 執行個體。

儲存容量不僅決定您可以儲存多少資料，也決定您可以在儲存上執行多少 IOPS。每個 GB 的儲存提供 3 IOPS。您可以佈建每個檔案系統的大小上限為 64 TB。

如需有關設定和使用 Amazon FSx 以降低 SQL Server 高可用性部署的複雜性和成本的資訊，請參閱 AWS 儲存部落格上的[使用 FSx for Windows File Server 簡化 Microsoft SQL Server 高可用性部署](https://aws.amazon.com/blogs/storage/simplify-your-microsoft-sql-server-high-availability-deployments-using-amazon-fsx-for-windows-file-server/)。若要進一步了解如何建立新的 CA 共享，請參閱 [FSx for Windows File Server 文件](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-file-shares.html#create-ca-share)。

# 災難復原
<a name="ec2-sql-dr"></a>

許多組織會實作 SQL Server 資料庫的高可用性，但對於需要真正 IT 彈性的組織來說，這還不夠。我們建議您實作災難復原解決方案，以避免關鍵任務資料庫的資料遺失和停機。為您的 SQL Server 部署採用多區域災難復原架構可協助您：
+ 實現業務連續性
+ 改善地理分佈客戶群的延遲 
+ 滿足您的稽核和法規要求

災難復原的選項包括[日誌運送](ec2-log-shipping.md)、 [Always On 可用性群組](ec2-always-on.md)、存放在 [Amazon S3 中並跨區域複寫的 Amazon EBS 快照](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-copy-snapshot.html)、與 Always On 可用性群組結合[的 Always On 容錯移轉叢集執行個體 (FCIs)](ec2-fci.md)，以及分散式可用性群組。 Amazon S3 AWS 

## 分散式可用性群組
<a name="ec2-distributed-groups"></a>

具有分散式可用性群組的架構是多區域 SQL Server 部署的最佳方法。分散式可用性群組是一種特殊類型的可用性群組，跨越兩個不同的可用性群組。您可以將其視為可用性群組的可用性群組。基礎可用性群組是在兩個不同的 WSFC 叢集上設定。

分散式可用性群組鬆散耦合，這表示它們不需要單一 WSFC 叢集，而且是由 SQL Server 維護。由於 WSFC 叢集是個別維護的，而且兩個可用群組之間的傳輸主要是非同步的，因此在另一個站點設定災難復原更容易。每個可用性群組中的主要複本會同步自己的次要複本。

分散式可用性群組目前僅支援手動容錯移轉。為了確保不會遺失任何資料，請停止全域主要資料庫 （即主要可用性群組的資料庫） 上的所有交易。然後將分散式可用性群組設定為同步遞交。