Azure SQL Database 時間點還原 (Point in Time Restore) 功能

感謝北科大劉建昌同學翻譯微軟公司 Azure SQL Database 團隊主管  Tony Petrossian 於 2014 年 10 月 1 日所發表的文章 https://azure.microsoft.com/blog/2014/10/01/azure-sql-database-point-in-time-restore/

本篇文章,將說明 Azure SQL Database 的時間點還原 ( Point in Time Restore ) 功能,這項功能在 Azure SQL Database 的 Basic、Standard、Premium 版皆有提供。在先前的文章中,Azure SQL Database 團隊已經介紹了 Azure SQL Database 多項新功能,其中也包含了時間點還原,您可以參考下列圖表。在這份圖表我們可以看到,時間點還原功能是使用最近的資料備份 ( backup ) 來還原受損或是遭到刪除的資料庫。

RTO ( Recovery Time Objective ) : 系統要在多少時間內回復正常

RPO ( Recovery Point Objective ) : 可忍受的資料遺失的時間長度

業務連續性與災害復原 ( BCDR, Business Continuity and Disaster Recovery ) 相關功能

Basic 版

Standard 版

Premium 版

即時還原

( Point in Time Restore )

還原至過去 7 天內的某時間點

還原過去 14 天內的某時間點

還原過去 35 天內的某時間點

異地還原

( Geo-Restore )

RTO<24小時

RPO<24小時

RTO<24小時

RPO<24小時

RTO<24小時

RPO<24小時

標準異地備援

( Standard Geo-Replication )

不支援

RTO<2小時

RPO<30分鐘

RTO<2小時

RPO<30分鐘

主動異地備援

( Active Geo-Replication )

不支援

不支援

RTO<1小時

RPO<5分鐘

 

何謂時間點還原 ( Point in Time Restore ) ?

Azure SQL Database 服務中的所有資料庫,皆會受到自動備份系統 ( automated backup system ) 保護。備份的保留期限會隨著訂閱的 Azure SQL Database 層級而有所不同,Premium 版為 35 天、Standard 版為 14 天、Basic 版為 7 天。

時間點還原為一個自助式服務 ( self-service ),允許客戶利用在保留期間所做的的備份來還原資料庫。在使用時間點還原功能時,會重新建立一個新的資料庫。

Azure SQL Database 資料庫備份採取自動備份,您不需要做設定而且也不會額外針對備份來作收費,您只需要在使用時間點還原功能時負擔額外的費用。還原時所建立的新資料庫,其收費標準跟平常的資料庫收費標準一樣。

總而言之,自動備份系統和時間點還原提供了零成本和零管理的方式來保護您的資料,無論任何原因損毀了資料庫,您都可以在保留期間內任一時間點中回復。

了解何謂自動備份 ( Automatic Backups )

所有的 Azure SQL Database 資料庫的  Basic、Standard、Premium  版都提供了自動備份的功能。Azure SQL Database 會每週做一次完整備份 ( full backups ),每天做一次差異備份 ( differential backup ) 以及每五分鐘進行交易記錄備份 ( log backups )。當資料庫被建立完成後即會開始第一次完整備份,這通常要花費 30 分鐘甚至更久的時間來完成備份。若該資料庫生來規模就很大 ( born big )  (例如 : 建立的資料庫為資料庫副本或是從大型資料庫還原所產生的資料庫 ),備份所需的時間會花費更久。在第一次備份完成之後,所有後續的備份會自動的由系統做安排,並且 "默默" 地在後端進行管理。

完整備份 ( full backups ) 和差異備份 ( differential backups ) 的確切執行之時間點,是由系統依據目前以系統負載量來做決定。而備份的檔案儲存在與目前資料庫相同的資料中心內。

當您還原一個資料庫時,還原所需的備份檔案將從本地備援處 ( local redundancy ) 來獲取。而每週和每日的最新備份也會複製到 Microsoft Azure 地理備援的配對資料中心 ( paired region ) 以便進行跨資料中心之災難回復。關於異地還原 ( Geo Restore ) 的敘述,在 Azure SQL Database 團隊之前發表的文章中有更詳細的敘述。

對使用中的資料庫 ( Live Database ) 作時間點還原

進入 Azure 管理入口網站,即可透過簡單的操作將各版本之 Azure SQL Database ( Basic、Standard、Premium ) 資料庫還原到任何的時間點 ( 但必需在備份的保留期限內 )。

您可以選擇在資料庫列表中選取需要還原的資料庫,或是進入該資料庫的儀表板內,並且點擊"還原"選項。

clip_image002

您將會被提示要輸入一個新的資料庫名稱,並且利用滑動元件來選取想要還原的時間點 ( 必需在保留期限內 ),同時也可以手動輸入最接近的時間點。完成之後按下確認鍵,資料庫便會開始還原到您所設定的時間點。

clip_image004

還原資料庫所需的時間由很多因素決定,包含 : 資料庫大小、選取時間點遠近、要還原到選取時間點資料庫需要重新架構的狀態數量等,通常一個龐大的資料庫,需要數個小時來還原。

還原的資料庫將會被建立在與原始資料庫相同的伺服器上,也因此我們需要重新賦予資料庫新的名稱。而還原資料庫的服務層級則是與還原時間點時資料庫設定的服務層級相同。

clip_image006

您需要確認您的資料庫有足夠的資料庫傳輸單位額度 ( DTU ),同時也要注意的是,還原時所建立的新資料庫,其服務層級可能會與目前資料庫的狀態不同。

一旦完成了還原動作,還原的資料庫收費標準與一般的資料庫是相同的。

您可以將還原資料庫來替換原本的資料庫,或是利用還原資料庫作為資料檢索,再去更新原始的資料庫。

若您還原資料庫的目的是用來取代現有的資料庫,您應該要驗證服務層級與效能層級是否合適,並且在需要時進行擴充。透過更改原始資料庫名稱,再將還原資料庫的名稱利用 T-SQL 指令  ALTER DATABASE 將名稱更改為原本資料庫的名稱,這樣就可以完全取代原本的資料庫了。

若您計畫從備援資料庫內讀取資料,您將需要分別編寫和執行您所需要回復資料相關之 Script。

clip_image008

雖然還原資料庫需要花費相當長的時間,但是在還原的過程時,還原資料庫就會顯示在資料庫列表上。您可以在還原的過程中刪除還原資料庫,此時將會取消還原的動作,您將不需要付出任何費用。

還原最近刪除的資料庫

您能夠將在其保留期限內不小心遭到刪除的資料庫還原到被刪除的時間點,或更早的時間點。

您可以使用 Azure 管理入口網站來還原被刪除的資料庫,首先需要在 Azure SQL Database 的資料庫列表中,選取"已刪除的資料庫"選項,將可以看到還在保留期限內遭到刪除的資料庫列表。

 

clip_image010

clip_image012

注意 : 若您重複使用太多次相同的資料庫名稱,則需要更加注意刪除的時間,這樣才不會還原到錯誤的資料庫。

就如同先前還原步驟一樣,您需要為還原資料庫新增一個名稱,而且您還原的資料庫也只能夠還原到與原始資料庫相同的伺服器上。比較特別的是,在這種情況下的還原步驟,只能夠選取固定的時間點作還原。還有一點要注意的是,當您刪除伺服器(Server)之後,您將無法復原先前存放在該伺服器的所有資料庫。

備份 (Backup ) / 還原 ( Restore ) vs. 複製 ( Copy ) / 匯出 ( Export ) / 匯入 ( Import )

時間點還原可以將資料損毀或是被刪除的資料庫重新復原。時間點還原並非使用先前 Azure SQL Database Web/Business 版資料庫運用複製為技術基礎,所實作出的匯出 ( Export ) / 自動匯出 ( automated export ) 方式 ( 此方式較為昂貴 ) 來回復資料庫。單單這一改進就證明了新版 Azure SQL Database 的優勢。

  • 新版的服務層備份和還原的費用相對的便宜 ( 就備份方面,如果沒有要增加額外的備份,是不需要收費的,而需要收取的費用則是用來確保您的資料庫副本匯出的一致性還有儲存BACPAC file )。
  • 零管理 ( Zreo Admin ) : 備份是由系統自動進行的,您只需要自行管理和安排匯出的排程。
  • 更好的 RPO : 您可以還原到特定的時間點,並且時間可以使用到比使用匯出匯入的方式更精細的刻度 ( 1分鐘 )。
  • 更好的 RTP: 從備份復原的速度比匯入的方式還要快。

 

注意 : 雖然在保存期限內,利用備份方式回復資料庫是相對便宜及快速的,而使用複製/匯出/匯入方式仍適用於更長期資料庫備份策略 ( long term archival )。

使用 APIs 還原資料庫

除了透過 Azure 管理入口網站來還原資料庫之外,您也可以使用 PowerShell ( Start-AzureSqlDatabaseRestore ) 和 SQL Database management API 來還原資料庫。

總結

自動備份與時間點還原(自助式服務)功能保護您的資料庫,讓其能夠從資料損毀以及刪除的狀態下回復,這種零成本和零管理的方法,不管是在哪一種服務層Basic、Standard、Premium)的資料庫都有提供。備份和還原功能在短期回復的需求下,性能較優於使用複製/匯入/匯出的方式,因此就短期資料庫回復而言,我們鼓勵���使用這種方式來做為您的商業連續性對策,而僅在需要長期歸檔或數據轉移時才使用匯出/匯入的方式。