從 Azure SQL Database 中的備份還原資料庫

適用於:Azure SQL 資料庫

本文提供步驟以從 Azure SQL Database 中的備份復原任何資料庫,包括超大規模資料庫。 針對 Azure SQL 受控執行個體,請參閱從 Azure SQL 受控執行個體中的備份還原資料庫

自動資料庫備份可在發生使用者和應用程式錯誤、意外刪除資料庫和長時間中斷時協助保護您的資料庫。 所有服務層級和計算大小都可以取得此內建功能。 下列選項可透過自動備份進行的資料庫復原使用:

  • 在相同的伺服器上建立新的資料庫,並復原到保留期間內的指定時間點。
  • 在相同的伺服器上建立資料庫,並復原到已刪除資料庫的刪除時間。
  • 在相同區域的任何伺服器上建立新的資料庫,並復原至最近備份的時間。
  • 在任何其他區域中的任何伺服器上建立新的資料庫,並復原到最新複寫的備份點。

如果您已設定長期保留 (LTR),則也可以從任何伺服器上的任何長期保留備份來建立新資料庫。

重要

  • 在還原期間,您無法覆寫現有的資料庫。
  • 資料庫還原作業不會還原原始資料庫的標記。

當您在 DTU 購買模型中使用標準或進階服務層級時,您的資料庫還原可能會產生額外的儲存成本。 已還原資料庫的大小上限大於目標資料庫的服務層級和服務目標所包含的儲存體數量時,會產生額外的成本。

如需有關額外儲存體的價格詳細資訊,請參閱 SQL Database 價格頁面。 如果實際的已使用空間量小於已包含的儲存體數量,您可以將資料庫大小上限設定為已包含的數量,以避免此額外成本。

復原時間

數個因素會影響透過自動資料庫備份來還原資料庫的復原時間:

  • 資料庫的大小
  • 資料庫的計算大小
  • 相關的交易記錄數目
  • 需要重新執行以復原到還原點的活動數目
  • 還原到不同區域的網路頻寬
  • 在目標區域中處理的並行還原要求數目

針對大型及/或頻繁使用的資料庫,還原可能需要數小時。 區域中的中斷延長可能會導致大量異地還原要求以進行災害復原。 當有許多要求時,則該區域中個別資料庫的復原時間可能會增加。 大多數資料庫還原都會在 12 小時內完成。

針對單一訂用帳戶,您對並行還原要求數目具有下列限制。 這些限制適用於時間點還原、異地還原和從長期保留備份還原的任何組合。

部署選項 正在處理的並行要求的最大數目 正在提交的並行要求的最大數目
單一資料庫 (每個訂閱) 30 100
彈性集區 (每個集區) 4 2,000

權限

若要使用自動備份進行復原,您必須是:

  • 包含邏輯伺服器之訂用帳戶或資源群組中參與者角色或 SQL Server 參與者角色的成員
  • 訂用帳戶或資源群組擁有者

如需詳細資訊,請參閱 Azure RBAC:內建角色

您可以使用 Azure 入口網站、PowerShell 或 REST API 來進行復原。 您無法使用 Transact-SQL。

時間點還原

您可以將任何資料庫還原至其保留期間內的較早時間點。 還原要求可以針對已還原的資料庫指定任何服務層級或計算大小。 當您將資料庫還原至彈性集區時,請確定集區中具有足夠的資源可容納資料庫。

還原完成時,會在與原始資料庫相同的伺服器上建立新資料庫。 還原的資料庫會根據其服務層級和計算大小依一般費率計費。 在完成資料庫還原之前,不會產生任何費用。

基於復原目的,您通常會將資料庫還原到較早的時間點。 您可以將還原的資料庫視為原始資料庫的替代品,或將其做為資料來源來更新原始資料庫。

重要

  • 您可以對相同伺服器執行資料庫時間點還原。 目前不支援跨伺服器、跨訂用帳戶和跨地理位置的時間點還原。 若要使用異地複寫備份將資料庫還原至不同的區域,請參閱異地還原
  • 您無法在異地次要資料庫上執行還原時間點。 您只能在主要資料庫上執行此動作。
  • 超大規模資料庫不支援 BackupFrequency 參數。
  • 資料庫還原作業需要大量資源,而且還原 (目標) 資料庫可能需要 S3 或更高的服務層級。 如有需要,還原完成之後,可能會縮小資料庫或彈性集區。
  • 資料庫取代

    如果您想要使用已還原的資料庫作為原始資料庫的取代項目,則應該指定原始資料庫的計算大小和服務層級。 您可以重新命名原始資料庫,然後使用 T-SQL 中的 ALTER DATABASE 命令提供原始名稱給還原的資料庫。

  • 資料復原

    如果您打算從已還原的資料庫中擷取資料,以從使用者或應用程式錯誤中復原,則需要撰寫並執行資料復原指令碼,以從已還原的資料庫中擷取資料並套用至原始資料庫。 雖然還原作業可能要花很長的時間才能完成,但還原中的資料庫在整個還原程序中都會顯示在資料庫清單上。

    如果您在還原期間刪除資料庫,則將會取消還原作業。 您不需要支付未完成還原的資料庫費用。

若要使用 Azure 入口網站來將資料庫復原至某個時間點,請開啟資料庫概觀頁面,然後選取工具列上的 [還原]。 選擇備份來源,然後選取將會建立新資料庫的時間點備份點。

SQL Database 的資料庫還原選項螢幕擷取畫面。

長期備份還原

若要在長期備份上執行還原作業,您可以使用 Azure 入口網站、Azure CLI、Azure PowerShell 或 REST API。 如需詳細資訊,請參閱還原長期備份

若要使用 Azure 入口網站來復原長期備份,請移至您的邏輯伺服器。 選取[資料管理] 下方的[備份],然後針對您嘗試還原的資料庫選取[可用的 LTR 備份] 下方的[管理]。

Azure 入口網站的螢幕擷取畫面:顯示可用的長期保留備份。

還原已刪除的資料庫

您可以使用 Azure 入口網站、Azure CLI、Azure PowerShell 和 REST API,將已刪除的資料庫還原到相同伺服器上的刪除時間或先前的時間點。

重要

如果您刪除伺服器,則其所有資料庫及其 PITR 備份也會一併刪除。 您無法還原已刪除的伺服器,而且無法從 PITR 備份還原已刪除的資料庫。 如果您已設定這些資料庫的 LTR 備份,您可以使用這些備份,將資料庫還原到不同的伺服器。

若要使用 Azure 入口網站將已刪除資料庫復原到刪除時間,請開啟伺服器的概觀頁面,然後選取 [已刪除的資料庫]。 選取您想要還原的已刪除資料庫,然後輸入新資料庫名稱,而此資料庫是使用從備份中所還原的資料所建立。

Azure 入口網站的螢幕擷取畫面:顯示如何還原已刪除資料庫。

提示

在 Azure 入口網站的 [已刪除的資料庫] 頁面上,或您想要透過程式設計方式顯示已刪除的資料庫時,最近刪除的資料庫可能需要幾分鐘的時間才會出現。

異地復原

您可以使用 Azure 入口網站、Azure CLI、Azure PowerShell 和 REST API,以使用異地還原來還原已刪除的資料庫。

重要

  • 異地還原僅適用於已設定異地備援備份儲存體的資料庫。 如果您目前未針對資料庫使用異地複寫備份,您可以設定備份儲存體備援來變更此備份。
  • 您只能在位於相同訂用帳戶的資料庫上執行異地還原。

異地還原會使用異地複寫備份作為來源。 您可以從最新的異地複寫備份中,在任何 Azure 區域的任何邏輯伺服器上還原資料庫。 即使中斷導致資料庫或整個區域無法存取,您仍然可以要求異地還原。

當您的資料庫因為裝載區域中的事件而無法使用時,異地還原是預設復原選項。 您可以將資料庫還原至任何其他區域中的伺服器。

在建立備份時以及對它進行異地複寫到不同區域中的 Azure Blob 之間會有延遲。 因此,還原後的資料庫可能落後原始資料庫最多一個小時。 下列圖解顯示從另一個區域中的上次可用備份來還原資料庫。

異地還原的圖例。

在 Azure 入口網站中,您可以建立新的單一資料庫,然後選取可用的異地還原備份。 新建立的資料庫包含異地還原備份資料。

若要從 Azure 入口網站在您選擇的區域和伺服器中,對單一資料庫進行異地還原,請遵循這些步驟:

  1. 從 [儀表板],選取 [新增]>[建立 SQL Database]。 在 [基本] 索引標籤上,輸入必要資訊。
  2. 選取 [其他設定]
  3. 針對 [使用現有的資料],請選取 [備份]。
  4. 請從可用異地還原備份清單中選取備份。

Azure 入口網站的螢幕擷取畫面:顯示資料庫的建立選項。

完成從備份建立資料庫的程序。 當您在 Azure SQL Database 中建立資料庫時,其會包含已還原的異地還原備份。

異地還原的考量

如需使用異地還原的詳細資訊,請參閱使用異地還原進行復原

注意

如需從中斷復原的詳細資訊,請參閱 Azure SQL Database 災害復原指導Azure SQL Database 高可用性和災害復原檢查清單

異地還原是 SQL Database 中可用的最基本災害復原解決方案。 其依賴自動建立的異地複寫備份,且復原點目標 (RPO) 最多 1 小時,以及最多 12 小時的預估復原時間目標 (RTO)。 其不保證在區域中斷之後,該目標區域將會擁有還原資料庫的容量,因為需求可能會明顯增加。 如果您的應用程式使用相對較小的資料庫,而且對企業而言並不重要,則異地還原是適當的災害復原解決方案。

對於需要大型資料庫且必須確保商務持續性的業務關鍵應用程式,請使用容錯移轉群組。 該功能提供較低的 RPO 和 RTO,而且一律保證容量。

如需商務持續性選項的詳細資訊,請參閱商務持續性概觀

注意

如果您打算使用異地還原作為災害復原解決方案,則建議您定期進行演練,以確認應用程式對任何最近資料修改遺失的容錯,以及復原程序的所有作業層面。

下一步