匯出 (0) 列印
全部展開

使用 Azure SQL Database 時的高可用性和災害復原考量

更新日期: 2014年4月

在移轉內部部署 SQL Server 資料庫至 Azure SQL Database (SQL Database) 時,常見問題是如何實作備份和還原策略,保護資料,防範使用者錯誤、應用程式錯誤、硬體故障、由於天然災害而資料中心關閉,以及其他資料庫災害。不同於內部部署,SQL Database 設計為遮罩實體資料庫檔案,防止資料庫管理員管理和作業。請注意,SQL Database 伺服器是定義資料庫群組的邏輯伺服器。與您的 SQL Database 伺服器相關聯的資料庫可能位於 Microsoft 資料中心內的不同實體電腦上。個別的邏輯資料庫可能與另一個邏輯資料庫共用單一實體資料庫的空間。在多租用戶 Azure 環境中,傳統的 SQL Server 備份與還原工具無法運作。

作者:Kun Cheng,Selcin Turkarslan
審稿者:Steve Howard,Adrian Bethune

每個 SQL Database 執行個體有三個位於三個不同實體電腦上的複本,一個主要複本和兩個次要複本。所有的讀取和寫入都是透過主要複本,而且任何變更都會非同步複寫到次要複本。

SQL Database 使用以仲裁為基礎的認可配置,必須在主要複本和其中一個次要複本完成寫入之後,交易才會被視為已認可。如果主要複本的硬體失敗,SQL Database 網狀架構就會偵測失敗並容錯移轉至其中一個次要複本。因此,資料中心至少有兩個實體交易一致的資料複本。每一個 Microsoft Azure SQL Database 執行個體的三個複本保護資料,防範個別伺服器、裝置或網路連接失敗。除了重複複本之外,Microsoft Azure SQL Database 網狀架構也維護資料中心所有資料庫特定數量的備份 (每隔五分鐘進行一次)。這些備份儲存在資料中心做為安全防護措施,避免同時或重大硬體與系統失敗。

SQL Database 環境設計為維護伺服器可用性,以及在硬體故障的情況下提供資料完整性。在容錯移轉事件期間,SQL Database 執行個體可能暫時無法存取。您的應用程式需要有處理這類容錯移轉事件的重試邏輯。但是,您可以使用相同的連接字串,在容錯移轉到次要複本之後重新建立連接。如需如何處理連接中斷錯誤的詳細資訊,請參閱 TechNet Wiki 中的<Azure SQL Database 資源管理>文件。

使用者或應用程式錯誤是在許多軟體應用程式中最常見的資料遺失或損毀狀況之一。使用者可能會錯誤地卸除資料表或應用程式,或提交交易兩次。這些類型的錯誤難以控制和還原。您可以使用下列服務和工具處理這類問題:

  • 自助還原服務 (適用於 Premium/Standard/Basic SKU)

  • 資料庫複製

  • SQL Database 匯入/匯出服務

  • Bcp 和 SQL Server Integration Services

自助還原。利用目前的 SQL Database 預覽,您可以將個別資料庫還原到特定時間範圍內的時間點。時間範圍可以是每日時間,最長 35 天。如需詳細資訊,請閱讀<Azure SQL Database 備份和還原>。

資料庫複製可讓您在相同伺服器中或在相同資料中心的不同伺服器中建立資料庫副本。這是線上、非同步和交易一致的作業。因為這是非同步作業,您可以發出複製命令,然後透過查詢 sys.dm_database_copies (SQL Database) 系統檢視表來監視進度。

若要複製 SQL Database 執行個體,您的登入必須是在目的地伺服器上伺服器層級 dbmanager 角色的成員,以及在來源伺服器上來源資料庫的 DBO。登入在來源和目的地 SQL Database 伺服器上必須擁有相同的登入名稱和密碼。您選擇要複製資料庫的頻率可能會因業務需求而異。為了從使用者或應用程式錯誤中復原,建議您建立每日複本,並且在全新複本完成之後每天卸除最舊的複本,藉以輪流維護兩三個執行中複本。

請注意,雖然我們建議使用每日複本,不過您也可以提高複製資料庫的頻率。建議執行資料庫複製作業的頻率不超過每小時一次。雖然每個資料庫複製程序都是與其他資料庫複製程序獨立執行,但在複製程序結束時都會產生交易一致的資料庫副本。每個副本計入每個 SQL Database 伺服器的 150 個資料庫限制,並當做個別的資料庫來計費。因此,太頻繁複製可能會耗盡您帳戶的可用資料庫,為幾乎完全相同的資料庫副本不必要地付費。如需詳細資訊,請參閱 SQL Database MSDN Library 中的<作法:複製您的資料庫>主題。

除了資料庫複製以外,您也可以使用 SQL Database Import/Export Service。此服務可讓您在具有 .bacpac 副檔名的單一封裝中匯入或匯出資料和結構描述。此封裝是壓縮格式,包含所有 SQL Database 相容物件,如資料表、檢視表、索引、條件約束、觸發程序、預存程序、登入、使用者等等。此服務可以直接在 SQL Database 執行個體與 Azure Blob 儲存體之間匯入或匯出 BACPAC 檔案。您可以透過 Azure 管理入口網站來存取匯入/匯出服務。如果您想要直接在內部部署 SQL Server 與 SQL Database 之間匯入或匯出,而不使用 Azure Blob 儲存體,請使用 Microsoft.SqlServer.Dac 命名空間中提供的類別

不同於資料庫複製,匯入/匯出服務不會產生交易一致的備份。若要建立備份,我們建議您在匯出資料和結構描述之前鎖定資料庫並且停止交易;或者使用資料庫複製,先建立交易一致的複本,並且從該複本匯出。如需匯入/匯出的詳細資訊,請參閱<如何:匯入和匯出資料庫

Bulk copy utility (BCP.exe)SQL Server Integration Services (SSIS)System.Data.SqlClient.SqlBulkCopy 也類似於Import/Export Service。目前 SQL Database 支援 BCP、大量複製應用程式開發介面和 SSIS 移動資料。您必須先在 SQL Database 中建立結構描述物件,然後載入資料。使用 BCP 或 SSIS 做為大量複製機制,可讓您控制從資料庫中移動哪些物件,以及從這些物件移動哪些資料。您也可以指定不同參數如批次大小、封包大小和資料流數目,根據網路頻寬和延遲達到最佳的輸送量。

為了有效防範發生災害時任何資料中心耗損的情況,您必須在部署資料庫應用程式的資料中心外部建立資料庫備份的異地儲存體。若要達到此目的,我們建議您使用:

  • Premium 和 Standard SKU 的地理複寫。

  • 還原至 Basic SKU 的替代 Azure 區域。

  • 適用於 Web 或 Business SKU 的資料庫複製及 SQL Database 匯入/匯出服務 (上一節的說明)。

如需地理複寫的詳細資訊,請參閱<Azure SQL Database 的作用中地理複寫>。若為 Azure 資料庫的 Web 和 Business Edition,我們建議您使用下列建議的工具來管理整體備份和還原策略:

  • 透過下列工具,實作備份和還原策略來處理使用者和應用程式錯誤:

    • 資料庫複製

    • SQL Database 匯入/匯出服務

    • Bcp 或 SQL Server Integration Services

  • 透過下列工具,實作進階備份和還原策略來處理資料中心設備的廣泛耗損:

    • 匯入/匯出服務,移轉資料庫副本到一個或多個次要資料中心,以及 (選擇性) 在您的內部部署 SQL Server 內移轉資料。

如需有關 Microsoft Azure 備份、還原和災害復原選項的詳細資訊,請閱讀 MSDN Library 中的 Azure SQL Database 的業務續航力Microsoft Azure 業務續航力技術指引文件。

顯示:
© 2014 Microsoft