本文介紹了通過複製和導出兩個操作,將 Azure SQL 資料庫中的內容轉移至其他位置(例如本地環境)的具體做法。藉此可以幫助用戶在 Azure 中運行資料庫的同時,在本地或指定的其他位置額外保留一個副本,滿足制度或業務等各方面的要求。 ...
嫌長不看版
本文介紹了通過複製和導出兩個操作,將 Azure SQL 資料庫中的內容轉移至其他位置(例如本地環境)的具體做法。藉此可以幫助用戶在 Azure 中運行資料庫的同時,在本地或指定的其他位置額外保留一個副本,滿足制度或業務等各方面的要求。
操作細節版
很多用戶向小編提出了這樣一個問題:已經在使用 Azure SQL 資料庫服務,雖然該服務有非常完善的數據備份和災備機制,但出於公司制度或其他方面的要求,需要定期將資料庫的完整內容下載到本地保存,哪怕手工操作也可以。
這當然是可以的,不過首先小編想再次向大家強調一下 Azure SQL 服務提供的各種數據保護機制:
-
Azure SQL 可在(基本、標準、高級三個服務級別的)資料庫層面提供 99.99% 的服務級別協議。
-
高級版提供主動地域複製功能,可在任何 Azure 區域創建多達 4 個可讀輔助副本,並控制在何時何處進行故障轉移。
-
通過自助式還原可更好地對“不利條件下的恢復”加以控制,客戶可以從可用數據備份副本控制數據還原的全過程。
-
在高級版中,SQL 資料庫最多可將備份副本保存 35 天,供您隨時進行恢復。
好了,明確這些問題後,看看到底該如何將 Azure SQL 中的數據保存到本地吧。
方法一:對 Azure SQL 資料庫進行複製
對於 Azure SQL 資料庫,我們可以用多種方式在相同或不同伺服器上創建現有 Azure SQL 資料庫的事務一致性副本。資料庫副本是源資料庫截至複製請求發出時的快照,我們可以選擇相同或不同伺服器、其服務層和性能級別、相同服務層中的不同性能級別(版本)。在完成複製後,副本將成為能夠完全行使功能的獨立資料庫。此時,可以將其升級或降級為任何版本。
我們可以根據具體需要,通過 Azure 門戶、PowerShell,或者 Transact-SQL 將 Azure SQL 資料庫複製到本地(或者其他位置)。
以 Azure 門戶下的操作為例,只需登錄 Azure 管理門戶,打開要複製的資料庫相應的配置界面,然後點擊工具欄上的「複製」,並選擇要複製到的目標伺服器,這就可以了。
當然也可以通過 PowerShell,使用 New-AzureRmSqlDatabaseCopy 這個 cmdlet 進行複製:
這個方法的進一步介紹,以及更多操作方式的具體做法,可以參閱:複製 Azure SQL 資料庫。
方法二:將 Azure SQL 資料庫導出為 BACPAC 文件
除了進行複製,也可以執行導出操作,獲得 Azure SQL 資料庫對應的 BACPAC 文件。這種方式更適合數據存檔或轉移至其他平臺等用途。
BACPAC 文件是一個擴展名為 BACPAC 的 ZIP 文件,它包含來自 SQL Server 資料庫的元數據和數據。我們可將 BACPAC 文件存儲在 Azure Blob 存儲或本地存儲中,之後可以導入回 Azure SQL 資料庫或 SQL Server 本地安裝。
使用該方法前有幾個問題需要註意:
-
為保證導出的事務處理方式一致,必須確保導出期間未發生寫入活動,或者正在從 Azure SQL 資料庫的事務處理方式一致性副本中導出。
-
如果是導出到 Blob 存儲,則 BACPAC 文件最大大小為 200GB。若要存檔更大的 BACPAC 文件,請導出到本地存儲。
-
不支持使用這個方法將 BACPAC 文件導出到 Azure 高級存儲。
-
如果從 Azure SQL 資料庫進行的導出操作超過 20 個小時,系統可能會取消該操作。
我們可以通過 Azure 門戶、SQL Package 實用程式、SQL Server Management Studio,以及 PowerShell將 Azure SQL 資料庫導出為 BACPAC 文件。
以 Azure 門戶下的操作為例,只需登錄 Azure 管理門戶,打開要導出的資料庫相應的配置界面,然後點擊工具欄上的「導出」,並選擇要導出到的存儲位置和其他選項即可。
此外也可以通過 PowerShell,使用 New-AzureRmSqlDatabaseEmport 這個 cmdlet 向 Azure SQL 資料庫服務提交導出資料庫請求。
這個方法的進一步介紹,以及更多操作方式的具體做法,可以參閱:將 Azure SQL 資料庫導出到 BACPAC文件。